@@ -704,6 +704,53 @@ func testAcceptance(
704704 builderName = value
705705 })
706706
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+
707754 when ("builder.toml is invalid" , func () {
708755 it ("displays an error" , func () {
709756 builderConfigPath := createBuilderPack .FixtureManager ().FixtureLocation ("invalid_builder.toml" )
@@ -1941,6 +1988,7 @@ include = [ "*.jar", "media/mountain.jpg", "/media/person.png", ]
19411988 it .Before (func () {
19421989 // create our nested builder
19431990 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" )
19441992
19451993 // create a task, handled by a 'task manager' which executes our pack commands during tests.
19461994 // looks like this is used to de-dup tasks
@@ -2457,12 +2505,14 @@ func createComplexBuilder(t *testing.T,
24572505 packageImageName := registryConfig .RepoName ("nested-level-1-buildpack-" + h .RandString (8 ))
24582506 nestedLevelTwoBuildpackName := registryConfig .RepoName ("nested-level-2-buildpack-" + h .RandString (8 ))
24592507 simpleLayersBuildpackName := registryConfig .RepoName ("simple-layers-buildpack-" + h .RandString (8 ))
2508+ simpleLayersBuildpackDifferentShaName := registryConfig .RepoName ("simple-layers-buildpack-different-name-" + h .RandString (8 ))
24602509
24612510 templateMapping ["package_id" ] = "simple/nested-level-1"
24622511 templateMapping ["package_image_name" ] = packageImageName
24632512 templateMapping ["nested_level_1_buildpack" ] = packageImageName
24642513 templateMapping ["nested_level_2_buildpack" ] = nestedLevelTwoBuildpackName
24652514 templateMapping ["simple_layers_buildpack" ] = simpleLayersBuildpackName
2515+ templateMapping ["simple_layers_buildpack_different_sha" ] = simpleLayersBuildpackDifferentShaName
24662516
24672517 fixtureManager := pack .FixtureManager ()
24682518
@@ -2483,6 +2533,7 @@ func createComplexBuilder(t *testing.T,
24832533 nestedLevelTwoConfigFile ,
24842534 templateMapping ,
24852535 )
2536+
24862537 err = nestedLevelTwoConfigFile .Close ()
24872538 assert .Nil (err )
24882539
@@ -2512,11 +2563,20 @@ func createComplexBuilder(t *testing.T,
25122563 ),
25132564 )
25142565
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 )
25162575
25172576 builderBuildpacks = append (
25182577 builderBuildpacks ,
25192578 packageImageBuildpack ,
2579+ simpleLayersDifferentShaBuildpack ,
25202580 )
25212581
25222582 buildpackManager .PrepareBuildpacks (tmpDir , builderBuildpacks ... )
0 commit comments