diff --git a/internal/taskfile/merge.go b/internal/taskfile/merge.go index 19a4fec7..a0c71748 100644 --- a/internal/taskfile/merge.go +++ b/internal/taskfile/merge.go @@ -20,12 +20,24 @@ func Merge(t1, t2 *Taskfile, namespaces ...string) error { if t2.Output != "" { t1.Output = t2.Output } + + if t1.Includes == nil { + t1.Includes = make(map[string]string) + } for k, v := range t2.Includes { t1.Includes[k] = v } + + if t1.Vars == nil { + t1.Vars = make(Vars) + } for k, v := range t2.Vars { t1.Vars[k] = v } + + if t1.Tasks == nil { + t1.Tasks = make(Tasks) + } for k, v := range t2.Tasks { t1.Tasks[taskNameWithNamespace(k, namespaces...)] = v } diff --git a/task_test.go b/task_test.go index 31d0b2ea..7504d140 100644 --- a/task_test.go +++ b/task_test.go @@ -484,3 +484,15 @@ func TestIncludes(t *testing.T) { } tt.Run(t) } + +func TestIncludesEmptyMain(t *testing.T) { + tt := fileContentTest{ + Dir: "testdata/includes_empty", + Target: "included:default", + TrimSpace: true, + Files: map[string]string{ + "file.txt": "default", + }, + } + tt.Run(t) +} diff --git a/testdata/includes_empty/.gitignore b/testdata/includes_empty/.gitignore new file mode 100644 index 00000000..42d99559 --- /dev/null +++ b/testdata/includes_empty/.gitignore @@ -0,0 +1 @@ +file.txt diff --git a/testdata/includes_empty/Taskfile.yml b/testdata/includes_empty/Taskfile.yml new file mode 100644 index 00000000..2d24e533 --- /dev/null +++ b/testdata/includes_empty/Taskfile.yml @@ -0,0 +1,4 @@ +version: '2' + +includes: + included: Taskfile2.yml diff --git a/testdata/includes_empty/Taskfile2.yml b/testdata/includes_empty/Taskfile2.yml new file mode 100644 index 00000000..825285aa --- /dev/null +++ b/testdata/includes_empty/Taskfile2.yml @@ -0,0 +1,10 @@ +version: '2' + +vars: + FILE: file.txt + CONTENT: default + +tasks: + default: + cmds: + - echo "{{.CONTENT}}" > {{.FILE}}