1
0
mirror of https://github.com/go-task/task.git synced 2025-06-23 00:38:19 +02:00

feat: option to ensure variable is within the list of values (#1827)

This commit is contained in:
Valentin Maerten
2024-10-18 18:16:57 +02:00
committed by GitHub
parent 9a7e79258c
commit a35910429c
9 changed files with 217 additions and 24 deletions

View File

@ -155,6 +155,39 @@ func TestVars(t *testing.T) {
tt.Run(t)
}
func TestRequires(t *testing.T) {
const dir = "testdata/requires"
var buff bytes.Buffer
e := &task.Executor{
Dir: dir,
Stdout: &buff,
Stderr: &buff,
}
require.NoError(t, e.Setup())
require.ErrorContains(t, e.Run(context.Background(), &ast.Call{Task: "missing-var"}), "task: Task \"missing-var\" cancelled because it is missing required variables: foo")
buff.Reset()
require.NoError(t, e.Setup())
vars := &ast.Vars{}
vars.Set("foo", ast.Var{Value: "bar"})
require.NoError(t, e.Run(context.Background(), &ast.Call{
Task: "missing-var",
Vars: vars,
}))
buff.Reset()
require.NoError(t, e.Setup())
require.ErrorContains(t, e.Run(context.Background(), &ast.Call{Task: "validation-var", Vars: vars}), "task: Task \"validation-var\" cancelled because it is missing required variables:\n - foo has an invalid value : 'bar' (allowed values : [one two])")
buff.Reset()
require.NoError(t, e.Setup())
vars.Set("foo", ast.Var{Value: "one"})
require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "validation-var", Vars: vars}))
buff.Reset()
}
func TestSpecialVars(t *testing.T) {
const dir = "testdata/special_vars"
const subdir = "testdata/special_vars/subdir"