diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index f53769d1..d1937db1 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -6,5 +6,5 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - #- uses: ./.github/workflows/check - - uses: ./.github/workflows/integration + - uses: ./.github/workflows/check + #- uses: ./.github/workflows/integration diff --git a/act/model/workflow_test.go b/act/model/workflow_test.go index bb09d659..42a05ee2 100644 --- a/act/model/workflow_test.go +++ b/act/model/workflow_test.go @@ -4,7 +4,7 @@ import ( "strings" "testing" - "gotest.tools/assert" + "github.com/stretchr/testify/assert" ) func TestReadWorkflow_StringEvent(t *testing.T) { @@ -20,9 +20,10 @@ jobs: ` workflow, err := ReadWorkflow(strings.NewReader(yaml)) - assert.NilError(t, err, "read workflow should succeed") + assert.NoError(t, err, "read workflow should succeed") - assert.DeepEqual(t, workflow.On(), []string{"push"}) + assert.Len(t, workflow.On(), 1) + assert.Contains(t, workflow.On(), "push") } func TestReadWorkflow_ListEvent(t *testing.T) { @@ -38,9 +39,11 @@ jobs: ` workflow, err := ReadWorkflow(strings.NewReader(yaml)) - assert.NilError(t, err, "read workflow should succeed") + assert.NoError(t, err, "read workflow should succeed") - assert.DeepEqual(t, workflow.On(), []string{"push", "pull_request"}) + assert.Len(t, workflow.On(), 2) + assert.Contains(t, workflow.On(), "push") + assert.Contains(t, workflow.On(), "pull_request") } func TestReadWorkflow_MapEvent(t *testing.T) { @@ -62,7 +65,8 @@ jobs: ` workflow, err := ReadWorkflow(strings.NewReader(yaml)) - assert.NilError(t, err, "read workflow should succeed") - - assert.DeepEqual(t, workflow.On(), []string{"push", "pull_request"}) + assert.NoError(t, err, "read workflow should succeed") + assert.Len(t, workflow.On(), 2) + assert.Contains(t, workflow.On(), "push") + assert.Contains(t, workflow.On(), "pull_request") } diff --git a/act/runner/command_test.go b/act/runner/command_test.go index 5e4c2d27..31b265a3 100644 --- a/act/runner/command_test.go +++ b/act/runner/command_test.go @@ -33,10 +33,10 @@ func TestAddpath(t *testing.T) { rc := new(RunContext) handler := rc.commandHandler(ctx) - handler("::add-path::/zoo") + handler("::add-path::/zoo\n") assert.Equal("/zoo:", rc.Env["PATH"]) - handler("::add-path::/booo") + handler("::add-path::/booo\n") assert.Equal("/booo:/zoo:", rc.Env["PATH"]) } diff --git a/act/runner/run_context.go b/act/runner/run_context.go index 0e9ca184..789fafea 100644 --- a/act/runner/run_context.go +++ b/act/runner/run_context.go @@ -128,7 +128,11 @@ func (rc *RunContext) runContainer(containerSpec *model.ContainerSpec) common.Ex rawLogger := common.Logger(ctx).WithField("raw_output", true) logWriter := common.NewLineWriter(rc.commandHandler(ctx), func(s string) { - rawLogger.Debugf(s) + if rc.Config.LogOutput { + rawLogger.Infof(s) + } else { + rawLogger.Debugf(s) + } }) return container.NewDockerRunExecutor(container.NewDockerRunExecutorInput{ diff --git a/act/runner/runner.go b/act/runner/runner.go index 5cde3f1c..a2b968b5 100644 --- a/act/runner/runner.go +++ b/act/runner/runner.go @@ -22,6 +22,7 @@ type Config struct { EventPath string // path to JSON file to use for event.json in containers ReuseContainers bool // reuse containers to maintain state ForcePull bool // force pulling of the image, if already present + LogOutput bool // log the output from docker run } type runnerImpl struct { diff --git a/act/runner/runner_test.go b/act/runner/runner_test.go index 49bcb472..af959854 100644 --- a/act/runner/runner_test.go +++ b/act/runner/runner_test.go @@ -37,18 +37,15 @@ func TestRunEvent(t *testing.T) { eventName string errorMessage string }{ + {"basic", "push", ""}, + {"fail", "push", "exit with `FAILURE`: 1"}, {"runs-on", "push", ""}, - /* - {"basic", "push", ""}, - {"fail", "push", "exit with `FAILURE`: 1"}, - {"runs-on", "push", ""}, - {"job-container", "push", ""}, - {"uses-docker-url", "push", ""}, - {"remote-action-docker", "push", ""}, - {"remote-action-js", "push", ""}, - {"local-action-docker-url", "push", ""}, - {"local-action-dockerfile", "push", ""}, - */ + {"job-container", "push", ""}, + {"uses-docker-url", "push", ""}, + {"remote-action-docker", "push", ""}, + {"remote-action-js", "push", ""}, + {"local-action-docker-url", "push", ""}, + {"local-action-dockerfile", "push", ""}, } log.SetLevel(log.DebugLevel) diff --git a/cmd/input.go b/cmd/input.go index 03661058..a2adcf75 100644 --- a/cmd/input.go +++ b/cmd/input.go @@ -13,6 +13,7 @@ type Input struct { reuseContainers bool dryrun bool forcePull bool + logOutput bool } func (i *Input) resolve(path string) string { diff --git a/cmd/root.go b/cmd/root.go index 06c42e45..39cc7f31 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -36,6 +36,7 @@ func Execute(ctx context.Context, version string) { rootCmd.PersistentFlags().StringVarP(&input.workflowsPath, "workflows", "W", "./.github/workflows/", "path to workflow files") rootCmd.PersistentFlags().StringVarP(&input.workdir, "directory", "C", ".", "working directory") rootCmd.PersistentFlags().BoolP("verbose", "v", false, "verbose output") + rootCmd.PersistentFlags().BoolVarP(&input.logOutput, "output", "o", false, "log output from steps") rootCmd.PersistentFlags().BoolVarP(&input.dryrun, "dryrun", "n", false, "dryrun mode") if err := rootCmd.Execute(); err != nil { os.Exit(1) @@ -94,6 +95,7 @@ func newRunCommand(ctx context.Context, input *Input) func(*cobra.Command, []str ForcePull: input.forcePull, ReuseContainers: input.reuseContainers, Workdir: input.Workdir(), + LogOutput: input.logOutput, } runner, err := runner.New(config) if err != nil {