diff --git a/src/pkg/variables/variables.go b/src/pkg/variables/variables.go index 068a56e..939b117 100644 --- a/src/pkg/variables/variables.go +++ b/src/pkg/variables/variables.go @@ -34,6 +34,7 @@ func (vc *VariableConfig[T]) PopulateVariables(variables []InteractiveVariable[T // Variable is present, no need to continue checking if present { + vc.setVariableMap[variable.Name].Pattern = variable.Pattern vc.setVariableMap[variable.Name].Extra = variable.Extra if err := vc.CheckVariablePattern(variable.Name); err != nil { return err diff --git a/src/test/e2e/runner_test.go b/src/test/e2e/runner_test.go index e24acf8..0248f7a 100644 --- a/src/test/e2e/runner_test.go +++ b/src/test/e2e/runner_test.go @@ -394,4 +394,20 @@ func TestTaskRunner(t *testing.T) { require.NoError(t, err, stdOut, stdErr) require.Contains(t, stdErr, "\"input val2 equals 5 and variable VAL1 equals 5\"") }) + + t.Run("run successful pattern", func(t *testing.T) { + t.Parallel() + + stdOut, stdErr, err := e2e.Maru("run", "--file", "src/test/tasks/more-tasks/pattern.yaml", "--set", "HELLO=HELLO") + require.NoError(t, err, stdOut, stdErr) + require.Contains(t, stdErr, "HELLO") + }) + + t.Run("run unsuccessful pattern", func(t *testing.T) { + t.Parallel() + + stdOut, stdErr, err := e2e.Maru("run", "--file", "src/test/tasks/more-tasks/pattern.yaml", "--set", "HELLO=HI") + require.Error(t, err, stdOut, stdErr) + require.Contains(t, stdErr, "\"HELLO\" does not match pattern \"^HELLO$\"") + }) } diff --git a/src/test/tasks/more-tasks/pattern.yaml b/src/test/tasks/more-tasks/pattern.yaml new file mode 100644 index 0000000..f08de87 --- /dev/null +++ b/src/test/tasks/more-tasks/pattern.yaml @@ -0,0 +1,8 @@ +variables: + - name: HELLO + pattern: ^HELLO$ + +tasks: + - name: default + actions: + - cmd: echo ${HELLO}