github.com/nektos/act@v0.2.63/pkg/runner/step_run_test.go (about) 1 package runner 2 3 import ( 4 "bytes" 5 "context" 6 "io" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/mock" 11 12 "github.com/nektos/act/pkg/container" 13 "github.com/nektos/act/pkg/model" 14 ) 15 16 func TestStepRun(t *testing.T) { 17 cm := &containerMock{} 18 fileEntry := &container.FileEntry{ 19 Name: "workflow/1.sh", 20 Mode: 0o755, 21 Body: "\ncmd\n", 22 } 23 24 sr := &stepRun{ 25 RunContext: &RunContext{ 26 StepResults: map[string]*model.StepResult{}, 27 ExprEval: &expressionEvaluator{}, 28 Config: &Config{}, 29 Run: &model.Run{ 30 JobID: "1", 31 Workflow: &model.Workflow{ 32 Jobs: map[string]*model.Job{ 33 "1": { 34 Defaults: model.Defaults{ 35 Run: model.RunDefaults{ 36 Shell: "bash", 37 }, 38 }, 39 }, 40 }, 41 }, 42 }, 43 JobContainer: cm, 44 }, 45 Step: &model.Step{ 46 ID: "1", 47 Run: "cmd", 48 WorkingDirectory: "workdir", 49 }, 50 } 51 52 cm.On("Copy", "/var/run/act", []*container.FileEntry{fileEntry}).Return(func(ctx context.Context) error { 53 return nil 54 }) 55 cm.On("Exec", []string{"bash", "--noprofile", "--norc", "-e", "-o", "pipefail", "/var/run/act/workflow/1.sh"}, mock.AnythingOfType("map[string]string"), "", "workdir").Return(func(ctx context.Context) error { 56 return nil 57 }) 58 59 cm.On("Copy", "/var/run/act", mock.AnythingOfType("[]*container.FileEntry")).Return(func(ctx context.Context) error { 60 return nil 61 }) 62 63 cm.On("UpdateFromEnv", "/var/run/act/workflow/envs.txt", mock.AnythingOfType("*map[string]string")).Return(func(ctx context.Context) error { 64 return nil 65 }) 66 67 cm.On("UpdateFromEnv", "/var/run/act/workflow/statecmd.txt", mock.AnythingOfType("*map[string]string")).Return(func(ctx context.Context) error { 68 return nil 69 }) 70 71 cm.On("UpdateFromEnv", "/var/run/act/workflow/outputcmd.txt", mock.AnythingOfType("*map[string]string")).Return(func(ctx context.Context) error { 72 return nil 73 }) 74 75 ctx := context.Background() 76 77 cm.On("GetContainerArchive", ctx, "/var/run/act/workflow/pathcmd.txt").Return(io.NopCloser(&bytes.Buffer{}), nil) 78 79 err := sr.main()(ctx) 80 assert.Nil(t, err) 81 82 cm.AssertExpectations(t) 83 } 84 85 func TestStepRunPrePost(t *testing.T) { 86 ctx := context.Background() 87 sr := &stepRun{} 88 89 err := sr.pre()(ctx) 90 assert.Nil(t, err) 91 92 err = sr.post()(ctx) 93 assert.Nil(t, err) 94 }