Skip to content

Commit aeae6e2

Browse files
chore: fix test, appease linter
1 parent fe99bd6 commit aeae6e2

File tree

4 files changed

+87
-9
lines changed

4 files changed

+87
-9
lines changed

agent/agentcontainers/api.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,9 @@ func (api *API) handleDevcontainerRecreate(w http.ResponseWriter, r *http.Reques
784784
dc.Container = nil
785785
api.knownDevcontainers[dc.WorkspaceFolder] = dc
786786
api.asyncWg.Add(1)
787-
go api.recreateDevcontainer(dc, configPath)
787+
go func() {
788+
_ = api.recreateDevcontainer(dc, configPath)
789+
}()
788790

789791
api.mu.Unlock()
790792

agent/agentcontainers/devcontainercli.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -247,16 +247,16 @@ func (d *devcontainerCLI) Exec(ctx context.Context, workspaceFolder, configPath
247247
args = append(args, cmdArgs...)
248248
c := d.execer.CommandContext(ctx, "devcontainer", args...)
249249

250-
c.Stdout = &devcontainerCLILogWriter{
250+
c.Stdout = io.MultiWriter(conf.stdout, &devcontainerCLILogWriter{
251251
ctx: ctx,
252252
logger: logger.With(slog.F("stdout", true)),
253-
writer: conf.stdout,
254-
}
255-
c.Stderr = &devcontainerCLILogWriter{
253+
writer: io.Discard,
254+
})
255+
c.Stderr = io.MultiWriter(conf.stderr, &devcontainerCLILogWriter{
256256
ctx: ctx,
257257
logger: logger.With(slog.F("stderr", true)),
258-
writer: conf.stderr,
259-
}
258+
writer: io.Discard,
259+
})
260260

261261
if err := c.Run(); err != nil {
262262
return xerrors.Errorf("devcontainer exec failed: %w", err)
@@ -408,7 +408,7 @@ func (l *devcontainerCLILogWriter) Write(p []byte) (n int, err error) {
408408
}
409409
if logLine.Level >= 3 {
410410
l.logger.Info(l.ctx, "@devcontainer/cli", slog.F("line", string(line)))
411-
l.writer.Write([]byte(logLine.Text))
411+
_, _ = l.writer.Write([]byte(logLine.Text + "\n"))
412412
continue
413413
}
414414
l.logger.Debug(l.ctx, "@devcontainer/cli", slog.F("line", string(line)))

agent/agentcontainers/devcontainercli_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ func TestDevcontainerCLI_WithOutput(t *testing.T) {
363363
require.NotEmpty(t, containerID, "expected non-empty container ID")
364364

365365
// Read expected log content.
366-
expLog, err := os.ReadFile(filepath.Join("testdata", "devcontainercli", "parse", "up.log"))
366+
expLog, err := os.ReadFile(filepath.Join("testdata", "devcontainercli", "parse", "up.expected"))
367367
require.NoError(t, err, "reading expected log file")
368368

369369
// Verify stdout buffer contains the CLI logs and stderr is empty.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
@devcontainers/cli 0.75.0. Node.js v23.9.0. darwin 24.4.0 arm64.
2+
Resolving Feature dependencies for 'ghcr.io/devcontainers/features/docker-in-docker:2'...
3+
Soft-dependency 'ghcr.io/devcontainers/features/common-utils' is not required. Removing from installation order...
4+
Files to omit: ''
5+
Run: docker buildx build --load --build-context dev_containers_feature_content_source=/var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/container-features/0.75.0-1744102171193 --build-arg _DEV_CONTAINERS_BASE_IMAGE=mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp --target dev_containers_target_stage -f /var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/container-features/0.75.0-1744102171193/Dockerfile.extended -t vsc-devcontainers-template-starter-81d8f17e32abef6d434cbb5a37fe05e5c8a6f8ccede47a61197f002dcbf60566-features /var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/empty-folder
6+
#0 building with "orbstack" instance using docker driver
7+
8+
#1 [internal] load build definition from Dockerfile.extended
9+
10+
#1 transferring dockerfile: 3.09kB done
11+
#1 DONE 0.0s
12+
13+
#2 resolve image config for docker-image://docker.io/docker/dockerfile:1.4
14+
15+
#2 DONE 1.3s
16+
17+
18+
#3 docker-image://docker.io/docker/dockerfile:1.4@sha256:9ba7531bd80fb0a858632727cf7a112fbfd19b17e94c4e84ced81e24ef1a0dbc
19+
#3 CACHED
20+
21+
22+
23+
#4 [internal] load .dockerignore
24+
#4 transferring context: 2B done
25+
#4 DONE 0.0s
26+
27+
#5 [internal] load metadata for mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye
28+
#5 DONE 0.0s
29+
30+
#6 [context dev_containers_feature_content_source] load .dockerignore
31+
#6 transferring dev_containers_feature_content_source: 2B done
32+
#6 DONE 0.0s
33+
34+
#7 [dev_containers_feature_content_normalize 1/3] FROM mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye
35+
#7 DONE 0.0s
36+
37+
#8 [context dev_containers_feature_content_source] load from client
38+
#8 transferring dev_containers_feature_content_source: 82.11kB 0.0s done
39+
#8 DONE 0.0s
40+
41+
#9 [dev_containers_feature_content_normalize 2/3] COPY --from=dev_containers_feature_content_source devcontainer-features.builtin.env /tmp/build-features/
42+
#9 CACHED
43+
44+
#10 [dev_containers_target_stage 2/5] RUN mkdir -p /tmp/dev-container-features
45+
#10 CACHED
46+
47+
#11 [dev_containers_target_stage 3/5] COPY --from=dev_containers_feature_content_normalize /tmp/build-features/ /tmp/dev-container-features
48+
#11 CACHED
49+
50+
#12 [dev_containers_target_stage 4/5] RUN echo "_CONTAINER_USER_HOME=$( (command -v getent >/dev/null 2>&1 && getent passwd 'root' || grep -E '^root|^[^:]*:[^:]*:root:' /etc/passwd || true) | cut -d: -f6)" >> /tmp/dev-container-features/devcontainer-features.builtin.env && echo "_REMOTE_USER_HOME=$( (command -v getent >/dev/null 2>&1 && getent passwd 'node' || grep -E '^node|^[^:]*:[^:]*:node:' /etc/passwd || true) | cut -d: -f6)" >> /tmp/dev-container-features/devcontainer-features.builtin.env
51+
#12 CACHED
52+
53+
#13 [dev_containers_feature_content_normalize 3/3] RUN chmod -R 0755 /tmp/build-features/
54+
#13 CACHED
55+
56+
#14 [dev_containers_target_stage 5/5] RUN --mount=type=bind,from=dev_containers_feature_content_source,source=docker-in-docker_0,target=/tmp/build-features-src/docker-in-docker_0 cp -ar /tmp/build-features-src/docker-in-docker_0 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/docker-in-docker_0 && cd /tmp/dev-container-features/docker-in-docker_0 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/docker-in-docker_0
57+
#14 CACHED
58+
59+
#15 exporting to image
60+
#15 exporting layers done
61+
#15 writing image sha256:275dc193c905d448ef3945e3fc86220cc315fe0cb41013988d6ff9f8d6ef2357 done
62+
#15 naming to docker.io/library/vsc-devcontainers-template-starter-81d8f17e32abef6d434cbb5a37fe05e5c8a6f8ccede47a61197f002dcbf60566-features done
63+
#15 DONE 0.0s
64+
65+
Run: docker buildx build --load --build-context dev_containers_feature_content_source=/var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/container-features/0.75.0-1744102171193 --build-arg _DEV_CONTAINERS_BASE_IMAGE=mcr.microsoft.com/devcontainers/javascript-node:1-18-bullseye --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp --target dev_containers_target_stage -f /var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/container-features/0.75.0-1744102171193/Dockerfile.extended -t vsc-devcontainers-template-starter-81d8f17e32abef6d434cbb5a37fe05e5c8a6f8ccede47a61197f002dcbf60566-features /var/folders/1y/cm8mblxd7_x9cljwl_jvfprh0000gn/T/devcontainercli/empty-folder
66+
Run: docker run --sig-proxy=false -a STDOUT -a STDERR --mount type=bind,source=/code/devcontainers-template-starter,target=/workspaces/devcontainers-template-starter,consistency=cached --mount type=volume,src=dind-var-lib-docker-0pctifo8bbg3pd06g3j5s9ae8j7lp5qfcd67m25kuahurel7v7jm,dst=/var/lib/docker -l devcontainer.local_folder=/code/devcontainers-template-starter -l devcontainer.config_file=/code/devcontainers-template-starter/.devcontainer/devcontainer.json --privileged --entrypoint /bin/sh vsc-devcontainers-template-starter-81d8f17e32abef6d434cbb5a37fe05e5c8a6f8ccede47a61197f002dcbf60566-features -c echo Container started
67+
Container started
68+
69+
Not setting dockerd DNS manually.
70+
71+
Running the postCreateCommand from devcontainer.json...
72+
73+
74+
75+
added 1 package in 784ms
76+

0 commit comments

Comments
 (0)