@@ -275,53 +275,81 @@ func testOCIExporter(t *testing.T, sb integration.Sandbox) {
275
275
def , err := st .Marshal ()
276
276
require .NoError (t , err )
277
277
278
- destDir , err := ioutil .TempDir ("" , "buildkit" )
279
- require .NoError (t , err )
280
- defer os .RemoveAll (destDir )
281
-
282
- out := filepath .Join (destDir , "out.tar" )
283
- target := "example.com/buildkit/testoci:latest"
284
-
285
- err = c .Solve (context .TODO (), def , SolveOpt {
286
- Exporter : ExporterOCI ,
287
- ExporterAttrs : map [string ]string {
288
- "output" : out ,
289
- "name" : target ,
290
- },
291
- }, nil )
292
- require .NoError (t , err )
293
-
294
- dt , err := ioutil .ReadFile (out )
295
- require .NoError (t , err )
296
-
297
- m , err := readTarToMap (dt , false )
298
- require .NoError (t , err )
299
-
300
- _ , ok := m ["oci-layout" ]
301
- require .True (t , ok )
302
-
303
- var index ocispec.Index
304
- err = json .Unmarshal (m ["index.json" ].data , & index )
305
- require .NoError (t , err )
306
- require .Equal (t , 2 , index .SchemaVersion )
307
- require .Equal (t , 1 , len (index .Manifests ))
308
-
309
- var mfst ocispec.Manifest
310
- err = json .Unmarshal (m ["blobs/sha256/" + index .Manifests [0 ].Digest .Hex ()].data , & mfst )
311
- require .NoError (t , err )
312
- require .Equal (t , 2 , len (mfst .Layers ))
313
- require .Equal (t , target , index .Manifests [0 ].Annotations ["org.opencontainers.image.ref.name" ])
278
+ for _ , exp := range []string {ExporterOCI , ExporterDocker } {
279
+
280
+ destDir , err := ioutil .TempDir ("" , "buildkit" )
281
+ require .NoError (t , err )
282
+ defer os .RemoveAll (destDir )
283
+
284
+ out := filepath .Join (destDir , "out.tar" )
285
+ target := "example.com/buildkit/testoci:latest"
286
+
287
+ err = c .Solve (context .TODO (), def , SolveOpt {
288
+ Exporter : exp ,
289
+ ExporterAttrs : map [string ]string {
290
+ "output" : out ,
291
+ "name" : target ,
292
+ },
293
+ }, nil )
294
+ require .NoError (t , err )
295
+
296
+ dt , err := ioutil .ReadFile (out )
297
+ require .NoError (t , err )
298
+
299
+ m , err := readTarToMap (dt , false )
300
+ require .NoError (t , err )
301
+
302
+ _ , ok := m ["oci-layout" ]
303
+ require .True (t , ok )
304
+
305
+ var index ocispec.Index
306
+ err = json .Unmarshal (m ["index.json" ].data , & index )
307
+ require .NoError (t , err )
308
+ require .Equal (t , 2 , index .SchemaVersion )
309
+ require .Equal (t , 1 , len (index .Manifests ))
310
+
311
+ var mfst ocispec.Manifest
312
+ err = json .Unmarshal (m ["blobs/sha256/" + index .Manifests [0 ].Digest .Hex ()].data , & mfst )
313
+ require .NoError (t , err )
314
+ require .Equal (t , 2 , len (mfst .Layers ))
315
+ require .Equal (t , target , index .Manifests [0 ].Annotations ["org.opencontainers.image.ref.name" ])
316
+
317
+ var ociimg ocispec.Image
318
+ err = json .Unmarshal (m ["blobs/sha256/" + mfst .Config .Digest .Hex ()].data , & ociimg )
319
+ require .NoError (t , err )
320
+ require .Equal (t , "layers" , ociimg .RootFS .Type )
321
+ require .Equal (t , 2 , len (ociimg .RootFS .DiffIDs ))
322
+
323
+ _ , ok = m ["blobs/sha256/" + mfst .Layers [0 ].Digest .Hex ()]
324
+ require .True (t , ok )
325
+ _ , ok = m ["blobs/sha256/" + mfst .Layers [1 ].Digest .Hex ()]
326
+ require .True (t , ok )
327
+
328
+ if exp != ExporterDocker {
329
+ continue
330
+ }
314
331
315
- var ociimg ocispec.Image
316
- err = json .Unmarshal (m ["blobs/sha256/" + mfst .Config .Digest .Hex ()].data , & ociimg )
317
- require .NoError (t , err )
318
- require .Equal (t , "layers" , ociimg .RootFS .Type )
319
- require .Equal (t , 2 , len (ociimg .RootFS .DiffIDs ))
332
+ var dockerMfst []struct {
333
+ Config string
334
+ RepoTags []string
335
+ Layers []string
336
+ }
337
+ err = json .Unmarshal (m ["manifest.json" ].data , & dockerMfst )
338
+ require .NoError (t , err )
339
+ require .Equal (t , 1 , len (dockerMfst ))
340
+
341
+ _ , ok = m [dockerMfst [0 ].Config ]
342
+ require .True (t , ok )
343
+ require .Equal (t , 2 , len (dockerMfst [0 ].Layers ))
344
+ require .Equal (t , 1 , len (dockerMfst [0 ].RepoTags ))
345
+ require .Equal (t , target , dockerMfst [0 ].RepoTags [0 ])
346
+
347
+ for _ , l := range dockerMfst [0 ].Layers {
348
+ _ , ok := m [l ]
349
+ require .True (t , ok )
350
+ }
320
351
321
- _ , ok = m ["blobs/sha256/" + mfst .Layers [0 ].Digest .Hex ()]
322
- require .True (t , ok )
323
- _ , ok = m ["blobs/sha256/" + mfst .Layers [1 ].Digest .Hex ()]
324
- require .True (t , ok )
352
+ }
325
353
}
326
354
327
355
func testBuildPushAndValidate (t * testing.T , sb integration.Sandbox ) {
0 commit comments