|
|
|
@@ -269,128 +269,6 @@ func TestAggregateGlobs(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestLoadCommandFromArgs(t *testing.T) {
|
|
|
|
|
// Save original flags
|
|
|
|
|
origGitFlag := *GitFlag
|
|
|
|
|
origResetFlag := *ResetFlag
|
|
|
|
|
origLogLevel := *LogLevel
|
|
|
|
|
|
|
|
|
|
// Restore original flags after test
|
|
|
|
|
defer func() {
|
|
|
|
|
*GitFlag = origGitFlag
|
|
|
|
|
*ResetFlag = origResetFlag
|
|
|
|
|
*LogLevel = origLogLevel
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
// Test cases
|
|
|
|
|
tests := []struct {
|
|
|
|
|
name string
|
|
|
|
|
args []string
|
|
|
|
|
gitFlag bool
|
|
|
|
|
resetFlag bool
|
|
|
|
|
logLevel string
|
|
|
|
|
shouldError bool
|
|
|
|
|
}{
|
|
|
|
|
{
|
|
|
|
|
name: "Valid command",
|
|
|
|
|
args: []string{"pattern", "expr", "file1", "file2"},
|
|
|
|
|
gitFlag: false,
|
|
|
|
|
resetFlag: false,
|
|
|
|
|
logLevel: "INFO",
|
|
|
|
|
shouldError: false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "Not enough args",
|
|
|
|
|
args: []string{"pattern", "expr"},
|
|
|
|
|
gitFlag: false,
|
|
|
|
|
resetFlag: false,
|
|
|
|
|
logLevel: "INFO",
|
|
|
|
|
shouldError: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "With git flag",
|
|
|
|
|
args: []string{"pattern", "expr", "file1"},
|
|
|
|
|
gitFlag: true,
|
|
|
|
|
resetFlag: false,
|
|
|
|
|
logLevel: "INFO",
|
|
|
|
|
shouldError: false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "With reset flag (forces git flag)",
|
|
|
|
|
args: []string{"pattern", "expr", "file1"},
|
|
|
|
|
gitFlag: false,
|
|
|
|
|
resetFlag: true,
|
|
|
|
|
logLevel: "INFO",
|
|
|
|
|
shouldError: false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "With custom log level",
|
|
|
|
|
args: []string{"pattern", "expr", "file1"},
|
|
|
|
|
gitFlag: false,
|
|
|
|
|
resetFlag: false,
|
|
|
|
|
logLevel: "DEBUG",
|
|
|
|
|
shouldError: false,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
|
// Set flags for this test case
|
|
|
|
|
*GitFlag = tc.gitFlag
|
|
|
|
|
*ResetFlag = tc.resetFlag
|
|
|
|
|
*LogLevel = tc.logLevel
|
|
|
|
|
|
|
|
|
|
commands, err := LoadCommandFromArgs(tc.args)
|
|
|
|
|
|
|
|
|
|
if tc.shouldError {
|
|
|
|
|
if err == nil {
|
|
|
|
|
t.Errorf("Expected an error but got none")
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Errorf("Unexpected error: %v", err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(commands) != 1 {
|
|
|
|
|
t.Errorf("Expected 1 command, got %d", len(commands))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cmd := commands[0]
|
|
|
|
|
|
|
|
|
|
// Check command properties
|
|
|
|
|
if cmd.Regex != tc.args[0] {
|
|
|
|
|
t.Errorf("Expected pattern %q, got %q", tc.args[0], cmd.Regex)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if cmd.Lua != tc.args[1] {
|
|
|
|
|
t.Errorf("Expected LuaExpr %q, got %q", tc.args[1], cmd.Lua)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(cmd.Files) != len(tc.args)-2 {
|
|
|
|
|
t.Errorf("Expected %d files, got %d", len(tc.args)-2, len(cmd.Files))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// When reset is true, git should be true regardless of what was set
|
|
|
|
|
expectedGit := tc.gitFlag || tc.resetFlag
|
|
|
|
|
if cmd.Git != expectedGit {
|
|
|
|
|
t.Errorf("Expected Git flag %v, got %v", expectedGit, cmd.Git)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if cmd.Reset != tc.resetFlag {
|
|
|
|
|
t.Errorf("Expected Reset flag %v, got %v", tc.resetFlag, cmd.Reset)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if cmd.LogLevel != tc.logLevel {
|
|
|
|
|
t.Errorf("Expected LogLevel %q, got %q", tc.logLevel, cmd.LogLevel)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Successfully unmarshal valid YAML data into ModifyCommand slice
|
|
|
|
|
func TestLoadCommandsFromCookFileSuccess(t *testing.T) {
|
|
|
|
|
// Arrange
|
|
|
|
@@ -556,155 +434,6 @@ func TestLoadCommandsFromCookFileLegitExample(t *testing.T) {
|
|
|
|
|
assert.Equal(t, "crewlayabout", commands[0].Name)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Valid command with minimum 3 arguments returns a ModifyCommand slice with correct values
|
|
|
|
|
func TestLoadCommandFromArgsWithValidArguments(t *testing.T) {
|
|
|
|
|
// Setup
|
|
|
|
|
oldGitFlag := GitFlag
|
|
|
|
|
oldResetFlag := ResetFlag
|
|
|
|
|
oldLogLevel := LogLevel
|
|
|
|
|
|
|
|
|
|
gitValue := true
|
|
|
|
|
resetValue := false
|
|
|
|
|
logLevelValue := "info"
|
|
|
|
|
|
|
|
|
|
GitFlag = &gitValue
|
|
|
|
|
ResetFlag = &resetValue
|
|
|
|
|
LogLevel = &logLevelValue
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
GitFlag = oldGitFlag
|
|
|
|
|
ResetFlag = oldResetFlag
|
|
|
|
|
LogLevel = oldLogLevel
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
args := []string{"*.go", "return x", "file1.go", "file2.go"}
|
|
|
|
|
|
|
|
|
|
// Execute
|
|
|
|
|
commands, err := LoadCommandFromArgs(args)
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
assert.Len(t, commands, 1)
|
|
|
|
|
assert.Equal(t, "*.go", commands[0].Regex)
|
|
|
|
|
assert.Equal(t, "return x", commands[0].Lua)
|
|
|
|
|
assert.Equal(t, []string{"file1.go", "file2.go"}, commands[0].Files)
|
|
|
|
|
assert.Equal(t, true, commands[0].Git)
|
|
|
|
|
assert.Equal(t, false, commands[0].Reset)
|
|
|
|
|
assert.Equal(t, "info", commands[0].LogLevel)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Less than 3 arguments returns an error with appropriate message
|
|
|
|
|
func TestLoadCommandFromArgsWithInsufficientArguments(t *testing.T) {
|
|
|
|
|
// Setup
|
|
|
|
|
oldGitFlag := GitFlag
|
|
|
|
|
oldResetFlag := ResetFlag
|
|
|
|
|
oldLogLevel := LogLevel
|
|
|
|
|
|
|
|
|
|
gitValue := false
|
|
|
|
|
resetValue := false
|
|
|
|
|
logLevelValue := "info"
|
|
|
|
|
|
|
|
|
|
GitFlag = &gitValue
|
|
|
|
|
ResetFlag = &resetValue
|
|
|
|
|
LogLevel = &logLevelValue
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
GitFlag = oldGitFlag
|
|
|
|
|
ResetFlag = oldResetFlag
|
|
|
|
|
LogLevel = oldLogLevel
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
testCases := []struct {
|
|
|
|
|
name string
|
|
|
|
|
args []string
|
|
|
|
|
}{
|
|
|
|
|
{"empty args", []string{}},
|
|
|
|
|
{"one arg", []string{"*.go"}},
|
|
|
|
|
{"two args", []string{"*.go", "return x"}},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tc := range testCases {
|
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
|
// Execute
|
|
|
|
|
commands, err := LoadCommandFromArgs(tc.args)
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
assert.Error(t, err)
|
|
|
|
|
assert.Nil(t, commands)
|
|
|
|
|
assert.Contains(t, err.Error(), "at least 3 arguments are required")
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Pattern, Lua, and Files fields are correctly populated from args
|
|
|
|
|
func TestLoadCommandFromArgsPopulatesFieldsCorrectly(t *testing.T) {
|
|
|
|
|
// Setup
|
|
|
|
|
oldGitFlag := GitFlag
|
|
|
|
|
oldResetFlag := ResetFlag
|
|
|
|
|
oldLogLevel := LogLevel
|
|
|
|
|
|
|
|
|
|
gitValue := false
|
|
|
|
|
resetValue := false
|
|
|
|
|
logLevelValue := "debug"
|
|
|
|
|
|
|
|
|
|
GitFlag = &gitValue
|
|
|
|
|
ResetFlag = &resetValue
|
|
|
|
|
LogLevel = &logLevelValue
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
GitFlag = oldGitFlag
|
|
|
|
|
ResetFlag = oldResetFlag
|
|
|
|
|
LogLevel = oldLogLevel
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
args := []string{"*.txt", "print('Hello')", "file1.txt", "file2.txt"}
|
|
|
|
|
|
|
|
|
|
// Execute
|
|
|
|
|
commands, err := LoadCommandFromArgs(args)
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
assert.Len(t, commands, 1)
|
|
|
|
|
assert.Equal(t, "*.txt", commands[0].Regex)
|
|
|
|
|
assert.Equal(t, "print('Hello')", commands[0].Lua)
|
|
|
|
|
assert.Equal(t, []string{"file1.txt", "file2.txt"}, commands[0].Files)
|
|
|
|
|
assert.Equal(t, false, commands[0].Git)
|
|
|
|
|
assert.Equal(t, false, commands[0].Reset)
|
|
|
|
|
assert.Equal(t, "debug", commands[0].LogLevel)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Git flag is set to true when ResetFlag is true
|
|
|
|
|
func TestLoadCommandFromArgsSetsGitFlagWhenResetFlagIsTrue(t *testing.T) {
|
|
|
|
|
// Setup
|
|
|
|
|
oldGitFlag := GitFlag
|
|
|
|
|
oldResetFlag := ResetFlag
|
|
|
|
|
oldLogLevel := LogLevel
|
|
|
|
|
|
|
|
|
|
gitValue := false
|
|
|
|
|
resetValue := true
|
|
|
|
|
logLevelValue := "info"
|
|
|
|
|
|
|
|
|
|
GitFlag = &gitValue
|
|
|
|
|
ResetFlag = &resetValue
|
|
|
|
|
LogLevel = &logLevelValue
|
|
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
GitFlag = oldGitFlag
|
|
|
|
|
ResetFlag = oldResetFlag
|
|
|
|
|
LogLevel = oldLogLevel
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
args := []string{"*.go", "return x", "file1.go", "file2.go"}
|
|
|
|
|
|
|
|
|
|
// Execute
|
|
|
|
|
commands, err := LoadCommandFromArgs(args)
|
|
|
|
|
|
|
|
|
|
// Assert
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
assert.Len(t, commands, 1)
|
|
|
|
|
assert.Equal(t, true, commands[0].Git)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO: Figure out how to mock shit
|
|
|
|
|
// Can't be asked doing that right now...
|
|
|
|
|
// Successfully loads commands from multiple YAML files in the current directory
|
|
|
|
|