diff --git a/internal/lang/funcs/filesystem.go b/internal/lang/funcs/filesystem.go index 276dd12ce40a..07a978618fe5 100644 --- a/internal/lang/funcs/filesystem.go +++ b/internal/lang/funcs/filesystem.go @@ -126,10 +126,11 @@ func MakeTemplateFileFunc(baseDir string, funcsCb func() (funcs map[string]funct if err != nil { return cty.DynamicPseudoType, err } + vars, _ := args[1].UnmarkDeep() // This is safe even if args[1] contains unknowns because the HCL // template renderer itself knows how to short-circuit those. - val, err := renderTmpl(expr, args[1]) + val, err := renderTmpl(expr, vars) return val.Type(), err }, Impl: func(args []cty.Value, retType cty.Type) (cty.Value, error) { diff --git a/internal/lang/funcs/filesystem_test.go b/internal/lang/funcs/filesystem_test.go index 35d39c9036e8..51b49abb11de 100644 --- a/internal/lang/funcs/filesystem_test.go +++ b/internal/lang/funcs/filesystem_test.go @@ -211,9 +211,9 @@ func TestTemplateFile(t *testing.T) { cty.StringVal("a"), cty.StringVal("b").Mark("var"), cty.StringVal("c"), - }), + }).Mark("vars"), }), - cty.StringVal("- a\n- b\n- c\n").Mark("path").Mark("var"), + cty.StringVal("- a\n- b\n- c\n").Mark("path").Mark("var").Mark("vars"), ``, }, {