-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtemplar_test.go
146 lines (125 loc) · 4.43 KB
/
templar_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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package templar
import (
"fmt"
"os"
"testing"
)
var exampleDotEnvExpectation = `Hello Oedipus!
How do you like it in "/Users/runeimp/Dropbox/Profile/Home/dev/apps/templar"?
ENV_FILE_COMMENT == ''
ENV_FILE_VAR == 'The Bard'
CLI_ENV_VAR == 'Sound and fury'
CLI_VAR == 'As you like it'
boolean ==
one.two.three ==
numbers.two ==
all ==
words.all ==
POSIX ==
DEFAULT.global_ini ==
`
var dotEnvExpectation = `Hello Horatio!
How do you like it in "/Users/runeimp/Dropbox/Profile/Home/dev/apps/templar"?
ENV_FILE_COMMENT == ''
ENV_FILE_VAR == '.env Ninja!'
CLI_ENV_VAR == 'Sound and fury'
CLI_VAR == 'As you like it'
boolean ==
one.two.three ==
numbers.two ==
all ==
words.all ==
POSIX ==
DEFAULT.global_ini ==
`
var dotEnvAndINIExpectation = `Hello Hamlet!
How do you like it in "/Users/runeimp/Dropbox/Profile/Home/dev/apps/templar"?
ENV_FILE_COMMENT == ''
ENV_FILE_VAR == '.env Ninja!'
CLI_ENV_VAR == 'Sound and fury'
CLI_VAR == 'As you like it'
boolean ==
one.two.three ==
numbers.two == 2.1
all ==
words.all == your base are belong to us
POSIX == Awesome!
DEFAULT.global_ini == true
`
var dotEnvINIAndTOMLExpectation = `Hello Hamlet!
How do you like it in "/Users/runeimp/Dropbox/Profile/Home/dev/apps/templar"?
ENV_FILE_COMMENT == ''
ENV_FILE_VAR == '.env Ninja!'
CLI_ENV_VAR == 'Sound and fury'
CLI_VAR == 'As you like it'
boolean == false
one.two.three == 4
numbers.two == 2.1
all == your base are belong to us
words.all == your base are belong to us
POSIX == Awesome!
DEFAULT.global_ini == true
`
var dotEnvAndJSONExpectation = `Hello Horatio!
How do you like it in "/Users/runeimp/Dropbox/Profile/Home/dev/apps/templar"?
ENV_FILE_COMMENT == ''
ENV_FILE_VAR == '.env Ninja!'
CLI_ENV_VAR == 'Sound and fury'
CLI_VAR == 'As you like it'
boolean == false
one.two.three == 4
numbers.two ==
all == your base are belong to us
words.all ==
POSIX ==
DEFAULT.global_ini ==
`
var noDotEnvExpectation = `Hello runeimp!
How do you like it in "/Users/runeimp/Dropbox/Profile/Home/dev/apps/templar"?
ENV_FILE_COMMENT == ''
ENV_FILE_VAR == ''
CLI_ENV_VAR == 'Sound and fury'
CLI_VAR == 'As you like it'
boolean ==
one.two.three ==
numbers.two ==
all ==
words.all ==
POSIX ==
DEFAULT.global_ini ==
`
func TestTemplar(t *testing.T) {
tests := []struct {
name string
checkDotEnv bool
data []string
template string
want string
}{
{name: ".env", template: "example.tmpl", checkDotEnv: true, want: dotEnvExpectation},
{name: ".env and example.ini", template: "example.tmpl", checkDotEnv: true, data: []string{"example.ini"}, want: dotEnvAndINIExpectation},
{name: ".env and example.json", template: "example.tmpl", checkDotEnv: true, data: []string{"example.json"}, want: dotEnvAndJSONExpectation},
{name: ".env and example.toml", template: "example.tmpl", checkDotEnv: true, data: []string{"example.toml"}, want: dotEnvAndJSONExpectation},
{name: ".env and example.yaml", template: "example.tmpl", checkDotEnv: true, data: []string{"example.yaml"}, want: dotEnvAndJSONExpectation},
{name: ".env, example.ini, and example.toml", template: "example.tmpl", checkDotEnv: true, data: []string{"example.ini", "example.toml"}, want: dotEnvINIAndTOMLExpectation},
{name: "example.env", template: "example.tmpl", checkDotEnv: false, data: []string{"example.env"}, want: exampleDotEnvExpectation},
{name: "no.env", template: "example.tmpl", checkDotEnv: false, want: noDotEnvExpectation},
}
for _, tc := range tests {
debug := DebugWarn
Reinitialize(debug)
os.Setenv("CLI_ENV_VAR", "Sound and fury")
os.Setenv("CLI_VAR", "As you like it")
if len(tc.data) == 0 {
InitData(tc.checkDotEnv)
} else {
for _, file := range tc.data {
InitData(tc.checkDotEnv, file)
}
}
got, _ := Render(tc.template)
if tc.want != got {
t.Fatalf(fmt.Sprintf("%q:\n\texpected: %v\n\tgot: %v\n\t | tc.checkDotEnv = %t\n", tc.name, tc.want, got, tc.checkDotEnv))
}
}
}