github.1485827954.workers.dev/nektos/act@v0.2.63/pkg/runner/step_docker_test.go (about) 1 package runner 2 3 import ( 4 "bytes" 5 "context" 6 "io" 7 "testing" 8 9 "github.com/nektos/act/pkg/container" 10 "github.com/nektos/act/pkg/model" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/mock" 13 ) 14 15 func TestStepDockerMain(t *testing.T) { 16 cm := &containerMock{} 17 18 var input *container.NewContainerInput 19 20 // mock the new container call 21 origContainerNewContainer := ContainerNewContainer 22 ContainerNewContainer = func(containerInput *container.NewContainerInput) container.ExecutionsEnvironment { 23 input = containerInput 24 return cm 25 } 26 defer (func() { 27 ContainerNewContainer = origContainerNewContainer 28 })() 29 30 ctx := context.Background() 31 32 sd := &stepDocker{ 33 RunContext: &RunContext{ 34 StepResults: map[string]*model.StepResult{}, 35 Config: &Config{}, 36 Run: &model.Run{ 37 JobID: "1", 38 Workflow: &model.Workflow{ 39 Jobs: map[string]*model.Job{ 40 "1": { 41 Defaults: model.Defaults{ 42 Run: model.RunDefaults{ 43 Shell: "bash", 44 }, 45 }, 46 }, 47 }, 48 }, 49 }, 50 JobContainer: cm, 51 }, 52 Step: &model.Step{ 53 ID: "1", 54 Uses: "docker://node:14", 55 WorkingDirectory: "workdir", 56 }, 57 } 58 sd.RunContext.ExprEval = sd.RunContext.NewExpressionEvaluator(ctx) 59 60 cm.On("Pull", false).Return(func(ctx context.Context) error { 61 return nil 62 }) 63 64 cm.On("Remove").Return(func(ctx context.Context) error { 65 return nil 66 }) 67 68 cm.On("Create", []string(nil), []string(nil)).Return(func(ctx context.Context) error { 69 return nil 70 }) 71 72 cm.On("Start", true).Return(func(ctx context.Context) error { 73 return nil 74 }) 75 76 cm.On("Close").Return(func(ctx context.Context) error { 77 return nil 78 }) 79 80 cm.On("Copy", "/var/run/act", mock.AnythingOfType("[]*container.FileEntry")).Return(func(ctx context.Context) error { 81 return nil 82 }) 83 84 cm.On("UpdateFromEnv", "/var/run/act/workflow/envs.txt", mock.AnythingOfType("*map[string]string")).Return(func(ctx context.Context) error { 85 return nil 86 }) 87 88 cm.On("UpdateFromEnv", "/var/run/act/workflow/statecmd.txt", mock.AnythingOfType("*map[string]string")).Return(func(ctx context.Context) error { 89 return nil 90 }) 91 92 cm.On("UpdateFromEnv", "/var/run/act/workflow/outputcmd.txt", mock.AnythingOfType("*map[string]string")).Return(func(ctx context.Context) error { 93 return nil 94 }) 95 96 cm.On("GetContainerArchive", ctx, "/var/run/act/workflow/pathcmd.txt").Return(io.NopCloser(&bytes.Buffer{}), nil) 97 98 err := sd.main()(ctx) 99 assert.Nil(t, err) 100 101 assert.Equal(t, "node:14", input.Image) 102 103 cm.AssertExpectations(t) 104 } 105 106 func TestStepDockerPrePost(t *testing.T) { 107 ctx := context.Background() 108 sd := &stepDocker{} 109 110 err := sd.pre()(ctx) 111 assert.Nil(t, err) 112 113 err = sd.post()(ctx) 114 assert.Nil(t, err) 115 }