@@ -213,17 +213,56 @@ func TestPlatformFromImage(t *testing.T) {
213
213
require .Equal (t , "docker-image://docker.io/library/srcimage:latest" , src .Source .Identifier )
214
214
require .Equal (t , "s390x" , vtx .Platform .Architecture )
215
215
}
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
+
216
239
_ , ok = vtx .Op .(* pb.Op_Exec )
217
240
require .Equal (t , true , ok )
218
241
require .Equal (t , "s390x" , vtx .Platform .Architecture )
219
242
220
243
vtx , ok = m [vtx .Inputs [0 ].Digest ]
221
244
require .Equal (t , true , ok )
222
245
223
- src , ok = vtx .Op .(* pb.Op_Source )
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 )
224
255
require .Equal (t , true , ok )
225
256
require .Equal (t , "docker-image://docker.io/library/srcimage:latest" , src .Source .Identifier )
226
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 )
227
266
}
228
267
229
268
func getEnvHelper (t * testing.T , s State , k string ) (string , bool ) {
0 commit comments