1
0
mirror of https://github.com/go-task/task.git synced 2025-03-17 21:08:01 +02:00

fix: evaluate requires before compiled task (#1962)

This commit is contained in:
Valentin Maerten 2024-12-30 10:15:17 +01:00 committed by GitHub
parent d1f18d36b8
commit d64df3f9d7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 4 deletions

View File

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

View File

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

View File

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