diff --git a/act/model/workflow.go b/act/model/workflow.go index a8d167e2..7bec7666 100644 --- a/act/model/workflow.go +++ b/act/model/workflow.go @@ -749,7 +749,7 @@ func (w *Workflow) GetJobIDs() []string { } var OnDecodeNodeError = func(node yaml.Node, out interface{}, err error) { - log.Fatalf("Failed to decode node %v into %T: %v", node, out, err) + log.Errorf("Failed to decode node %v into %T: %v", node, out, err) } func decodeNode(node yaml.Node, out interface{}) bool { diff --git a/act/model/workflow_test.go b/act/model/workflow_test.go index 9f219ee7..d2539063 100644 --- a/act/model/workflow_test.go +++ b/act/model/workflow_test.go @@ -153,6 +153,25 @@ jobs: assert.Contains(t, workflow.On(), "pull_request") } +func TestReadWorkflow_DecodeNodeError(t *testing.T) { + yaml := ` +on: + push: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - run: echo + env: + foo: {{ a }} +` + + workflow, err := ReadWorkflow(strings.NewReader(yaml)) + assert.NoError(t, err, "read workflow should succeed") + assert.Nil(t, workflow.GetJob("test").Steps[0].GetEnv()) +} + func TestReadWorkflow_RunsOnLabels(t *testing.T) { yaml := ` name: local-action-docker-url