@@ -704,6 +704,53 @@ func testAcceptance(
704
704
builderName = value
705
705
})
706
706
707
+ when ("complex builder" , func () {
708
+ it .Before (func () {
709
+ // create our nested builder
710
+ h .SkipIf (t , imageManager .HostOS () == "windows" , "These tests are not yet compatible with Windows-based containers" )
711
+ h .SkipIf (t , ! createBuilderPack .SupportsFeature (invoke .BuilderNoDuplicateLayers ), "bug fixed in 0.18.0" )
712
+
713
+ // create a task, handled by a 'task manager' which executes our pack commands during tests.
714
+ // looks like this is used to de-dup tasks
715
+ key := taskKey (
716
+ "create-complex-builder" ,
717
+ append (
718
+ []string {runImageMirror , createBuilderPackConfig .Path (), lifecycle .Identifier ()},
719
+ createBuilderPackConfig .FixturePaths ()... ,
720
+ )... ,
721
+ )
722
+
723
+ value , err := suiteManager .RunTaskOnceString (key , func () (string , error ) {
724
+ return createComplexBuilder (
725
+ t ,
726
+ assert ,
727
+ createBuilderPack ,
728
+ lifecycle ,
729
+ buildpackManager ,
730
+ runImageMirror ,
731
+ )
732
+ })
733
+ assert .Nil (err )
734
+
735
+ // register task to be run to 'clean up' a task
736
+ suiteManager .RegisterCleanUp ("clean-" + key , func () error {
737
+ imageManager .CleanupImages (value )
738
+ return nil
739
+ })
740
+ builderName = value
741
+
742
+ output := pack .RunSuccessfully (
743
+ "config" , "run-image-mirrors" , "add" , "pack-test/run" , "--mirror" , "some-registry.com/pack-test/run1" )
744
+ assertOutput := assertions .NewOutputAssertionManager (t , output )
745
+ assertOutput .ReportsSuccesfulRunImageMirrorsAdd ("pack-test/run" , "some-registry.com/pack-test/run1" )
746
+ })
747
+ when ("builder has duplicate buildpacks" , func () {
748
+ it ("buildpack layers have no duplication" , func () {
749
+ assertImage .DoesNotHaveDuplicateLayers (builderName )
750
+ })
751
+ })
752
+ })
753
+
707
754
when ("builder.toml is invalid" , func () {
708
755
it ("displays an error" , func () {
709
756
builderConfigPath := createBuilderPack .FixtureManager ().FixtureLocation ("invalid_builder.toml" )
@@ -1941,6 +1988,7 @@ include = [ "*.jar", "media/mountain.jpg", "/media/person.png", ]
1941
1988
it .Before (func () {
1942
1989
// create our nested builder
1943
1990
h .SkipIf (t , imageManager .HostOS () == "windows" , "These tests are not yet compatible with Windows-based containers" )
1991
+ h .SkipIf (t , ! pack .SupportsFeature (invoke .BuilderNoDuplicateLayers ), "bug fixed in 0.18.0" )
1944
1992
1945
1993
// create a task, handled by a 'task manager' which executes our pack commands during tests.
1946
1994
// looks like this is used to de-dup tasks
@@ -2457,12 +2505,14 @@ func createComplexBuilder(t *testing.T,
2457
2505
packageImageName := registryConfig .RepoName ("nested-level-1-buildpack-" + h .RandString (8 ))
2458
2506
nestedLevelTwoBuildpackName := registryConfig .RepoName ("nested-level-2-buildpack-" + h .RandString (8 ))
2459
2507
simpleLayersBuildpackName := registryConfig .RepoName ("simple-layers-buildpack-" + h .RandString (8 ))
2508
+ simpleLayersBuildpackDifferentShaName := registryConfig .RepoName ("simple-layers-buildpack-different-name-" + h .RandString (8 ))
2460
2509
2461
2510
templateMapping ["package_id" ] = "simple/nested-level-1"
2462
2511
templateMapping ["package_image_name" ] = packageImageName
2463
2512
templateMapping ["nested_level_1_buildpack" ] = packageImageName
2464
2513
templateMapping ["nested_level_2_buildpack" ] = nestedLevelTwoBuildpackName
2465
2514
templateMapping ["simple_layers_buildpack" ] = simpleLayersBuildpackName
2515
+ templateMapping ["simple_layers_buildpack_different_sha" ] = simpleLayersBuildpackDifferentShaName
2466
2516
2467
2517
fixtureManager := pack .FixtureManager ()
2468
2518
@@ -2483,6 +2533,7 @@ func createComplexBuilder(t *testing.T,
2483
2533
nestedLevelTwoConfigFile ,
2484
2534
templateMapping ,
2485
2535
)
2536
+
2486
2537
err = nestedLevelTwoConfigFile .Close ()
2487
2538
assert .Nil (err )
2488
2539
@@ -2512,11 +2563,20 @@ func createComplexBuilder(t *testing.T,
2512
2563
),
2513
2564
)
2514
2565
2515
- defer imageManager .CleanupImages (packageImageName , nestedLevelTwoBuildpackName , simpleLayersBuildpackName )
2566
+ simpleLayersDifferentShaBuildpack := buildpacks .NewPackageImage (
2567
+ t ,
2568
+ pack ,
2569
+ simpleLayersBuildpackDifferentShaName ,
2570
+ fixtureManager .FixtureLocation ("simple-layers-buildpack-different-sha_package.toml" ),
2571
+ buildpacks .WithRequiredBuildpacks (buildpacks .SimpleLayersDifferentSha ),
2572
+ )
2573
+
2574
+ defer imageManager .CleanupImages (packageImageName , nestedLevelTwoBuildpackName , simpleLayersBuildpackName , simpleLayersBuildpackDifferentShaName )
2516
2575
2517
2576
builderBuildpacks = append (
2518
2577
builderBuildpacks ,
2519
2578
packageImageBuildpack ,
2579
+ simpleLayersDifferentShaBuildpack ,
2520
2580
)
2521
2581
2522
2582
buildpackManager .PrepareBuildpacks (tmpDir , builderBuildpacks ... )
0 commit comments