diff --git a/pkg/runner/run_context.go b/pkg/runner/run_context.go index 8b1d3e1..e5caaf5 100644 --- a/pkg/runner/run_context.go +++ b/pkg/runner/run_context.go @@ -75,7 +75,7 @@ func (rc *RunContext) String() string { // GetEnv returns the env for the context func (rc *RunContext) GetEnv() map[string]string { if rc.Env == nil { - rc.Env = mergeMaps(rc.Config.Env, rc.Run.Workflow.Env, rc.Run.Job().Environment()) + rc.Env = mergeMaps(rc.Run.Workflow.Env, rc.Run.Job().Environment(), rc.Config.Env) } rc.Env["ACT"] = "true" return rc.Env diff --git a/pkg/runner/run_context_test.go b/pkg/runner/run_context_test.go index 730d8de..ca85930 100644 --- a/pkg/runner/run_context_test.go +++ b/pkg/runner/run_context_test.go @@ -485,3 +485,54 @@ if: always()`, ""), rc.Run.JobID = "job2" assertObject.True(rc.isEnabled(context.Background())) } + +func TestRunContextGetEnv(t *testing.T) { + tests := []struct { + description string + rc *RunContext + targetEnv string + want string + }{ + { + description: "Env from Config should overwrite", + rc: &RunContext{ + Config: &Config{ + Env: map[string]string{"OVERWRITTEN": "true"}, + }, + Run: &model.Run{ + Workflow: &model.Workflow{ + Jobs: map[string]*model.Job{"test": {Name: "test"}}, + Env: map[string]string{"OVERWRITTEN": "false"}, + }, + JobID: "test", + }, + }, + targetEnv: "OVERWRITTEN", + want: "true", + }, + { + description: "No overwrite occurs", + rc: &RunContext{ + Config: &Config{ + Env: map[string]string{"SOME_OTHER_VAR": "true"}, + }, + Run: &model.Run{ + Workflow: &model.Workflow{ + Jobs: map[string]*model.Job{"test": {Name: "test"}}, + Env: map[string]string{"OVERWRITTEN": "false"}, + }, + JobID: "test", + }, + }, + targetEnv: "OVERWRITTEN", + want: "false", + }, + } + + for _, test := range tests { + t.Run(test.description, func(t *testing.T) { + envMap := test.rc.GetEnv() + assert.EqualValues(t, test.want, envMap[test.targetEnv]) + }) + } +}