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  }