Skip to content

Commit

Permalink
fix: evaluate requires before compiled task
Browse files Browse the repository at this point in the history
  • Loading branch information
vmaerten committed Dec 15, 2024
1 parent 36ff00e commit 08887e9
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 4 deletions.
8 changes: 4 additions & 4 deletions task.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,10 @@ func (e *Executor) RunTask(ctx context.Context, call *ast.Call) error {
return nil
}

if err := e.areTaskRequiredVarsSet(t, call); err != nil {
return err
}

t, err = e.CompiledTask(call)
if err != nil {
return err
Expand All @@ -202,10 +206,6 @@ func (e *Executor) RunTask(ctx context.Context, call *ast.Call) error {
return err
}

if err := e.areTaskRequiredVarsSet(t, call); err != nil {
return err
}

preCondMet, err := e.areTaskPreconditionsMet(ctx, t)
if err != nil {
return err
Expand Down
4 changes: 4 additions & 0 deletions task_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,10 @@ func TestRequires(t *testing.T) {
vars.Set("foo", ast.Var{Value: "one"})
require.NoError(t, e.Run(context.Background(), &ast.Call{Task: "validation-var", Vars: vars}))
buff.Reset()

require.NoError(t, e.Setup())
require.ErrorContains(t, e.Run(context.Background(), &ast.Call{Task: "require-before-compile"}), "task: Task \"require-before-compile\" cancelled because it is missing required variables: MY_VAR")
buff.Reset()
}

func TestSpecialVars(t *testing.T) {
Expand Down
9 changes: 9 additions & 0 deletions testdata/requires/Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,12 @@ tasks:
vars:
- name: foo
enum: ['one', 'two']


require-before-compile:
requires:
vars: [ MY_VAR ]
cmd: |
{{range .MY_VAR | splitList " " }}
echo {{.}}
{{end}}

0 comments on commit 08887e9

Please sign in to comment.