From 534078255b2330a6fd684a96a1bdf238a28e9b3a Mon Sep 17 00:00:00 2001 From: Daniel Mikusa Date: Mon, 27 Sep 2021 22:06:12 -0400 Subject: [PATCH] Do not assume buildpack id ends with `-buildpacks` The package id regular expression assumes that the package ID will be `-buildpacks/`. This works for `paketo-buildpacks/` and `tanzu-buildpacks/`. It does not work for the `paketocommunity`. This commit modifes the regular expression to permit anything in the form `/`, which matches previous patterns plus `paketocommunity/` as well. Signed-off-by: Daniel Mikusa --- carton/package_dependency.go | 2 +- carton/package_dependency_test.go | 44 +++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/carton/package_dependency.go b/carton/package_dependency.go index b8874c1..1099f32 100644 --- a/carton/package_dependency.go +++ b/carton/package_dependency.go @@ -28,7 +28,7 @@ import ( ) const ( - PackageIdDependencyPattern = `(?m)(.*id[\s]+=[\s]+".+-buildpacks/%s",[\s]+version=")[^"]+(".*)` + PackageIdDependencyPattern = `(?m)(.*id[\s]+=[\s]+".+/%s",[\s]+version=")[^"]+(".*)` PackageImageDependencyPattern = `(?m)(.*uri[\s]+=[\s]+".*%s:)[^"]+(".*)` PackageDependencySubstitution = "${1}%s${2}" ) diff --git a/carton/package_dependency_test.go b/carton/package_dependency_test.go index 4db59f5..fa1aac1 100644 --- a/carton/package_dependency_test.go +++ b/carton/package_dependency_test.go @@ -53,7 +53,7 @@ func testPackageDependency(t *testing.T, context spec.G, it spec.S) { Expect(os.RemoveAll(path)).To(Succeed()) }) - it("updates buildpack dependency", func() { + it("updates paketo-buildpacks dependency", func() { Expect(ioutil.WriteFile(path, []byte(` { id = "paketo-buildpacks/test-1", version="test-version-1" }, { id = "paketo-buildpacks/test-2", version="test-version-2" }, @@ -73,6 +73,26 @@ func testPackageDependency(t *testing.T, context spec.G, it spec.S) { `))) }) + it("updates paketocommunity dependency", func() { + Expect(ioutil.WriteFile(path, []byte(` +{ id = "paketocommunity/test-1", version="test-version-1" }, +{ id = "paketocommunity/test-2", version="test-version-2" }, +`), 0644)).To(Succeed()) + + p := carton.PackageDependency{ + BuildpackPath: path, + ID: "docker.io/paketocommunity/test-1", + Version: "test-version-3", + } + + p.Update(carton.WithExitHandler(exitHandler)) + + Expect(ioutil.ReadFile(path)).To(Equal([]byte(` +{ id = "paketocommunity/test-1", version="test-version-3" }, +{ id = "paketocommunity/test-2", version="test-version-2" }, +`))) + }) + it("updates builder dependency", func() { Expect(ioutil.WriteFile(path, []byte(` { id = "paketo-buildpacks/test-1", uri = "docker://gcr.io/paketo-buildpacks/test-1:test-version-1" }, @@ -93,7 +113,7 @@ func testPackageDependency(t *testing.T, context spec.G, it spec.S) { `))) }) - it("updates package dependency", func() { + it("updates paketo-buildpacks package dependency", func() { Expect(ioutil.WriteFile(path, []byte(` { uri = "docker://gcr.io/paketo-buildpacks/test-1:test-version-1" }, { uri = "docker://gcr.io/paketo-buildpacks/test-2:test-version-2" }, @@ -110,6 +130,26 @@ func testPackageDependency(t *testing.T, context spec.G, it spec.S) { Expect(ioutil.ReadFile(path)).To(Equal([]byte(` { uri = "docker://gcr.io/paketo-buildpacks/test-1:test-version-3" }, { uri = "docker://gcr.io/paketo-buildpacks/test-2:test-version-2" }, +`))) + }) + + it("updates paketocommunity package dependency", func() { + Expect(ioutil.WriteFile(path, []byte(` +{ uri = "docker://docker.io/paketocommunity/test-1:test-version-1" }, +{ uri = "docker://docker.io/paketocommunity/test-2:test-version-2" }, +`), 0644)).To(Succeed()) + + p := carton.PackageDependency{ + PackagePath: path, + ID: "docker.io/paketocommunity/test-1", + Version: "test-version-3", + } + + p.Update(carton.WithExitHandler(exitHandler)) + + Expect(ioutil.ReadFile(path)).To(Equal([]byte(` +{ uri = "docker://docker.io/paketocommunity/test-1:test-version-3" }, +{ uri = "docker://docker.io/paketocommunity/test-2:test-version-2" }, `))) })