1 package xos_test
2
3 import (
4 "testing"
5
6 "oss.terrastruct.com/util-go/assert"
7 "oss.terrastruct.com/util-go/xos"
8 )
9
10 func TestEnv(t *testing.T) {
11 t.Parallel()
12
13 e := xos.NewEnv(nil)
14 assert.String(t, "", e.Getenv("NONE"))
15
16 e.Setenv("DEBUG", "MEOW")
17 e.Setenv("DEBUG2", "TWO")
18 e.Setenv("DEBUG3", "THREE")
19 e.Setenv("DEBUG4", "FOUR")
20
21 assert.StringJSON(t, `[
22 "DEBUG=MEOW",
23 "DEBUG2=TWO",
24 "DEBUG3=THREE",
25 "DEBUG4=FOUR"
26 ]`, e.Environ())
27
28 e.Setenv("DEBUG", "D2")
29 assert.StringJSON(t, `[
30 "DEBUG=D2",
31 "DEBUG2=TWO",
32 "DEBUG3=THREE",
33 "DEBUG4=FOUR"
34 ]`, e.Environ())
35 assert.String(t, "D2", e.Getenv("DEBUG"))
36 }
37
38 func TestBool(t *testing.T) {
39 t.Parallel()
40
41 env := xos.NewEnv(nil)
42
43 eb, err := env.Bool("MY_BOOL")
44 assert.Success(t, err)
45 assert.StringJSON(t, `null`, eb)
46
47 env.Setenv("MY_BOOL", "0")
48 eb, err = env.Bool("MY_BOOL")
49 assert.Success(t, err)
50 assert.StringJSON(t, `false`, eb)
51
52 env.Setenv("MY_BOOL", "1")
53 eb, err = env.Bool("MY_BOOL")
54 assert.Success(t, err)
55 assert.StringJSON(t, `true`, eb)
56
57 env.Setenv("MY_BOOL", "false")
58 eb, err = env.Bool("MY_BOOL")
59 assert.Success(t, err)
60 assert.StringJSON(t, `false`, eb)
61
62 env.Setenv("MY_BOOL", "true")
63 eb, err = env.Bool("MY_BOOL")
64 assert.Success(t, err)
65 assert.StringJSON(t, `true`, eb)
66
67 env.Setenv("MY_BOOL", "TRUE")
68 eb, err = env.Bool("MY_BOOL")
69 assert.Error(t, err)
70 assert.ErrorString(t, err, `$MY_BOOL must be 0, 1, false or true but got "TRUE"`)
71 }
72
View as plain text