Skip to content

Commit

Permalink
Fixes packaging and integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryan Moran authored and ryanmoran committed Jul 9, 2020
1 parent c1e0eba commit c329be7
Show file tree
Hide file tree
Showing 10 changed files with 96 additions and 98 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
.idea
.bin
/bin
/build
4 changes: 4 additions & 0 deletions integration.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"build-plan": "github.com/ForestEckhardt/build-plan",
"mri": "github.com/paketo-community/mri"
}
11 changes: 6 additions & 5 deletions integration/buildpack_yml_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ func testBuildpackYML(t *testing.T, context spec.G, it spec.S) {
var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithNoPull().
WithBuildpacks(mriBuildpack, bundlerBuildpack, buildPlanBuildpack).
WithBuildpacks(
settings.Buildpacks.MRI.Online,
settings.Buildpacks.Bundler.Online,
settings.Buildpacks.BuildPlan.Online,
).
Execute(name, source)
Expect(err).ToNot(HaveOccurred(), logs.String)

Expand All @@ -82,11 +86,8 @@ func testBuildpackYML(t *testing.T, context spec.G, it spec.S) {
Expect(string(content)).To(ContainSubstring("/layers/paketo-community_mri/mri/bin/ruby"))
Expect(string(content)).To(MatchRegexp(`ruby 2\.7\.\d+`))

buildpackVersion, err := GetGitVersion()
Expect(err).ToNot(HaveOccurred())

Expect(logs).To(ContainLines(
fmt.Sprintf("Bundler Buildpack %s", buildpackVersion),
"Bundler Buildpack 1.2.3",
" Resolving Bundler version",
" Candidate version sources (in priority order):",
" buildpack.yml -> \"1.17.x\"",
Expand Down
11 changes: 6 additions & 5 deletions integration/default_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ func testDefault(t *testing.T, context spec.G, it spec.S) {
var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithNoPull().
WithBuildpacks(mriBuildpack, bundlerBuildpack, buildPlanBuildpack).
WithBuildpacks(
settings.Buildpacks.MRI.Online,
settings.Buildpacks.Bundler.Online,
settings.Buildpacks.BuildPlan.Online,
).
Execute(name, source)
Expect(err).ToNot(HaveOccurred(), logs.String)

Expand All @@ -82,11 +86,8 @@ func testDefault(t *testing.T, context spec.G, it spec.S) {
Expect(string(content)).To(ContainSubstring("/layers/paketo-community_mri/mri/bin/ruby"))
Expect(string(content)).To(MatchRegexp(`ruby 2\.6\.\d+`))

buildpackVersion, err := GetGitVersion()
Expect(err).ToNot(HaveOccurred())

Expect(logs).To(ContainLines(
fmt.Sprintf("Bundler Buildpack %s", buildpackVersion),
"Bundler Buildpack 1.2.3",
" Resolving Bundler version",
" Candidate version sources (in priority order):",
" <unknown> -> \"*\"",
Expand Down
11 changes: 6 additions & 5 deletions integration/gemfile_lock_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ func testGemfileLock(t *testing.T, context spec.G, it spec.S) {
var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithNoPull().
WithBuildpacks(mriBuildpack, bundlerBuildpack, buildPlanBuildpack).
WithBuildpacks(
settings.Buildpacks.MRI.Online,
settings.Buildpacks.Bundler.Online,
settings.Buildpacks.BuildPlan.Online,
).
Execute(name, source)
Expect(err).ToNot(HaveOccurred(), logs.String)

Expand All @@ -82,11 +86,8 @@ func testGemfileLock(t *testing.T, context spec.G, it spec.S) {
Expect(string(content)).To(ContainSubstring("/layers/paketo-community_mri/mri/bin/ruby"))
Expect(string(content)).To(MatchRegexp(`ruby 2\.7\.\d+`))

buildpackVersion, err := GetGitVersion()
Expect(err).ToNot(HaveOccurred())

Expect(logs).To(ContainLines(
fmt.Sprintf("Bundler Buildpack %s", buildpackVersion),
"Bundler Buildpack 1.2.3",
" Resolving Bundler version",
" Candidate version sources (in priority order):",
" Gemfile.lock -> \"1.17.3\"",
Expand Down
111 changes: 46 additions & 65 deletions integration/init_test.go
Original file line number Diff line number Diff line change
@@ -1,57 +1,78 @@
package integration

import (
"bytes"
"fmt"
"strings"
"encoding/json"
"os"
"path/filepath"
"testing"
"time"

"github.com/cloudfoundry/dagger"
"github.com/paketo-buildpacks/packit/pexec"
"github.com/paketo-buildpacks/occam"
"github.com/sclevine/spec"
"github.com/sclevine/spec/report"

. "github.com/onsi/gomega"
)

var (
mriBuildpack string
offlineMRIBuildpack string
bundlerBuildpack string
offlineBundlerBuildpack string
buildPlanBuildpack string
)
var settings struct {
Buildpacks struct {
Bundler struct {
Online string
Offline string
}
BuildPlan struct {
Online string
}
MRI struct {
Online string
Offline string
}
}

Config struct {
BuildPlan string `json:"build-plan"`
MRI string `json:"mri"`
}
}

func TestIntegration(t *testing.T) {
Expect := NewWithT(t).Expect

root, err := dagger.FindBPRoot()
root, err := filepath.Abs("./..")
Expect(err).ToNot(HaveOccurred())

bundlerBuildpack, err = dagger.PackageBuildpack(root)
file, err := os.Open("../integration.json")
Expect(err).NotTo(HaveOccurred())

offlineBundlerBuildpack, _, err = dagger.PackageCachedBuildpack(root)
Expect(json.NewDecoder(file).Decode(&settings.Config)).To(Succeed())
Expect(file.Close()).To(Succeed())

buildpackStore := occam.NewBuildpackStore()

settings.Buildpacks.Bundler.Online, err = buildpackStore.Get.
WithVersion("1.2.3").
Execute(root)
Expect(err).NotTo(HaveOccurred())

buildPlanBuildpack, err = dagger.GetLatestCommunityBuildpack("ForestEckhardt", "build-plan")
Expect(err).ToNot(HaveOccurred())
settings.Buildpacks.Bundler.Offline, err = buildpackStore.Get.
WithVersion("1.2.3").
WithOfflineDependencies().
Execute(root)
Expect(err).NotTo(HaveOccurred())

mriBuildpack, err = dagger.GetLatestCommunityBuildpack("paketo-community", "mri")
settings.Buildpacks.BuildPlan.Online, err = buildpackStore.Get.
Execute(settings.Config.BuildPlan)
Expect(err).ToNot(HaveOccurred())

mriSource, err := dagger.GetLatestUnpackagedCommunityBuildpack("paketo-community", "mri")
settings.Buildpacks.MRI.Online, err = buildpackStore.Get.
Execute(settings.Config.MRI)
Expect(err).ToNot(HaveOccurred())

offlineMRIBuildpack, _, err = dagger.PackageCachedBuildpack(mriSource)
settings.Buildpacks.MRI.Offline, err = buildpackStore.Get.
WithOfflineDependencies().
Execute(settings.Config.MRI)
Expect(err).ToNot(HaveOccurred())

// HACK: we need to fix dagger and the package.sh scripts so that this isn't required
bundlerBuildpack = fmt.Sprintf("%s.tgz", bundlerBuildpack)
offlineBundlerBuildpack = fmt.Sprintf("%s.tgz", offlineBundlerBuildpack)
offlineMRIBuildpack = fmt.Sprintf("%s.tgz", offlineMRIBuildpack)

SetDefaultEventuallyTimeout(10 * time.Second)

suite := spec.New("Integration", spec.Report(report.Terminal{}), spec.Parallel())
Expand All @@ -62,45 +83,5 @@ func TestIntegration(t *testing.T) {
suite("Offline", testOffline)
suite("ReusingLayerRebuild", testReusingLayerRebuild)

defer AfterSuite(t)
suite.Run(t)
}

func AfterSuite(t *testing.T) {
var Expect = NewWithT(t).Expect

Expect(dagger.DeleteBuildpack(mriBuildpack)).To(Succeed())
Expect(dagger.DeleteBuildpack(offlineMRIBuildpack)).To(Succeed())
Expect(dagger.DeleteBuildpack(bundlerBuildpack)).To(Succeed())
Expect(dagger.DeleteBuildpack(offlineBundlerBuildpack)).To(Succeed())
Expect(dagger.DeleteBuildpack(buildPlanBuildpack)).To(Succeed())
}

func GetGitVersion() (string, error) {
gitExec := pexec.NewExecutable("git")
revListOut := bytes.NewBuffer(nil)

err := gitExec.Execute(pexec.Execution{
Args: []string{"rev-list", "--tags", "--max-count=1"},
Stdout: revListOut,
})

if revListOut.String() == "" {
return "0.0.0", nil
}

if err != nil {
return "", err
}

stdout := bytes.NewBuffer(nil)
err = gitExec.Execute(pexec.Execution{
Args: []string{"describe", "--tags", strings.TrimSpace(revListOut.String())},
Stdout: stdout,
})
if err != nil {
return "", err
}

return strings.TrimSpace(strings.TrimPrefix(stdout.String(), "v")), nil
}
11 changes: 6 additions & 5 deletions integration/logging_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,16 @@ func testLogging(t *testing.T, context spec.G, it spec.S) {
var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithNoPull().
WithBuildpacks(mriBuildpack, bundlerBuildpack, buildPlanBuildpack).
WithBuildpacks(
settings.Buildpacks.MRI.Online,
settings.Buildpacks.Bundler.Online,
settings.Buildpacks.BuildPlan.Online,
).
Execute(name, source)
Expect(err).ToNot(HaveOccurred(), logs.String)

buildpackVersion, err := GetGitVersion()
Expect(err).ToNot(HaveOccurred())

Expect(logs).To(ContainLines(
fmt.Sprintf("Bundler Buildpack %s", buildpackVersion),
"Bundler Buildpack 1.2.3",
" Resolving Bundler version",
" Candidate version sources (in priority order):",
" <unknown> -> \"*\"",
Expand Down
6 changes: 5 additions & 1 deletion integration/offline_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,11 @@ func testOffline(t *testing.T, context spec.G, it spec.S) {
var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithNoPull().
WithBuildpacks(offlineMRIBuildpack, offlineBundlerBuildpack, buildPlanBuildpack).
WithBuildpacks(
settings.Buildpacks.MRI.Offline,
settings.Buildpacks.Bundler.Offline,
settings.Buildpacks.BuildPlan.Online,
).
WithNetwork("none").
Execute(name, source)
Expect(err).NotTo(HaveOccurred(), logs.String())
Expand Down
26 changes: 14 additions & 12 deletions integration/reuse_layer_rebuild_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,11 @@ func testReusingLayerRebuild(t *testing.T, context spec.G, it spec.S) {

build := pack.WithNoColor().Build.
WithNoPull().
WithBuildpacks(mriBuildpack, bundlerBuildpack, buildPlanBuildpack)
WithBuildpacks(
settings.Buildpacks.MRI.Online,
settings.Buildpacks.Bundler.Online,
settings.Buildpacks.BuildPlan.Online,
)

firstImage, logs, err = build.Execute(name, source)
Expect(err).NotTo(HaveOccurred())
Expand All @@ -86,11 +90,8 @@ func testReusingLayerRebuild(t *testing.T, context spec.G, it spec.S) {
Expect(firstImage.Buildpacks[1].Key).To(Equal("paketo-community/bundler"))
Expect(firstImage.Buildpacks[1].Layers).To(HaveKey("bundler"))

buildpackVersion, err := GetGitVersion()
Expect(err).ToNot(HaveOccurred())

Expect(logs).To(ContainLines(
fmt.Sprintf("Bundler Buildpack %s", buildpackVersion),
"Bundler Buildpack 1.2.3",
" Resolving Bundler version",
" Candidate version sources (in priority order):",
" <unknown> -> \"*\"",
Expand Down Expand Up @@ -126,7 +127,7 @@ func testReusingLayerRebuild(t *testing.T, context spec.G, it spec.S) {
Expect(secondImage.Buildpacks[1].Layers).To(HaveKey("bundler"))

Expect(logs).To(ContainLines(
fmt.Sprintf("Bundler Buildpack %s", buildpackVersion),
"Bundler Buildpack 1.2.3",
" Resolving Bundler version",
" Candidate version sources (in priority order):",
" <unknown> -> \"*\"",
Expand Down Expand Up @@ -177,7 +178,11 @@ func testReusingLayerRebuild(t *testing.T, context spec.G, it spec.S) {

build := pack.WithNoColor().Build.
WithNoPull().
WithBuildpacks(mriBuildpack, bundlerBuildpack, buildPlanBuildpack)
WithBuildpacks(
settings.Buildpacks.MRI.Online,
settings.Buildpacks.Bundler.Online,
settings.Buildpacks.BuildPlan.Online,
)

firstImage, logs, err = build.Execute(name, source)
Expect(err).NotTo(HaveOccurred())
Expand All @@ -190,11 +195,8 @@ func testReusingLayerRebuild(t *testing.T, context spec.G, it spec.S) {
Expect(firstImage.Buildpacks[1].Key).To(Equal("paketo-community/bundler"))
Expect(firstImage.Buildpacks[1].Layers).To(HaveKey("bundler"))

buildpackVersion, err := GetGitVersion()
Expect(err).ToNot(HaveOccurred())

Expect(logs).To(ContainLines(
fmt.Sprintf("Bundler Buildpack %s", buildpackVersion),
"Bundler Buildpack 1.2.3",
" Resolving Bundler version",
" Candidate version sources (in priority order):",
" Gemfile.lock -> \"1.17.3\"",
Expand Down Expand Up @@ -237,7 +239,7 @@ func testReusingLayerRebuild(t *testing.T, context spec.G, it spec.S) {
Expect(secondImage.Buildpacks[1].Layers).To(HaveKey("bundler"))

Expect(logs).To(ContainLines(
fmt.Sprintf("Bundler Buildpack %s", buildpackVersion),
"Bundler Buildpack 1.2.3",
" Resolving Bundler version",
" Candidate version sources (in priority order):",
" Gemfile.lock -> \"2.1.4\"",
Expand Down
2 changes: 2 additions & 0 deletions package.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[buildpack]
uri = "build/buildpack.tgz"

0 comments on commit c329be7

Please sign in to comment.