Skip to content

Commit b037c01

Browse files
committed
Fix FeatureContexts keys
This needs to be updated to correspond to the changes in coder#205.
1 parent b1e4be1 commit b037c01

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

devcontainer/devcontainer.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ func (s *Spec) compileFeatures(fs billy.Filesystem, devcontainerDir, scratchDir
295295
}
296296
featureDirectives = append(featureDirectives, directive)
297297
if useBuildContexts {
298-
featureContexts[featureName] = featureDir
298+
featureContexts[featureRef] = featureDir
299299
lines = append(lines, fromDirective)
300300
}
301301
}

devcontainer/devcontainer_test.go

+37-4
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,17 @@ func TestCompileWithFeatures(t *testing.T) {
8787
dc, err := devcontainer.Parse([]byte(raw))
8888
require.NoError(t, err)
8989
fs := memfs.New()
90-
params, err := dc.Compile(fs, "", magicDir, "", "", false, os.LookupEnv)
91-
require.NoError(t, err)
9290

93-
// We have to SHA because we get a different MD5 every time!
9491
featureOneMD5 := md5.Sum([]byte(featureOne))
9592
featureOneDir := fmt.Sprintf("/.envbuilder/features/one-%x", featureOneMD5[:4])
9693
featureTwoMD5 := md5.Sum([]byte(featureTwo))
9794
featureTwoDir := fmt.Sprintf("/.envbuilder/features/two-%x", featureTwoMD5[:4])
9895

99-
require.Equal(t, `FROM localhost:5000/envbuilder-test-codercom-code-server:latest
96+
t.Run("WithoutBuildContexts", func(t *testing.T) {
97+
params, err := dc.Compile(fs, "", magicDir, "", "", false, os.LookupEnv)
98+
require.NoError(t, err)
99+
100+
require.Equal(t, `FROM localhost:5000/envbuilder-test-codercom-code-server:latest
100101
101102
USER root
102103
# Rust tomato - Example description!
@@ -108,6 +109,38 @@ WORKDIR `+featureTwoDir+`
108109
ENV POTATO=example
109110
RUN VERSION="potato" _CONTAINER_USER="1000" _REMOTE_USER="1000" ./install.sh
110111
USER 1000`, params.DockerfileContent)
112+
})
113+
114+
t.Run("WithBuildContexts", func(t *testing.T) {
115+
params, err := dc.Compile(fs, "", magicDir, "", "", true, os.LookupEnv)
116+
require.NoError(t, err)
117+
118+
registryHost := strings.TrimPrefix(registry, "http://")
119+
120+
require.Equal(t, `FROM scratch AS envbuilder_feature_one
121+
COPY --from=`+registryHost+`/coder/one / /
122+
123+
FROM scratch AS envbuilder_feature_two
124+
COPY --from=`+registryHost+`/coder/two / /
125+
126+
FROM localhost:5000/envbuilder-test-codercom-code-server:latest
127+
128+
USER root
129+
# Rust tomato - Example description!
130+
WORKDIR `+featureOneDir+`
131+
ENV TOMATO=example
132+
RUN --mount=type=bind,from=envbuilder_feature_one,target=`+featureOneDir+`,rw _CONTAINER_USER="1000" _REMOTE_USER="1000" ./install.sh
133+
# Go potato - Example description!
134+
WORKDIR `+featureTwoDir+`
135+
ENV POTATO=example
136+
RUN --mount=type=bind,from=envbuilder_feature_two,target=`+featureTwoDir+`,rw VERSION="potato" _CONTAINER_USER="1000" _REMOTE_USER="1000" ./install.sh
137+
USER 1000`, params.DockerfileContent)
138+
139+
require.Equal(t, map[string]string{
140+
registryHost+"/coder/one": featureOneDir,
141+
registryHost+"/coder/two": featureTwoDir,
142+
}, params.FeatureContexts)
143+
})
111144
}
112145

113146
func TestCompileDevContainer(t *testing.T) {

0 commit comments

Comments
 (0)