@@ -144,27 +144,35 @@ func TestPlatformFromImage(t *testing.T) {
144
144
145
145
s := Image ("srcimage" , LinuxS390x ).
146
146
Run (Args ([]string {"foo" })).
147
- File (Mkdir ("/foo" , 0700 ).Mkfile ("/bar" , 0600 , []byte ("bar" )))
147
+ File (Mkdir ("/foo" , 0700 ).Mkfile ("/bar" , 0600 , []byte ("bar" ))).
148
+ Run (Args ([]string {"afterfile" })).Root ()
148
149
149
- dest := Image ("destimage" ).File (Copy (s , "/" , "/" ))
150
+ dest := Image ("destimage" ).File (Copy (s , "/" , "/" )). Run ( Args ([] string { "afterfile" }))
150
151
151
152
def , err := dest .Marshal (context .TODO (), LinuxPpc64le )
152
153
require .NoError (t , err )
153
154
154
155
m , arr := parseDef (t , def .Def )
155
156
_ = m
156
- require .Equal (t , 6 , len (arr ))
157
+ require .Equal (t , 8 , len (arr ))
157
158
158
159
dgst , idx := last (t , arr )
159
160
require .Equal (t , 0 , idx )
160
161
161
162
vtx , ok := m [dgst ]
162
163
require .Equal (t , true , ok )
163
164
165
+ _ , ok = vtx .Op .(* pb.Op_Exec )
166
+ require .Equal (t , true , ok )
167
+ require .Equal (t , "ppc64le" , vtx .Platform .Architecture )
168
+
169
+ vtx , ok = m [vtx .Inputs [0 ].Digest ]
170
+ require .Equal (t , true , ok )
171
+
164
172
f , ok := vtx .Op .(* pb.Op_File )
165
173
require .Equal (t , true , ok )
166
174
require .Equal (t , 1 , len (f .File .Actions ))
167
- require .Equal (t , "ppc64le" , vtx .Platform . Architecture )
175
+ require .Nil (t , vtx .Platform )
168
176
169
177
mainVtx := vtx
170
178
vtx , ok = m [vtx .Inputs [0 ].Digest ]
@@ -178,10 +186,17 @@ func TestPlatformFromImage(t *testing.T) {
178
186
vtx , ok = m [mainVtx .Inputs [1 ].Digest ]
179
187
require .Equal (t , true , ok )
180
188
189
+ _ , ok = vtx .Op .(* pb.Op_Exec )
190
+ require .Equal (t , true , ok )
191
+ require .Equal (t , "s390x" , vtx .Platform .Architecture )
192
+
193
+ vtx , ok = m [vtx .Inputs [0 ].Digest ]
194
+ require .Equal (t , true , ok )
195
+
181
196
f , ok = vtx .Op .(* pb.Op_File )
182
197
require .Equal (t , true , ok )
183
198
require .Equal (t , 2 , len (f .File .Actions ))
184
- require .Equal (t , "s390x" , vtx .Platform . Architecture )
199
+ require .Nil (t , vtx .Platform )
185
200
186
201
vtx , ok = m [vtx .Inputs [0 ].Digest ]
187
202
require .Equal (t , true , ok )
@@ -199,6 +214,57 @@ func TestPlatformFromImage(t *testing.T) {
199
214
require .Equal (t , "s390x" , vtx .Platform .Architecture )
200
215
}
201
216
217
+ func TestPlatformFromImageWithMerge (t * testing.T ) {
218
+ t .Parallel ()
219
+
220
+ s := Image ("srcimage" , LinuxS390x )
221
+
222
+ s2 := Scratch ().File (Mkdir ("/foo" , 0700 ).Mkfile ("/bar" , 0600 , []byte ("bar" )))
223
+
224
+ dest := Merge ([]State {s , s2 }).Run (Args ([]string {"aftermerge" }))
225
+
226
+ def , err := dest .Marshal (context .TODO (), LinuxPpc64le )
227
+ require .NoError (t , err )
228
+
229
+ m , arr := parseDef (t , def .Def )
230
+ _ = m
231
+ require .Equal (t , 5 , len (arr ))
232
+
233
+ dgst , idx := last (t , arr )
234
+ require .Equal (t , 0 , idx )
235
+
236
+ vtx , ok := m [dgst ]
237
+ require .Equal (t , true , ok )
238
+
239
+ _ , ok = vtx .Op .(* pb.Op_Exec )
240
+ require .Equal (t , true , ok )
241
+ require .Equal (t , "s390x" , vtx .Platform .Architecture )
242
+
243
+ vtx , ok = m [vtx .Inputs [0 ].Digest ]
244
+ require .Equal (t , true , ok )
245
+
246
+ _ , ok = vtx .Op .(* pb.Op_Merge )
247
+ require .Equal (t , true , ok )
248
+ require .Nil (t , vtx .Platform )
249
+
250
+ mainVtx := vtx
251
+ vtx , ok = m [vtx .Inputs [0 ].Digest ]
252
+ require .Equal (t , true , ok )
253
+
254
+ src , ok := vtx .Op .(* pb.Op_Source )
255
+ require .Equal (t , true , ok )
256
+ require .Equal (t , "docker-image://docker.io/library/srcimage:latest" , src .Source .Identifier )
257
+ require .Equal (t , "s390x" , vtx .Platform .Architecture )
258
+
259
+ vtx , ok = m [mainVtx .Inputs [1 ].Digest ]
260
+ require .Equal (t , true , ok )
261
+
262
+ f , ok := vtx .Op .(* pb.Op_File )
263
+ require .Equal (t , true , ok )
264
+ require .Equal (t , 2 , len (f .File .Actions ))
265
+ require .Nil (t , vtx .Platform )
266
+ }
267
+
202
268
func getEnvHelper (t * testing.T , s State , k string ) (string , bool ) {
203
269
t .Helper ()
204
270
v , ok , err := s .GetEnv (context .TODO (), k )
0 commit comments