github.com/nektos/act@v0.2.63/pkg/model/planner_test.go (about) 1 package model 2 3 import ( 4 "path/filepath" 5 "testing" 6 7 log "github.com/sirupsen/logrus" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 type WorkflowPlanTest struct { 12 workflowPath string 13 errorMessage string 14 noWorkflowRecurse bool 15 } 16 17 func TestPlanner(t *testing.T) { 18 log.SetLevel(log.DebugLevel) 19 20 tables := []WorkflowPlanTest{ 21 {"invalid-job-name/invalid-1.yml", "workflow is not valid. 'invalid-job-name-1': Job name 'invalid-JOB-Name-v1.2.3-docker_hub' is invalid. Names must start with a letter or '_' and contain only alphanumeric characters, '-', or '_'", false}, 22 {"invalid-job-name/invalid-2.yml", "workflow is not valid. 'invalid-job-name-2': Job name '1234invalid-JOB-Name-v123-docker_hub' is invalid. Names must start with a letter or '_' and contain only alphanumeric characters, '-', or '_'", false}, 23 {"invalid-job-name/valid-1.yml", "", false}, 24 {"invalid-job-name/valid-2.yml", "", false}, 25 {"empty-workflow", "unable to read workflow 'push.yml': file is empty: EOF", false}, 26 {"nested", "unable to read workflow 'fail.yml': file is empty: EOF", false}, 27 {"nested", "", true}, 28 } 29 30 workdir, err := filepath.Abs("testdata") 31 assert.NoError(t, err, workdir) 32 for _, table := range tables { 33 fullWorkflowPath := filepath.Join(workdir, table.workflowPath) 34 _, err = NewWorkflowPlanner(fullWorkflowPath, table.noWorkflowRecurse) 35 if table.errorMessage == "" { 36 assert.NoError(t, err, "WorkflowPlanner should exit without any error") 37 } else { 38 assert.EqualError(t, err, table.errorMessage) 39 } 40 } 41 } 42 43 func TestWorkflow(t *testing.T) { 44 log.SetLevel(log.DebugLevel) 45 46 workflow := Workflow{ 47 Jobs: map[string]*Job{ 48 "valid_job": { 49 Name: "valid_job", 50 }, 51 }, 52 } 53 54 // Check that a valid job id returns non-error 55 result, err := createStages(&workflow, "valid_job") 56 assert.Nil(t, err) 57 assert.NotNil(t, result) 58 }