Skip to content

Commit

Permalink
bugfix: Issue #33 - argument names now allow a-zA-Z0-9_
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesread committed Apr 5, 2022
1 parent e05083e commit 17c1804
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 1 deletion.
2 changes: 1 addition & 1 deletion internal/executor/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ func parseActionArguments(rawShellCommand string, values map[string]string, acti
"cmd": rawShellCommand,
}).Infof("Before Parse Args")

r := regexp.MustCompile("{{ *?([a-z]+?) *?}}")
r := regexp.MustCompile("{{ *?([a-zA-Z0-9_]+?) *?}}")
matches := r.FindAllStringSubmatch(rawShellCommand, -1)

for _, match := range matches {
Expand Down
86 changes: 86 additions & 0 deletions internal/executor/executor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,89 @@ func TestExecNonExistant(t *testing.T) {
assert.Equal(t, int32(-1337), req.logEntry.ExitCode, "Log entry is set to an internal error code")
assert.Equal(t, "", req.logEntry.ActionIcon, "Log entry icon wasnt found")
}

func TestArgumentNameCamelCase(t *testing.T) {
a1 := config.Action{
Title: "Do some tickles",
Shell: "echo 'Tickling {{ personName }}'",
Arguments: []config.ActionArgument{
{
Name: "personName",
Type: "ascii",
},
},
}

values := map[string]string {
"personName": "Fred",
}

out, err := parseActionArguments(a1.Shell, values, &a1);

assert.Equal(t, "echo 'Tickling Fred'", out);
assert.Nil(t, err)
}

func TestArgumentNameSnakeCase(t *testing.T) {
a1 := config.Action{
Title: "Do some tickles",
Shell: "echo 'Tickling {{ person_name }}'",
Arguments: []config.ActionArgument{
{
Name: "person_name",
Type: "ascii",
},
},
}

values := map[string]string {
"person_name": "Fred",
}

out, err := parseActionArguments(a1.Shell, values, &a1);

assert.Equal(t, "echo 'Tickling Fred'", out);
assert.Nil(t, err)
}

func TestArgumentNameNumbers(t *testing.T) {
a1 := config.Action{
Title: "Do some tickles",
Shell: "echo 'Tickling {{ person1name }}'",
Arguments: []config.ActionArgument{
{
Name: "person1name",
Type: "ascii",
},
},
}

values := map[string]string {
"person1name": "Fred",
}

out, err := parseActionArguments(a1.Shell, values, &a1);

assert.Equal(t, "echo 'Tickling Fred'", out);
assert.Nil(t, err)
}

func TestArgumentNotProvided(t *testing.T) {
a1 := config.Action{
Title: "Do some tickles",
Shell: "echo 'Tickling {{ personName }}'",
Arguments: []config.ActionArgument{
{
Name: "person",
Type: "ascii",
},
},
}

values := map[string]string {}

out, err := parseActionArguments(a1.Shell, values, &a1);

assert.Equal(t, "", out);
assert.Equal(t, err.Error(), "Required arg not provided: personName")
}

0 comments on commit 17c1804

Please sign in to comment.