4
0
Эх сурвалжийг харах

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

jamesread 4 жил өмнө
parent
commit
17c1804129

+ 1 - 1
internal/executor/executor.go

@@ -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 {

+ 86 - 0
internal/executor/executor_test.go

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