bugfix: Issue #33 - argument names now allow a-zA-Z0-9_

This commit is contained in:
jamesread
2022-04-05 22:58:00 +01:00
parent e05083ebeb
commit 17c1804129
2 changed files with 87 additions and 1 deletions

View File

@@ -220,7 +220,7 @@ func parseActionArguments(rawShellCommand string, values map[string]string, acti
"cmd": rawShellCommand, "cmd": rawShellCommand,
}).Infof("Before Parse Args") }).Infof("Before Parse Args")
r := regexp.MustCompile("{{ *?([a-z]+?) *?}}") r := regexp.MustCompile("{{ *?([a-zA-Z0-9_]+?) *?}}")
matches := r.FindAllStringSubmatch(rawShellCommand, -1) matches := r.FindAllStringSubmatch(rawShellCommand, -1)
for _, match := range matches { for _, match := range matches {

View File

@@ -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, 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") 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")
}