From 2adf8a0dab9fc5aa85ca4bace4ec8f7da362e40c Mon Sep 17 00:00:00 2001 From: Joshua Casey Date: Mon, 2 May 2022 17:23:49 -0500 Subject: [PATCH] Use draft.Planner from packit directly --- build.go | 16 ++++------- build_test.go | 37 +++++------------------- fakes/entry_resolver.go | 64 ----------------------------------------- run/main.go | 2 -- 4 files changed, 12 insertions(+), 107 deletions(-) delete mode 100644 fakes/entry_resolver.go diff --git a/build.go b/build.go index 56ab1909..5895c8ab 100644 --- a/build.go +++ b/build.go @@ -9,24 +9,17 @@ import ( "github.com/paketo-buildpacks/packit/v2" "github.com/paketo-buildpacks/packit/v2/chronos" + "github.com/paketo-buildpacks/packit/v2/draft" "github.com/paketo-buildpacks/packit/v2/postal" "github.com/paketo-buildpacks/packit/v2/sbom" "github.com/paketo-buildpacks/packit/v2/scribe" ) -//go:generate faux --interface EntryResolver --output fakes/entry_resolver.go //go:generate faux --interface DependencyManager --output fakes/dependency_manager.go //go:generate faux --interface InstallProcess --output fakes/install_process.go //go:generate faux --interface SitePackageProcess --output fakes/site_package_process.go //go:generate faux --interface SBOMGenerator --output fakes/sbom_generator.go -// EntryResolver defines the interface for picking the most relevant entry from -// the Buildpack Plan entries. -type EntryResolver interface { - Resolve(string, []packit.BuildpackPlanEntry, []interface{}) (packit.BuildpackPlanEntry, []packit.BuildpackPlanEntry) - MergeLayerTypes(string, []packit.BuildpackPlanEntry) (launch, build bool) -} - // DependencyManager defines the interface for picking the best matching // dependency and installing it. type DependencyManager interface { @@ -56,7 +49,6 @@ type SBOMGenerator interface { // layer, and generate Bill-of-Materials. It also makes use of the checksum of // the dependency to reuse the layer when possible. func Build( - entries EntryResolver, dependencies DependencyManager, installProcess InstallProcess, siteProcess SitePackageProcess, @@ -67,8 +59,10 @@ func Build( return func(context packit.BuildContext) (packit.BuildResult, error) { logger.Title("%s %s", context.BuildpackInfo.Name, context.BuildpackInfo.Version) + planner := draft.NewPlanner() + logger.Process("Resolving Pip version") - entry, sortedEntries := entries.Resolve(Pip, context.Plan.Entries, Priorities) + entry, sortedEntries := planner.Resolve(Pip, context.Plan.Entries, Priorities) logger.Candidates(sortedEntries) version, _ := entry.Metadata["version"].(string) @@ -82,7 +76,7 @@ func Build( logger.SelectedDependency(entry, dependency, clock.Now()) legacySBOM := dependencies.GenerateBillOfMaterials(dependency) - launch, build := entries.MergeLayerTypes(Pip, context.Plan.Entries) + launch, build := planner.MergeLayerTypes(Pip, context.Plan.Entries) var launchMetadata packit.LaunchMetadata if launch { diff --git a/build_test.go b/build_test.go index 0be98a4c..3b68b822 100644 --- a/build_test.go +++ b/build_test.go @@ -16,7 +16,7 @@ import ( "github.com/paketo-buildpacks/packit/v2/postal" "github.com/paketo-buildpacks/packit/v2/sbom" "github.com/paketo-buildpacks/packit/v2/scribe" - pip "github.com/paketo-buildpacks/pip" + "github.com/paketo-buildpacks/pip" "github.com/paketo-buildpacks/pip/fakes" "github.com/sclevine/spec" @@ -30,7 +30,6 @@ func testBuild(t *testing.T, context spec.G, it spec.S) { layersDir string cnbDir string - entryResolver *fakes.EntryResolver dependencyManager *fakes.DependencyManager installProcess *fakes.InstallProcess sitePackageProcess *fakes.SitePackageProcess @@ -52,11 +51,6 @@ func testBuild(t *testing.T, context spec.G, it spec.S) { cnbDir, err = os.MkdirTemp("", "cnb") Expect(err).NotTo(HaveOccurred()) - entryResolver = &fakes.EntryResolver{} - entryResolver.ResolveCall.Returns.BuildpackPlanEntry = packit.BuildpackPlanEntry{ - Name: "pip", - } - dependencyManager = &fakes.DependencyManager{} dependencyManager.ResolveCall.Returns.Dependency = postal.Dependency{ ID: "pip", @@ -102,7 +96,6 @@ func testBuild(t *testing.T, context spec.G, it spec.S) { logEmitter = scribe.NewEmitter(buffer) build = pip.Build( - entryResolver, dependencyManager, installProcess, sitePackageProcess, @@ -173,24 +166,6 @@ func testBuild(t *testing.T, context spec.G, it spec.S) { }, })) - Expect(entryResolver.ResolveCall.Receives.String).To(Equal("pip")) - Expect(entryResolver.ResolveCall.Receives.BuildpackPlanEntrySlice).To(Equal([]packit.BuildpackPlanEntry{ - { - Name: "pip", - }, - })) - - Expect(entryResolver.ResolveCall.Receives.InterfaceSlice).To(Equal([]interface{}{"BP_PIP_VERSION"})) - - Expect(entryResolver.MergeLayerTypesCall.Receives.String).To(Equal("pip")) - Expect(entryResolver.MergeLayerTypesCall.Receives.BuildpackPlanEntrySlice).To(Equal( - []packit.BuildpackPlanEntry{ - { - Name: "pip", - }, - }, - )) - Expect(dependencyManager.ResolveCall.Receives.Path).To(Equal(filepath.Join(cnbDir, "buildpack.toml"))) Expect(dependencyManager.ResolveCall.Receives.Id).To(Equal("pip")) Expect(dependencyManager.ResolveCall.Receives.Version).To(Equal("")) @@ -222,8 +197,9 @@ func testBuild(t *testing.T, context spec.G, it spec.S) { context("when build plan entries require pip at build/launch", func() { it.Before(func() { - entryResolver.MergeLayerTypesCall.Returns.Build = true - entryResolver.MergeLayerTypesCall.Returns.Launch = true + buildContext.Plan.Entries[0].Metadata = make(map[string]interface{}) + buildContext.Plan.Entries[0].Metadata["build"] = true + buildContext.Plan.Entries[0].Metadata["launch"] = true }) it("makes the layer available at the right times", func() { @@ -281,8 +257,9 @@ func testBuild(t *testing.T, context spec.G, it spec.S) { `, pip.DependencySHAKey)), os.ModePerm) Expect(err).NotTo(HaveOccurred()) - entryResolver.MergeLayerTypesCall.Returns.Build = true - entryResolver.MergeLayerTypesCall.Returns.Launch = false + buildContext.Plan.Entries[0].Metadata = make(map[string]interface{}) + buildContext.Plan.Entries[0].Metadata["build"] = true + buildContext.Plan.Entries[0].Metadata["launch"] = false }) it("skips the build process if the cached dependency sha matches the selected dependency sha", func() { diff --git a/fakes/entry_resolver.go b/fakes/entry_resolver.go deleted file mode 100644 index 991aef7f..00000000 --- a/fakes/entry_resolver.go +++ /dev/null @@ -1,64 +0,0 @@ -package fakes - -import ( - "sync" - - packit "github.com/paketo-buildpacks/packit/v2" -) - -type EntryResolver struct { - MergeLayerTypesCall struct { - mutex sync.Mutex - CallCount int - Receives struct { - String string - BuildpackPlanEntrySlice []packit.BuildpackPlanEntry - } - Returns struct { - Launch bool - Build bool - } - Stub func(string, []packit.BuildpackPlanEntry) (bool, bool) - } - ResolveCall struct { - mutex sync.Mutex - CallCount int - Receives struct { - String string - BuildpackPlanEntrySlice []packit.BuildpackPlanEntry - InterfaceSlice []interface { - } - } - Returns struct { - BuildpackPlanEntry packit.BuildpackPlanEntry - BuildpackPlanEntrySlice []packit.BuildpackPlanEntry - } - Stub func(string, []packit.BuildpackPlanEntry, []interface { - }) (packit.BuildpackPlanEntry, []packit.BuildpackPlanEntry) - } -} - -func (f *EntryResolver) MergeLayerTypes(param1 string, param2 []packit.BuildpackPlanEntry) (bool, bool) { - f.MergeLayerTypesCall.mutex.Lock() - defer f.MergeLayerTypesCall.mutex.Unlock() - f.MergeLayerTypesCall.CallCount++ - f.MergeLayerTypesCall.Receives.String = param1 - f.MergeLayerTypesCall.Receives.BuildpackPlanEntrySlice = param2 - if f.MergeLayerTypesCall.Stub != nil { - return f.MergeLayerTypesCall.Stub(param1, param2) - } - return f.MergeLayerTypesCall.Returns.Launch, f.MergeLayerTypesCall.Returns.Build -} -func (f *EntryResolver) Resolve(param1 string, param2 []packit.BuildpackPlanEntry, param3 []interface { -}) (packit.BuildpackPlanEntry, []packit.BuildpackPlanEntry) { - f.ResolveCall.mutex.Lock() - defer f.ResolveCall.mutex.Unlock() - f.ResolveCall.CallCount++ - f.ResolveCall.Receives.String = param1 - f.ResolveCall.Receives.BuildpackPlanEntrySlice = param2 - f.ResolveCall.Receives.InterfaceSlice = param3 - if f.ResolveCall.Stub != nil { - return f.ResolveCall.Stub(param1, param2, param3) - } - return f.ResolveCall.Returns.BuildpackPlanEntry, f.ResolveCall.Returns.BuildpackPlanEntrySlice -} diff --git a/run/main.go b/run/main.go index 78afbcc3..b7426d3f 100644 --- a/run/main.go +++ b/run/main.go @@ -6,7 +6,6 @@ import ( "github.com/paketo-buildpacks/packit/v2" "github.com/paketo-buildpacks/packit/v2/cargo" "github.com/paketo-buildpacks/packit/v2/chronos" - "github.com/paketo-buildpacks/packit/v2/draft" "github.com/paketo-buildpacks/packit/v2/pexec" "github.com/paketo-buildpacks/packit/v2/postal" "github.com/paketo-buildpacks/packit/v2/sbom" @@ -26,7 +25,6 @@ func main() { packit.Run( pip.Detect(), pip.Build( - draft.NewPlanner(), postal.NewService(cargo.NewTransport()), pip.NewPipInstallProcess(pexec.NewExecutable("python")), pip.NewSiteProcess(pexec.NewExecutable("python")),