github.com/dnephin/dobi@v0.15.0/tasks/tasks_test.go (about) 1 package tasks 2 3 import ( 4 "testing" 5 6 "github.com/dnephin/dobi/config" 7 "gotest.tools/v3/assert" 8 is "gotest.tools/v3/assert/cmp" 9 ) 10 11 func aliasWithDeps(deps []string) config.Resource { 12 return &config.AliasConfig{Tasks: deps} 13 } 14 15 func TestCollectTasksErrorsOnCyclicDependencies(t *testing.T) { 16 runOptions := RunOptions{ 17 Config: &config.Config{ 18 Resources: map[string]config.Resource{ 19 "one": aliasWithDeps([]string{"two"}), 20 "two": aliasWithDeps([]string{"three"}), 21 "three": aliasWithDeps([]string{"four", "one"}), 22 "four": aliasWithDeps([]string{"five"}), 23 "five": aliasWithDeps([]string{}), 24 }, 25 }, 26 Tasks: []string{"one"}, 27 } 28 tasks, err := collectTasks(runOptions) 29 assert.Check(t, is.Nil(tasks)) 30 assert.Check(t, is.ErrorContains(err, 31 "Invalid dependency cycle: one:run, two:run, three:run")) 32 } 33 34 func TestCollectTasksDoesNotErrorOnDuplicateTask(t *testing.T) { 35 runOptions := RunOptions{ 36 Config: &config.Config{ 37 Resources: map[string]config.Resource{ 38 "one": &config.ImageConfig{}, 39 "two": aliasWithDeps([]string{"one"}), 40 }, 41 }, 42 Tasks: []string{"one", "two"}, 43 } 44 tasks, err := collectTasks(runOptions) 45 assert.Check(t, is.Nil(err)) 46 assert.Check(t, is.Len(tasks.All(), 3)) 47 }