diff --git a/e2e/tests/up/provider_docker.go b/e2e/tests/up/provider_docker.go index 1ab507f38..bfe340666 100644 --- a/e2e/tests/up/provider_docker.go +++ b/e2e/tests/up/provider_docker.go @@ -497,6 +497,28 @@ var _ = ginkgo.Describe( ginkgo.SpecTimeout(framework.GetTimeout()), ) + ginkgo.It( + "postCreateCommand with object syntax runs named sub-commands in parallel", + func(ctx context.Context) { + tempDir, err := dtc.setupAndUp( + ctx, + "tests/up/testdata/docker-postcreate-parallel", + ) + framework.ExpectNoError(err) + + // Both named postCreateCommand sub-commands run inside the + // container and write marker files to /tmp. + one, err := dtc.execSSH(ctx, tempDir, "cat /tmp/post-create-one.out") + framework.ExpectNoError(err) + gomega.Expect(strings.TrimSpace(one)).To(gomega.Equal("postCreateOne")) + + two, err := dtc.execSSH(ctx, tempDir, "cat /tmp/post-create-two.out") + framework.ExpectNoError(err) + gomega.Expect(strings.TrimSpace(two)).To(gomega.Equal("postCreateTwo")) + }, + ginkgo.SpecTimeout(framework.GetTimeout()), + ) + ginkgo.It("IDE accessible before postAttachCommand completes", func(ctx context.Context) { tempDir, err := setupWorkspace( "tests/up/testdata/docker-post-attach-nonblocking", diff --git a/e2e/tests/up/testdata/docker-postcreate-parallel/.devcontainer.json b/e2e/tests/up/testdata/docker-postcreate-parallel/.devcontainer.json new file mode 100644 index 000000000..374b5b71c --- /dev/null +++ b/e2e/tests/up/testdata/docker-postcreate-parallel/.devcontainer.json @@ -0,0 +1,7 @@ +{ + "image": "ghcr.io/devsy-org/test-images/go:1", + "postCreateCommand": { + "write-one": "echo -n postCreateOne > /tmp/post-create-one.out", + "write-two": "echo -n postCreateTwo > /tmp/post-create-two.out" + } +}