Skip to content

Commit 9dee755

Browse files
committed
feat(devcontainer): log resolved feature install order and update test images
1 parent af58c71 commit 9dee755

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

devcontainer/devcontainer.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,16 @@ func (s *Spec) compileFeatures(fs billy.Filesystem, devcontainerDir, scratchDir
436436
specsByRef[refRaw] = ef.spec
437437
}
438438
featureOrder, err := resolveInstallOrder(refRaws, specsByRef, idToRef, canonicalToRef, ambiguousCanonicals, s.OverrideFeatureInstallOrder)
439+
// log the feature install order for debugging, since an error here is often due to an
440+
// unexpected install order (e.g. due to a missing dependency that causes a cycle in the resolved graph).
441+
if err == nil {
442+
fmt.Printf("Resolved feature installation order:\n")
443+
for i, refRaw := range featureOrder {
444+
ef := extracted[refRaw]
445+
fmt.Printf("%d: %s (ref %q, ID %q, version %q)\n", i+1, ef.spec.Name, refRaw, ef.spec.ID, ef.spec.Version)
446+
}
447+
}
448+
439449
if err != nil {
440450
return "", nil, err
441451
}

devcontainer/devcontainer_test.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -796,9 +796,7 @@ func TestCompileDevContainer(t *testing.T) {
796796
t.Parallel()
797797
fs := memfs.New()
798798
dc := &devcontainer.Spec{
799-
// Use scratch so UserFromDockerfile returns ("", nil) without
800-
// any network access.
801-
Image: "scratch",
799+
Image: "localhost:5000/envbuilder-test-ubuntu:latest",
802800
}
803801
params, err := dc.Compile(fs, "", workingDir, "", "", false, stubLookupEnv)
804802
require.NoError(t, err)
@@ -823,9 +821,7 @@ func TestCompileDevContainer(t *testing.T) {
823821
require.NoError(t, err)
824822
file, err := fs.OpenFile(filepath.Join(dcDir, "Dockerfile"), os.O_CREATE|os.O_WRONLY, 0o644)
825823
require.NoError(t, err)
826-
// Use scratch so UserFromDockerfile returns ("", nil) without any
827-
// network access (the test only verifies build args and paths).
828-
_, err = io.WriteString(file, "FROM scratch")
824+
_, err = io.WriteString(file, "FROM localhost:5000/envbuilder-test-ubuntu:latest")
829825
require.NoError(t, err)
830826
_ = file.Close()
831827
params, err := dc.Compile(fs, dcDir, workingDir, "", "/var/workspace", false, stubLookupEnv)

0 commit comments

Comments
 (0)