@@ -87,16 +87,17 @@ func TestCompileWithFeatures(t *testing.T) {
87
87
dc , err := devcontainer .Parse ([]byte (raw ))
88
88
require .NoError (t , err )
89
89
fs := memfs .New ()
90
- params , err := dc .Compile (fs , "" , magicDir , "" , "" , false , os .LookupEnv )
91
- require .NoError (t , err )
92
90
93
- // We have to SHA because we get a different MD5 every time!
94
91
featureOneMD5 := md5 .Sum ([]byte (featureOne ))
95
92
featureOneDir := fmt .Sprintf ("/.envbuilder/features/one-%x" , featureOneMD5 [:4 ])
96
93
featureTwoMD5 := md5 .Sum ([]byte (featureTwo ))
97
94
featureTwoDir := fmt .Sprintf ("/.envbuilder/features/two-%x" , featureTwoMD5 [:4 ])
98
95
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
100
101
101
102
USER root
102
103
# Rust tomato - Example description!
@@ -108,6 +109,38 @@ WORKDIR `+featureTwoDir+`
108
109
ENV POTATO=example
109
110
RUN VERSION="potato" _CONTAINER_USER="1000" _REMOTE_USER="1000" ./install.sh
110
111
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
+ })
111
144
}
112
145
113
146
func TestCompileDevContainer (t * testing.T ) {
0 commit comments