/
dotenv_test.go
98 lines (73 loc) · 2.26 KB
/
dotenv_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package dotnev
import (
"fmt"
"os"
"testing"
"github.com/stretchr/testify/assert"
)
func TestLoad(t *testing.T) {
err := Load("./testdata", "not-exist", ".env")
assert.Error(t, err)
assert.Equal(t, "", os.Getenv("DONT_ENV_TEST"))
err = Load("./testdata")
assert.NoError(t, err)
assert.Equal(t, "blog", os.Getenv("DONT_ENV_TEST"))
assert.Equal(t, "blog", Get("DONT_ENV_TEST"))
_ = os.Unsetenv("DONT_ENV_TEST") // clear
err = Load("./testdata", "error.ini")
assert.Error(t, err)
err = Load("./testdata", "invalid_key.ini")
assert.Error(t, err)
assert.Equal(t, "def-val", Get("NOT-EXIST", "def-val"))
ClearLoaded()
}
func TestLoadExists(t *testing.T) {
assert.Equal(t, "", os.Getenv("DONT_ENV_TEST"))
err := LoadExists("./testdata", "not-exist", ".env")
assert.NoError(t, err)
assert.Equal(t, "blog", os.Getenv("DONT_ENV_TEST"))
assert.Equal(t, "blog", Get("DONT_ENV_TEST"))
ClearLoaded()
}
func TestLoadFromMap(t *testing.T) {
assert.Equal(t, "", os.Getenv("DONT_ENV_TEST"))
err := LoadFromMap(map[string]string{
"DONT_ENV_TEST": "blog",
"dont_env_test1": "val1",
"dont_env_test2": "23",
})
assert.NoError(t, err)
envStr := fmt.Sprint(os.Environ())
assert.Contains(t, envStr, "DONT_ENV_TEST=blog")
assert.Contains(t, envStr, "DONT_ENV_TEST1=val1")
assert.Equal(t, "blog", Get("DONT_ENV_TEST"))
assert.Equal(t, "blog", os.Getenv("DONT_ENV_TEST"))
assert.Equal(t, "val1", Get("DONT_ENV_TEST1"))
assert.Equal(t, "val1", Get("dont_env_test1"))
assert.Equal(t, 23, Int("dont_env_test2"))
assert.Equal(t, 23, Int("DONT_ENV_TEST2"))
assert.Equal(t, 20, Int("DONT_ENV_TEST1", 20))
// check cache
assert.Contains(t, LoadedData(), "DONT_ENV_TEST2")
// clear
ClearLoaded()
assert.Equal(t, "", os.Getenv("DONT_ENV_TEST"))
assert.Equal(t, "", Get("DONT_ENV_TEST1"))
err = LoadFromMap(map[string]string{
"": "val",
})
assert.Error(t, err)
}
func TestDontUpperEnvKey(t *testing.T) {
assert.Equal(t, "", os.Getenv("DONT_ENV_TEST"))
DontUpperEnvKey()
err := LoadFromMap(map[string]string{
"dont_env_test": "val",
})
assert.Contains(t, fmt.Sprint(os.Environ()), "dont_env_test=val")
assert.NoError(t, err)
assert.Equal(t, "val", Get("dont_env_test"))
assert.Equal(t, "val", Get("DONT_ENV_TEST"))
UpperEnvKey = true // revert
ClearLoaded()
}