@@ -40,24 +40,14 @@ func TestAccCachedImageResource(t *testing.T) {
40
40
},
41
41
assertEnv : func (t * testing.T , deps testDependencies ) resource.TestCheckFunc {
42
42
return resource .ComposeAggregateTestCheckFunc (
43
- // Check that the environment variables are set correctly.
44
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.0" , fmt .Sprintf ("ENVBUILDER_CACHE_REPO=%s" , deps .CacheRepo )),
45
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.1" , fmt .Sprintf ("ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH=%s" , deps .Repo .Key )),
46
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.2" , fmt .Sprintf ("ENVBUILDER_GIT_URL=%s" , deps .Repo .URL )),
47
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.3" , "ENVBUILDER_REMOTE_REPO_BUILD_MODE=true" ),
48
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.4" , "ENVBUILDER_VERBOSE=true" ),
49
- // Check that the extra environment variables are set correctly.
50
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.5" , "FOO=bar\n baz" ),
51
- // We should not have any other environment variables set.
52
- resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "env.6" ),
53
-
54
- // Check that the same values are set in env_map.
55
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_CACHE_REPO" , deps .CacheRepo ),
56
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" , deps .Repo .Key ),
57
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_GIT_URL" , deps .Repo .URL ),
58
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_REMOTE_REPO_BUILD_MODE" , "true" ),
59
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_VERBOSE" , "true" ),
60
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.FOO" , "bar\n baz" ),
43
+ assertEnv (t ,
44
+ "ENVBUILDER_CACHE_REPO" , deps .CacheRepo ,
45
+ "ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" , deps .Repo .Key ,
46
+ "ENVBUILDER_GIT_URL" , deps .Repo .URL ,
47
+ "ENVBUILDER_REMOTE_REPO_BUILD_MODE" , "true" ,
48
+ "ENVBUILDER_VERBOSE" , "true" ,
49
+ "FOO" , "bar\n baz" ,
50
+ ),
61
51
)
62
52
},
63
53
},
@@ -78,24 +68,14 @@ RUN date > /date.txt`,
78
68
},
79
69
assertEnv : func (t * testing.T , deps testDependencies ) resource.TestCheckFunc {
80
70
return resource .ComposeAggregateTestCheckFunc (
81
- // Check that the environment variables are set correctly.
82
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.0" , fmt .Sprintf ("ENVBUILDER_CACHE_REPO=%s" , deps .CacheRepo )),
83
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.1" , fmt .Sprintf ("ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH=%s" , deps .Repo .Key )),
84
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.2" , fmt .Sprintf ("ENVBUILDER_GIT_URL=%s" , deps .Repo .URL )),
85
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.3" , "ENVBUILDER_REMOTE_REPO_BUILD_MODE=true" ),
86
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.4" , "ENVBUILDER_VERBOSE=true" ),
87
- // Check that the extra environment variables are set correctly.
88
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.5" , "FOO=bar\n baz" ),
89
- // We should not have any other environment variables set.
90
- resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "env.6" ),
91
-
92
- // Check that the same values are set in env_map.
93
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_CACHE_REPO" , deps .CacheRepo ),
94
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" , deps .Repo .Key ),
95
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_GIT_URL" , deps .Repo .URL ),
96
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_REMOTE_REPO_BUILD_MODE" , "true" ),
97
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_VERBOSE" , "true" ),
98
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.FOO" , "bar\n baz" ),
71
+ assertEnv (t ,
72
+ "ENVBUILDER_CACHE_REPO" , deps .CacheRepo ,
73
+ "ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" , deps .Repo .Key ,
74
+ "ENVBUILDER_GIT_URL" , deps .Repo .URL ,
75
+ "ENVBUILDER_REMOTE_REPO_BUILD_MODE" , "true" ,
76
+ "ENVBUILDER_VERBOSE" , "true" ,
77
+ "FOO" , "bar\n baz" ,
78
+ ),
99
79
)
100
80
},
101
81
},
@@ -118,30 +98,17 @@ RUN date > /date.txt`,
118
98
},
119
99
assertEnv : func (t * testing.T , deps testDependencies ) resource.TestCheckFunc {
120
100
return resource .ComposeAggregateTestCheckFunc (
121
- // Check that the environment variables are set correctly.
122
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.0" , fmt .Sprintf ("ENVBUILDER_CACHE_REPO=%s" , deps .CacheRepo )),
123
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.1" , fmt .Sprintf ("ENVBUILDER_DEVCONTAINER_DIR=%s" , deps .ExtraEnv ["ENVBUILDER_DEVCONTAINER_DIR" ])),
124
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.2" , fmt .Sprintf ("ENVBUILDER_DEVCONTAINER_JSON_PATH=%s" , deps .ExtraEnv ["ENVBUILDER_DEVCONTAINER_JSON_PATH" ])),
125
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.3" , fmt .Sprintf ("ENVBUILDER_DOCKERFILE_PATH=%s" , deps .ExtraEnv ["ENVBUILDER_DOCKERFILE_PATH" ])),
126
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.4" , fmt .Sprintf ("ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH=%s" , deps .Repo .Key )),
127
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.5" , fmt .Sprintf ("ENVBUILDER_GIT_URL=%s" , deps .Repo .URL )),
128
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.6" , "ENVBUILDER_REMOTE_REPO_BUILD_MODE=true" ),
129
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.7" , "ENVBUILDER_VERBOSE=true" ),
130
- // Check that the extra environment variables are set correctly.
131
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.8" , "FOO=bar\n baz" ),
132
- // We should not have any other environment variables set.
133
- resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "env.9" ),
134
-
135
- // Check that the same values are set in env_map.
136
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_CACHE_REPO" , deps .CacheRepo ),
137
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_DEVCONTAINER_DIR" , deps .ExtraEnv ["ENVBUILDER_DEVCONTAINER_DIR" ]),
138
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_DEVCONTAINER_JSON_PATH" , deps .ExtraEnv ["ENVBUILDER_DEVCONTAINER_JSON_PATH" ]),
139
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_DOCKERFILE_PATH" , deps .ExtraEnv ["ENVBUILDER_DOCKERFILE_PATH" ]),
140
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" , deps .Repo .Key ),
141
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_GIT_URL" , deps .Repo .URL ),
142
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_REMOTE_REPO_BUILD_MODE" , "true" ),
143
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_VERBOSE" , "true" ),
144
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.FOO" , "bar\n baz" ),
101
+ assertEnv (t ,
102
+ "ENVBUILDER_CACHE_REPO" , deps .CacheRepo ,
103
+ "ENVBUILDER_DEVCONTAINER_DIR" , "path/to/.devcontainer" ,
104
+ "ENVBUILDER_DEVCONTAINER_JSON_PATH" , "path/to/.devcontainer/devcontainer.json" ,
105
+ "ENVBUILDER_DOCKERFILE_PATH" , "path/to/.devcontainer/Dockerfile" ,
106
+ "ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" , deps .Repo .Key ,
107
+ "ENVBUILDER_GIT_URL" , deps .Repo .URL ,
108
+ "ENVBUILDER_REMOTE_REPO_BUILD_MODE" , "true" ,
109
+ "ENVBUILDER_VERBOSE" , "true" ,
110
+ "FOO" , "bar\n baz" ,
111
+ ),
145
112
)
146
113
},
147
114
},
@@ -170,7 +137,6 @@ RUN date > /date.txt`,
170
137
resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "image" , deps .BuilderImage ),
171
138
// Inputs should still be present.
172
139
resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "cache_repo" , deps .CacheRepo ),
173
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "extra_env.FOO" , "bar\n baz" ),
174
140
resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "git_url" , deps .Repo .URL ),
175
141
// Should be empty
176
142
resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "git_username" ),
@@ -192,7 +158,6 @@ RUN date > /date.txt`,
192
158
resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "image" , deps .BuilderImage ),
193
159
// Inputs should still be present.
194
160
resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "cache_repo" , deps .CacheRepo ),
195
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "extra_env.FOO" , "bar\n baz" ),
196
161
resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "git_url" , deps .Repo .URL ),
197
162
// Should be empty
198
163
resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "git_username" ),
@@ -212,7 +177,6 @@ RUN date > /date.txt`,
212
177
Check : resource .ComposeAggregateTestCheckFunc (
213
178
// Inputs should still be present.
214
179
resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "cache_repo" , deps .CacheRepo ),
215
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "extra_env.FOO" , "bar\n baz" ),
216
180
resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "git_url" , deps .Repo .URL ),
217
181
// Should be empty
218
182
resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "git_username" ),
@@ -243,28 +207,31 @@ RUN date > /date.txt`,
243
207
}
244
208
}
245
209
246
- // assertEnv is a test helper that checks the environment variables set on the
247
- // cached image resource based on the provided test dependencies .
248
- func assertEnv (t * testing.T , deps testDependencies ) resource.TestCheckFunc {
210
+ // assertEnv is a test helper that checks the environment variables, in order,
211
+ // on both the env and env_map attributes of the cached image resource .
212
+ func assertEnv (t * testing.T , kvs ... string ) resource.TestCheckFunc {
249
213
t .Helper ()
250
- return resource .ComposeAggregateTestCheckFunc (
251
- // Check that the environment variables are set correctly.
252
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.0" , fmt .Sprintf ("ENVBUILDER_CACHE_REPO=%s" , deps .CacheRepo )),
253
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.1" , fmt .Sprintf ("ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH=%s" , deps .Repo .Key )),
254
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.2" , fmt .Sprintf ("ENVBUILDER_GIT_URL=%s" , deps .Repo .URL )),
255
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.3" , "ENVBUILDER_REMOTE_REPO_BUILD_MODE=true" ),
256
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.4" , "ENVBUILDER_VERBOSE=true" ),
257
- // Check that the extra environment variables are set correctly.
258
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env.5" , "FOO=bar\n baz" ),
259
- // We should not have any other environment variables set.
260
- resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "env.6" ),
214
+ if len (kvs )% 2 != 0 {
215
+ t .Fatalf ("assertEnv: expected an even number of key-value pairs, got %d" , len (kvs ))
216
+ }
217
+
218
+ funcs := make ([]resource.TestCheckFunc , 0 )
219
+ for i := 0 ; i < len (kvs ); i += 2 {
220
+ resKey := fmt .Sprintf ("env.%d" , len (funcs ))
221
+ resVal := fmt .Sprintf ("%s=%s" , kvs [i ], kvs [i + 1 ])
222
+ fn := resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , resKey , resVal )
223
+ funcs = append (funcs , fn )
224
+ }
225
+
226
+ lastKey := fmt .Sprintf ("env.%d" , len (funcs ))
227
+ lastFn := resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , lastKey )
228
+ funcs = append (funcs , lastFn )
229
+
230
+ for i := 0 ; i < len (kvs ); i += 2 {
231
+ resKey := fmt .Sprintf ("env_map.%s" , kvs [i ])
232
+ fn := resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , resKey , kvs [i + 1 ])
233
+ funcs = append (funcs , fn )
234
+ }
261
235
262
- // Check that the same values are set in env_map.
263
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_CACHE_REPO" , deps .CacheRepo ),
264
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_GIT_SSH_PRIVATE_KEY_PATH" , deps .Repo .Key ),
265
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_GIT_URL" , deps .Repo .URL ),
266
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_REMOTE_REPO_BUILD_MODE" , "true" ),
267
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.ENVBUILDER_VERBOSE" , "true" ),
268
- resource .TestCheckResourceAttr ("envbuilder_cached_image.test" , "env_map.FOO" , "bar\n baz" ),
269
- )
236
+ return resource .ComposeAggregateTestCheckFunc (funcs ... )
270
237
}
0 commit comments