github.com/YousefHaggyHeroku/pack@v1.5.5/internal/fakes/fake_images.go (about) 1 package fakes 2 3 import ( 4 "bytes" 5 "fmt" 6 "path/filepath" 7 "testing" 8 9 "github.com/BurntSushi/toml" 10 "github.com/buildpacks/imgutil" 11 "github.com/buildpacks/imgutil/fakes" 12 13 "github.com/YousefHaggyHeroku/pack/internal/archive" 14 "github.com/YousefHaggyHeroku/pack/internal/builder" 15 "github.com/YousefHaggyHeroku/pack/internal/dist" 16 h "github.com/YousefHaggyHeroku/pack/testhelpers" 17 ) 18 19 type FakeImageCreator func(name string, topLayerSha string, identifier imgutil.Identifier) *fakes.Image 20 21 func NewFakeBuilderImage(t *testing.T, tmpDir, name string, stackID, uid, gid string, metadata builder.Metadata, bpLayers dist.BuildpackLayers, order dist.Order, creator FakeImageCreator) *fakes.Image { 22 fakeBuilderImage := creator(name, "", nil) 23 24 h.AssertNil(t, fakeBuilderImage.SetLabel("io.buildpacks.stack.id", stackID)) 25 h.AssertNil(t, fakeBuilderImage.SetEnv("CNB_USER_ID", uid)) 26 h.AssertNil(t, fakeBuilderImage.SetEnv("CNB_GROUP_ID", gid)) 27 28 h.AssertNil(t, dist.SetLabel(fakeBuilderImage, "io.buildpacks.builder.metadata", metadata)) 29 h.AssertNil(t, dist.SetLabel(fakeBuilderImage, "io.buildpacks.buildpack.layers", bpLayers)) 30 31 for bpID, v := range bpLayers { 32 for bpVersion, bpLayerInfo := range v { 33 bpInfo := dist.BuildpackInfo{ 34 ID: bpID, 35 Version: bpVersion, 36 } 37 38 buildpackDescriptor := dist.BuildpackDescriptor{ 39 API: bpLayerInfo.API, 40 Info: bpInfo, 41 Stacks: bpLayerInfo.Stacks, 42 Order: bpLayerInfo.Order, 43 } 44 45 buildpackTar := CreateBuildpackTar(t, tmpDir, buildpackDescriptor) 46 err := fakeBuilderImage.AddLayer(buildpackTar) 47 h.AssertNil(t, err) 48 } 49 } 50 51 h.AssertNil(t, dist.SetLabel(fakeBuilderImage, "io.buildpacks.buildpack.order", order)) 52 53 tarBuilder := archive.TarBuilder{} 54 orderTomlBytes := &bytes.Buffer{} 55 h.AssertNil(t, toml.NewEncoder(orderTomlBytes).Encode(orderTOML{Order: order})) 56 tarBuilder.AddFile("/cnb/order.toml", 0777, archive.NormalizedDateTime, orderTomlBytes.Bytes()) 57 58 orderTar := filepath.Join(tmpDir, fmt.Sprintf("order.%s.toml", h.RandString(8))) 59 h.AssertNil(t, tarBuilder.WriteToPath(orderTar, archive.DefaultTarWriterFactory())) 60 h.AssertNil(t, fakeBuilderImage.AddLayer(orderTar)) 61 62 return fakeBuilderImage 63 } 64 65 type orderTOML struct { 66 Order dist.Order `toml:"order"` 67 }