@@ -20,8 +20,10 @@ func TestAccCachedImageResource(t *testing.T) {
20
20
defer cancel ()
21
21
22
22
for _ , tc := range []struct {
23
- name string
24
- files map [string ]string
23
+ name string
24
+ files map [string ]string
25
+ extraEnv map [string ]string
26
+ assertEnv func (t * testing.T , deps testDependencies ) resource.TestCheckFunc
25
27
}{
26
28
{
27
29
// This test case is the simplest possible case: a devcontainer.json.
@@ -31,6 +33,33 @@ func TestAccCachedImageResource(t *testing.T) {
31
33
files : map [string ]string {
32
34
".devcontainer/devcontainer.json" : `{"image": "localhost:5000/test-ubuntu:latest"}` ,
33
35
},
36
+ extraEnv : map [string ]string {
37
+ "FOO" : testEnvValue ,
38
+ "ENVBUILDER_GIT_URL" : "https://not.the.real.git/url" ,
39
+ "ENVBUILDER_CACHE_REPO" : "not-the-real-cache-repo" ,
40
+ },
41
+ assertEnv : func (t * testing.T , deps testDependencies ) resource.TestCheckFunc {
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" ),
61
+ )
62
+ },
34
63
},
35
64
{
36
65
// This test case includes a Dockerfile in addition to the devcontainer.json.
@@ -42,14 +71,84 @@ func TestAccCachedImageResource(t *testing.T) {
42
71
".devcontainer/Dockerfile" : `FROM localhost:5000/test-ubuntu:latest
43
72
RUN date > /date.txt` ,
44
73
},
74
+ extraEnv : map [string ]string {
75
+ "FOO" : testEnvValue ,
76
+ "ENVBUILDER_GIT_URL" : "https://not.the.real.git/url" ,
77
+ "ENVBUILDER_CACHE_REPO" : "not-the-real-cache-repo" ,
78
+ },
79
+ assertEnv : func (t * testing.T , deps testDependencies ) resource.TestCheckFunc {
80
+ 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" ),
99
+ )
100
+ },
101
+ },
102
+ {
103
+ // This test case ensures that parameters passed via extra_env are
104
+ // handled correctly.
105
+ name : "extra_env" ,
106
+ files : map [string ]string {
107
+ "path/to/.devcontainer/devcontainer.json" : `{"build": { "dockerfile": "Dockerfile" }}` ,
108
+ "path/to/.devcontainer/Dockerfile" : `FROM localhost:5000/test-ubuntu:latest
109
+ RUN date > /date.txt` ,
110
+ },
111
+ extraEnv : map [string ]string {
112
+ "FOO" : testEnvValue ,
113
+ "ENVBUILDER_GIT_URL" : "https://not.the.real.git/url" ,
114
+ "ENVBUILDER_CACHE_REPO" : "not-the-real-cache-repo" ,
115
+ "ENVBUILDER_DEVCONTAINER_DIR" : "path/to/.devcontainer" ,
116
+ "ENVBUILDER_DEVCONTAINER_JSON_PATH" : "path/to/.devcontainer/devcontainer.json" ,
117
+ "ENVBUILDER_DOCKERFILE_PATH" : "path/to/.devcontainer/Dockerfile" ,
118
+ },
119
+ assertEnv : func (t * testing.T , deps testDependencies ) resource.TestCheckFunc {
120
+ 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" ),
145
+ )
146
+ },
45
147
},
46
148
} {
47
149
t .Run (tc .name , func (t * testing.T ) {
48
150
//nolint: paralleltest
49
- deps := setup (ctx , t , tc .files )
50
- deps .ExtraEnv ["FOO" ] = testEnvValue
51
- deps .ExtraEnv ["ENVBUILDER_GIT_URL" ] = "https://not.the.real.git/url"
52
- deps .ExtraEnv ["ENVBUILDER_CACHE_REPO" ] = "not-the-real-cache-repo"
151
+ deps := setup (ctx , t , tc .extraEnv , tc .files )
53
152
54
153
resource .Test (t , resource.TestCase {
55
154
ProtoV6ProviderFactories : testAccProtoV6ProviderFactories ,
@@ -78,7 +177,7 @@ RUN date > /date.txt`,
78
177
resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "git_password" ),
79
178
resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "cache_ttl_days" ),
80
179
// Environment variables
81
- assertEnv (t , deps ),
180
+ tc . assertEnv (t , deps ),
82
181
),
83
182
ExpectNonEmptyPlan : true , // TODO: check the plan.
84
183
},
@@ -100,7 +199,7 @@ RUN date > /date.txt`,
100
199
resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "git_password" ),
101
200
resource .TestCheckNoResourceAttr ("envbuilder_cached_image.test" , "cache_ttl_days" ),
102
201
// Environment variables
103
- assertEnv (t , deps ),
202
+ tc . assertEnv (t , deps ),
104
203
),
105
204
ExpectNonEmptyPlan : true , // TODO: check the plan.
106
205
},
@@ -125,7 +224,7 @@ RUN date > /date.txt`,
125
224
resource .TestCheckResourceAttrSet ("envbuilder_cached_image.test" , "image" ),
126
225
resource .TestCheckResourceAttrWith ("envbuilder_cached_image.test" , "image" , quotedPrefix (deps .CacheRepo )),
127
226
// Environment variables
128
- assertEnv (t , deps ),
227
+ tc . assertEnv (t , deps ),
129
228
),
130
229
},
131
230
// 5) Should produce an empty plan after apply
0 commit comments