github.com/dnephin/dobi@v0.15.0/tasks/env/env_test.go (about) 1 package env 2 3 import ( 4 "testing" 5 6 "os" 7 8 "github.com/dnephin/dobi/config" 9 "github.com/dnephin/dobi/tasks/task" 10 "gotest.tools/v3/assert" 11 "gotest.tools/v3/env" 12 ) 13 14 func TestTask_Run(t *testing.T) { 15 var testcases = []struct { 16 doc string 17 expected bool 18 vars map[string]string 19 }{ 20 { 21 doc: "set from variables", 22 vars: map[string]string{ 23 "VAR_ONE": "override", 24 "VAR_TWO": "new", 25 }, 26 expected: true, 27 }, 28 { 29 doc: "no modifications", 30 vars: map[string]string{ 31 "VAR_ONE": "preset", 32 }, 33 }, 34 } 35 36 for _, tc := range testcases { 37 t.Run(tc.doc, func(t *testing.T) { 38 defer env.PatchAll(t, map[string]string{ 39 "VAR_ONE": "preset", 40 })() 41 42 envTask := newTask(task.NewName("foo", ""), &config.EnvConfig{ 43 Variables: toSlice(tc.vars), 44 }) 45 46 modified, err := envTask.Run(nil, false) 47 assert.NilError(t, err) 48 assert.Equal(t, modified, tc.expected) 49 50 for k, v := range tc.vars { 51 assert.Equal(t, os.Getenv(k), v) 52 } 53 }) 54 } 55 } 56 57 func toSlice(m map[string]string) []string { 58 p := []string{} 59 for k, v := range m { 60 p = append(p, k+"="+v) 61 } 62 return p 63 }