MCPcopy Index your code
hub / github.com/coder/coder / TestDockerEnvInfoer

Function TestDockerEnvInfoer

agent/agentcontainers/containers_test.go:162–283  ·  view source on GitHub ↗

TestDockerEnvInfoer tests the ability of EnvInfo to extract information from running containers. Containers are deleted after the test is complete. As this test creates containers, it is skipped by default. It can be run manually as follows: CODER_TEST_USE_DOCKER=1 go test ./agent/agentcontainers -

(t *testing.T)

Source from the content-addressed store, hash-verified

160//
161//nolint:paralleltest // This test tends to flake when lots of containers start and stop in parallel.
162func TestDockerEnvInfoer(t *testing.T) {
163 if ctud, ok := os.LookupEnv("CODER_TEST_USE_DOCKER"); !ok || ctud != "1" {
164 t.Skip("Set CODER_TEST_USE_DOCKER=1 to run this test")
165 }
166
167 pool, err := dockertest.NewPool("")
168 require.NoError(t, err, "Could not connect to docker")
169 for idx, tt := range []struct {
170 image string
171 labels map[string]string
172 expectedEnv []string
173 containerUser string
174 expectedUsername string
175 expectedUserShell string
176 }{
177 {
178 image: "busybox:latest",
179 labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
180
181 expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
182 expectedUsername: "root",
183 expectedUserShell: "/bin/sh",
184 },
185 {
186 image: "busybox:latest",
187 labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
188 expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
189 containerUser: "root",
190 expectedUsername: "root",
191 expectedUserShell: "/bin/sh",
192 },
193 {
194 image: "codercom/enterprise-minimal:ubuntu",
195 labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
196 expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
197 expectedUsername: "coder",
198 expectedUserShell: "/bin/bash",
199 },
200 {
201 image: "codercom/enterprise-minimal:ubuntu",
202 labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
203 expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
204 containerUser: "coder",
205 expectedUsername: "coder",
206 expectedUserShell: "/bin/bash",
207 },
208 {
209 image: "codercom/enterprise-minimal:ubuntu",
210 labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar", "MULTILINE": "foo\nbar\nbaz"}}]`},
211 expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},
212 containerUser: "root",
213 expectedUsername: "root",
214 expectedUserShell: "/bin/bash",
215 },
216 {
217 image: "codercom/enterprise-minimal:ubuntu",
218 labels: map[string]string{`devcontainer.metadata`: `[{"remoteEnv": {"FOO": "bar"}},{"remoteEnv": {"MULTILINE": "foo\nbar\nbaz"}}]`},
219 expectedEnv: []string{"FOO=bar", "MULTILINE=foo\nbar\nbaz"},

Callers

nothing calls this directly

Calls 15

ContextFunction · 0.92
EnvInfoFunction · 0.92
SkipMethod · 0.80
PurgeMethod · 0.80
NotEmptyMethod · 0.80
runFunction · 0.70
RunMethod · 0.65
LogfMethod · 0.65
CleanupMethod · 0.65
UserMethod · 0.65
HomeDirMethod · 0.65
ShellMethod · 0.65

Tested by

no test coverage detected