From 401345bde72780dbeaf968f36cadedd502dd7d76 Mon Sep 17 00:00:00 2001 From: Timothy Rule <34501912+trulede@users.noreply.github.com> Date: Sat, 17 Jan 2026 13:23:03 +0100 Subject: [PATCH 1/2] Call ReplaceVars() to resolve Ref's for imported global vars. --- compiler.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compiler.go b/compiler.go index 311fd58423..c0679c2cbf 100644 --- a/compiler.go +++ b/compiler.go @@ -114,6 +114,9 @@ func (c *Compiler) getVariables(t *ast.Task, call *Call, evaluateShVars bool) (* return nil, err } } + // Resolve any outstanding 'Ref' values in global vars (esp. globals from imported Taskfiles). + c.TaskfileVars = templater.ReplaceVars(c.TaskfileVars, &templater.Cache{Vars: result}) + if t != nil { for k, v := range t.IncludeVars.All() { if err := rangeFunc(k, v); err != nil { From 8e5c1ecc85e570bebcfb2eedccf990a64a40df03 Mon Sep 17 00:00:00 2001 From: Timothy Rule <34501912+trulede@users.noreply.github.com> Date: Sat, 17 Jan 2026 14:12:25 +0100 Subject: [PATCH 2/2] Add test coverage. --- executor_test.go | 4 ++++ testdata/var_references/Taskfile.yml | 14 ++++++++++++++ ...using_templating_resolver_and_global_var.golden | 3 +++ 3 files changed, 21 insertions(+) create mode 100644 testdata/var_references/testdata/TestReference-reference_using_templating_resolver_and_global_var.golden diff --git a/executor_test.go b/executor_test.go index 8649ebdce3..c43c4a2e18 100644 --- a/executor_test.go +++ b/executor_test.go @@ -905,6 +905,10 @@ func TestReference(t *testing.T) { name: "reference using templating resolver and dynamic var", call: "ref-resolver-sh", }, + { + name: "reference using templating resolver and global var", + call: "ref-global", + }, } for _, test := range tests { diff --git a/testdata/var_references/Taskfile.yml b/testdata/var_references/Taskfile.yml index 71621f2908..e6f9da4948 100644 --- a/testdata/var_references/Taskfile.yml +++ b/testdata/var_references/Taskfile.yml @@ -2,6 +2,9 @@ version: '3' vars: GLOBAL_VAR: [1, 2, 2, 2, 3, 3, 4, 5] + GLOBAL_FOO: + ref: .GLOBAL_BAR + GLOBAL_BAR: bar tasks: default: @@ -9,6 +12,7 @@ tasks: - task: ref-dep - task: ref-resolver - task: ref-resolver-sh + - task: ref-global ref-cmd: vars: @@ -72,3 +76,13 @@ tasks: {{- else}} and {{$child.name -}} {{- end -}} {{- end -}}" + + ref-global: + vars: + TASK_FUBAR: + ref: .GLOBAL_FOO + cmds: + - echo "GLOBAL_FOO={{.GLOBAL_FOO}}" + - echo "GLOBAL_BAR={{.GLOBAL_BAR}}" + - echo "TASK_FUBAR={{.TASK_FUBAR}}" + silent: true diff --git a/testdata/var_references/testdata/TestReference-reference_using_templating_resolver_and_global_var.golden b/testdata/var_references/testdata/TestReference-reference_using_templating_resolver_and_global_var.golden new file mode 100644 index 0000000000..320ea634db --- /dev/null +++ b/testdata/var_references/testdata/TestReference-reference_using_templating_resolver_and_global_var.golden @@ -0,0 +1,3 @@ +GLOBAL_FOO=bar +GLOBAL_BAR=bar +TASK_FUBAR=bar