forked from
tangled.org/core
Monorepo for Tangled — https://tangled.org
1package engine
2
3import (
4 "reflect"
5 "testing"
6
7 "tangled.sh/tangled.sh/core/api/tangled"
8)
9
10func TestConstructEnvs(t *testing.T) {
11 tests := []struct {
12 name string
13 in []*tangled.Pipeline_Step_Environment_Elem
14 want EnvVars
15 }{
16 {
17 name: "empty input",
18 in: []*tangled.Pipeline_Step_Environment_Elem{},
19 want: EnvVars{},
20 },
21 {
22 name: "single env var",
23 in: []*tangled.Pipeline_Step_Environment_Elem{
24 {Key: "FOO", Value: "bar"},
25 },
26 want: EnvVars{"FOO=bar"},
27 },
28 {
29 name: "multiple env vars",
30 in: []*tangled.Pipeline_Step_Environment_Elem{
31 {Key: "FOO", Value: "bar"},
32 {Key: "BAZ", Value: "qux"},
33 },
34 want: EnvVars{"FOO=bar", "BAZ=qux"},
35 },
36 {
37 name: "nil entries are skipped",
38 in: []*tangled.Pipeline_Step_Environment_Elem{
39 nil,
40 {Key: "FOO", Value: "bar"},
41 },
42 want: EnvVars{"FOO=bar"},
43 },
44 }
45
46 for _, tt := range tests {
47 t.Run(tt.name, func(t *testing.T) {
48 got := ConstructEnvs(tt.in)
49
50 if got == nil {
51 got = EnvVars{}
52 }
53
54 if !reflect.DeepEqual(got, tt.want) {
55 t.Errorf("ConstructEnvs() = %v, want %v", got, tt.want)
56 }
57 })
58 }
59}
60
61func TestAddEnv(t *testing.T) {
62 ev := EnvVars{}
63 ev.AddEnv("FOO", "bar")
64 ev.AddEnv("BAZ", "qux")
65
66 want := EnvVars{"FOO=bar", "BAZ=qux"}
67 if !reflect.DeepEqual(ev, want) {
68 t.Errorf("AddEnv result = %v, want %v", ev, want)
69 }
70}