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  }