github.com/nektos/act@v0.2.83/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(_ 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(_ context.Context) error { 56 return nil 57 }) 58 59 cm.On("Copy", "/var/run/act", mock.AnythingOfType("[]*container.FileEntry")).Return(func(_ 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(_ 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(_ 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(_ context.Context) error { 72 return nil 73 }) 74 75 ctx := context.Background() 76 77 cm.On("GetContainerArchive", ctx, "/var/run/act/workflow/SUMMARY.md").Return(io.NopCloser(&bytes.Buffer{}), nil) 78 cm.On("GetContainerArchive", ctx, "/var/run/act/workflow/pathcmd.txt").Return(io.NopCloser(&bytes.Buffer{}), nil) 79 80 err := sr.main()(ctx) 81 assert.Nil(t, err) 82 83 cm.AssertExpectations(t) 84 } 85 86 func TestStepRunPrePost(t *testing.T) { 87 ctx := context.Background() 88 sr := &stepRun{} 89 90 err := sr.pre()(ctx) 91 assert.Nil(t, err) 92 93 err = sr.post()(ctx) 94 assert.Nil(t, err) 95 }