Skip to content

Commit 7169bf6

Browse files
authored
fix: interpolate vars in defer (#2173)
1 parent 84cd4df commit 7169bf6

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

task.go

+2
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,8 @@ func (e *Executor) runDeferred(t *ast.Task, call *Call, i int, deferredExitCode
297297
}
298298

299299
cmd.Cmd = templater.ReplaceWithExtra(cmd.Cmd, cache, extra)
300+
cmd.Task = templater.ReplaceWithExtra(cmd.Task, cache, extra)
301+
cmd.Vars = templater.ReplaceVarsWithExtra(cmd.Vars, cache, extra)
300302

301303
if err := e.runCommand(ctx, t, call, i); err != nil {
302304
e.Logger.VerboseErrf(logger.Yellow, "task: ignored error in deferred cmd: %s\n", err.Error())

task_test.go

+3
Original file line numberDiff line numberDiff line change
@@ -1809,6 +1809,9 @@ task-1 ran successfully
18091809
`)
18101810
require.Error(t, e.Run(context.Background(), &task.Call{Task: "task-2"}))
18111811
assert.Contains(t, buff.String(), expectedOutputOrder)
1812+
buff.Reset()
1813+
require.NoError(t, e.Run(context.Background(), &task.Call{Task: "parent"}))
1814+
assert.Contains(t, buff.String(), "child task deferred value-from-parent")
18121815
}
18131816

18141817
func TestExitCodeZero(t *testing.T) {

testdata/deferred/Taskfile.yml

+15
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,18 @@ tasks:
1212
- defer: echo 'failing' && exit 2
1313
- echo 'cmd ran'
1414
- exit 1
15+
16+
parent:
17+
vars:
18+
VAR1: "value-from-parent"
19+
cmds:
20+
- defer:
21+
task: child
22+
vars:
23+
VAR1: 'task deferred {{.VAR1}}'
24+
- task: child
25+
vars:
26+
VAR1: 'task immediate {{.VAR1}}'
27+
child:
28+
cmds:
29+
- cmd: echo "child {{.VAR1}}"

0 commit comments

Comments
 (0)