@@ -9,15 +9,16 @@ import (
9
9
)
10
10
11
11
func TestLoadingDefaults (t * testing.T ) {
12
+ defer cleanup (t )
12
13
err := LoadEnvs ("testdata" )
13
14
if assert .NoError (t , err ) {
14
15
assert .Equal (t , "defaultValue1" , os .Getenv ("ENVLOADER_TESTKEY1" ))
15
16
assert .Equal (t , "defaultValue2" , os .Getenv ("ENVLOADER_TESTKEY2" ))
16
17
}
17
- assert .NoError (t , cleanup ())
18
18
}
19
19
20
20
func TestOverwritingDefaultsWithCustomsSuccess (t * testing.T ) {
21
+ defer cleanup (t )
21
22
DefaultEnvFile = "production_missing.env"
22
23
StageEnv = "ENVLOADER_APP_ENV"
23
24
err := os .Setenv ("ENVLOADER_APP_ENV" , "teststage_success" )
@@ -28,10 +29,10 @@ func TestOverwritingDefaultsWithCustomsSuccess(t *testing.T) {
28
29
assert .Equal (t , "customValue2" , os .Getenv ("ENVLOADER_TESTKEY2" ))
29
30
assert .Equal (t , "customValue3" , os .Getenv ("ENVLOADER_TESTKEY3" ))
30
31
}
31
- assert .NoError (t , cleanup ())
32
32
}
33
33
34
34
func TestNotOverwritingExistingEnvs (t * testing.T ) {
35
+ defer cleanup (t )
35
36
err := os .Setenv ("ENVLOADER_TESTKEY1" , "outerValue1" )
36
37
assert .NoError (t , err )
37
38
err = os .Setenv ("ENVLOADER_TESTKEY2" , "outerValue2" )
@@ -48,10 +49,10 @@ func TestNotOverwritingExistingEnvs(t *testing.T) {
48
49
assert .Equal (t , "outerValue2" , os .Getenv ("ENVLOADER_TESTKEY2" ))
49
50
assert .Equal (t , "customValue3" , os .Getenv ("ENVLOADER_TESTKEY3" ))
50
51
}
51
- assert .NoError (t , cleanup ())
52
52
}
53
53
54
54
func TestOverwritingDefaultsWithCustomsFail (t * testing.T ) {
55
+ defer cleanup (t )
55
56
DefaultEnvFile = "production_missing.env"
56
57
StageEnv = "ENVLOADER_APP_ENV"
57
58
err := os .Setenv ("ENVLOADER_APP_ENV" , "teststage_fail" )
@@ -60,27 +61,35 @@ func TestOverwritingDefaultsWithCustomsFail(t *testing.T) {
60
61
if assert .Error (t , err ) {
61
62
assert .Equal (t , "environment variables missing: [ENVLOADER_TESTKEY3]" , err .Error ())
62
63
}
63
- assert .NoError (t , cleanup ())
64
+ }
65
+
66
+ func TestOverwriteEmptyDefaultWithEmptyValue (t * testing.T ) {
67
+ defer cleanup (t )
68
+ DefaultEnvFile = "production_missing.env"
69
+ StageEnv = "ENVLOADER_APP_ENV"
70
+ err := os .Setenv ("ENVLOADER_APP_ENV" , "empty_overwrite" )
71
+ assert .NoError (t , err )
72
+ err = LoadEnvs ("testdata" )
73
+ assert .NoError (t , err )
74
+ assert .Equal (t , "" , os .Getenv ("ENVLOADER_TESTKEY3" ))
64
75
}
65
76
66
77
func TestMissingEnvsAreDetected (t * testing.T ) {
78
+ defer cleanup (t )
79
+ DefaultEnvFile = "production_missing.env"
67
80
StageEnv = "ENVLOADER_APP_ENV"
68
81
err := os .Setenv ("ENVLOADER_APP_ENV" , "missing" )
69
82
assert .NoError (t , err )
70
83
err = LoadEnvs ("testdata" )
71
- assert .Equal (t , "environment variables missing: [ENVLOADER_TESTKEY4]" , err . Error () )
72
- assert .NoError (t , cleanup ())
84
+ assert .Error (t , err )
85
+ assert .Equal (t , "environment variables missing: [ENVLOADER_TESTKEY3]" , err . Error ())
73
86
}
74
87
75
- func cleanup () error {
88
+ func cleanup (t * testing. T ) {
76
89
for _ , line := range os .Environ () {
77
90
if strings .HasPrefix (line , "ENVLOADER" ) {
78
91
pair := strings .Split (line , "=" )
79
- err := os .Unsetenv (pair [0 ])
80
- if err != nil {
81
- return err
82
- }
92
+ assert .NoError (t , os .Unsetenv (pair [0 ]))
83
93
}
84
94
}
85
- return nil
86
95
}
0 commit comments