Allow passed in env vars to supersede ones declared in the workflow (#1100)
* don't merge env var if it exists already * remove test workflow * add some tests * change mergeMaps order instead of checking for existence Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
parent
c27e079407
commit
9dc17f9144
2 changed files with 52 additions and 1 deletions
pkg/runner
|
@ -75,7 +75,7 @@ func (rc *RunContext) String() string {
|
||||||
// GetEnv returns the env for the context
|
// GetEnv returns the env for the context
|
||||||
func (rc *RunContext) GetEnv() map[string]string {
|
func (rc *RunContext) GetEnv() map[string]string {
|
||||||
if rc.Env == nil {
|
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"
|
rc.Env["ACT"] = "true"
|
||||||
return rc.Env
|
return rc.Env
|
||||||
|
|
|
@ -485,3 +485,54 @@ if: always()`, ""),
|
||||||
rc.Run.JobID = "job2"
|
rc.Run.JobID = "job2"
|
||||||
assertObject.True(rc.isEnabled(context.Background()))
|
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])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue