blob: 4865382a32db93aa22af07332a1f995f8fb30683 [file] [log] [blame] [edit]
package utils
import (
"github.com/google/go-cmp/cmp"
"os"
"testing"
)
func TestSourceFile(t *testing.T) {
os.Setenv("Z", "12")
contents := `
W="a b c"
X=10
WEIRD_STRING='a"bc'
KERNEL_VERSION_REGEX='6\.1\.1.*'
echo some stdout message
Q[0]=3
echo some stderr message >&2
Q[1]=4
echo Y=12 # should be ignored since we don't read from stdout or stdenv when sourcing
export Y=11
`
env, err := SourceString(contents)
if err != nil {
t.Fatalf("%v", err)
}
expected := map[string]string{
"WEIRD_STRING": `a\"bc`,
"KERNEL_VERSION_REGEX": `6\\.1\\.1.*`,
"W": "a b c",
"X": "10",
"Y": "11",
"Z": "12",
"Q": `([0]="3" [1]="4")`,
}
actual := make(map[string]string)
for key := range expected {
actual[key] = env[key]
}
diff := cmp.Diff(expected, actual)
if len(diff) > 0 {
t.Fatalf("expected value did not equal actual\ndiff: %s", diff)
}
}
func TestArrayElements(t *testing.T) {
arrayString := `X=([0]="abc" [1]="def" [2]="gh\"i" [3]="6\\.1\\.1.*")`
elements := ArrayElements(arrayString)
expected := map[string]string{
"0": "abc",
"1": "def",
"2": `gh\"i`,
"3": `6\.1\.1.*`,
}
diff := cmp.Diff(expected, elements)
if len(diff) > 0 {
t.Fatalf("expected value did not equal actual\ndiff: %s", diff)
}
}