Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions integration/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@

package integration_helpers

import (
"errors"
"fmt"
"testing"

"github.com/paketo-buildpacks/occam"
)

type Buildpack struct {
ID string
Name string
Expand Down Expand Up @@ -58,3 +66,34 @@ func DependenciesForId(dependencies []Dependency, id string) []Dependency {

return output
}

func NewRetryBuild(t *testing.T, retry int) RetryBuild {
return RetryBuild{t, retry}
}

type RetryBuild struct {
t *testing.T
retry int
}

func (r *RetryBuild) Execute(packBuild occam.PackBuild, name string, source string) (occam.Image, fmt.Stringer, error) {
var image occam.Image
var logs fmt.Stringer
var errs error

for i := range r.retry + 1 {
if i > 0 {
r.t.Logf("Retry %v\n", i)
}
var err error
image, logs, err = packBuild.Execute(name, source)
if err == nil {
return image, logs, err
} else {
errs = errors.Join(errs, err)
r.t.Logf("Build failed: %v\n", err)
}
}

return image, logs, errs
}
20 changes: 14 additions & 6 deletions integration/installers/miniconda_default_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,17 @@ import (

. "github.com/onsi/gomega"
. "github.com/paketo-buildpacks/occam/matchers"

integration_helpers "github.com/paketo-buildpacks/python-installers/integration"
)

func minicondaTestDefault(t *testing.T, context spec.G, it spec.S) {
var (
Expect = NewWithT(t).Expect
Eventually = NewWithT(t).Eventually

retryBuild = integration_helpers.NewRetryBuild(t, 3)

pack occam.Pack
docker occam.Docker
)
Expand Down Expand Up @@ -64,13 +68,15 @@ func minicondaTestDefault(t *testing.T, context spec.G, it spec.S) {
err error
)

image, logs, err = pack.WithNoColor().Build.
image, logs, err = retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Online,
settings.Buildpacks.BuildPlan.Online,
).
Execute(name, source)
),
name,
source,
)
Expect(err).ToNot(HaveOccurred(), logs.String)

Expect(logs).To(ContainLines(
Expand Down Expand Up @@ -134,7 +140,7 @@ func minicondaTestDefault(t *testing.T, context spec.G, it spec.S) {
source, err = occam.Source(filepath.Join("testdata", "conda", "miniconda_app"))
Expect(err).NotTo(HaveOccurred())

image, logs, err = pack.WithNoColor().Build.
image, logs, err = retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Online,
Expand All @@ -143,8 +149,10 @@ func minicondaTestDefault(t *testing.T, context spec.G, it spec.S) {
WithEnv(map[string]string{
"BP_LOG_LEVEL": "DEBUG",
}).
WithSBOMOutputDir(sbomDir).
Execute(name, source)
WithSBOMOutputDir(sbomDir),
name,
source,
)
Expect(err).ToNot(HaveOccurred(), logs.String)

container, err = docker.Container.Run.
Expand Down
17 changes: 12 additions & 5 deletions integration/installers/miniconda_offline_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,19 @@ import (
"github.com/sclevine/spec"

. "github.com/onsi/gomega"

integration_helpers "github.com/paketo-buildpacks/python-installers/integration"
)

func minicondaTestOffline(t *testing.T, context spec.G, it spec.S) {
var (
Expect = NewWithT(t).Expect
Eventually = NewWithT(t).Eventually
pack occam.Pack
docker occam.Docker

retryBuild = integration_helpers.NewRetryBuild(t, 3)

pack occam.Pack
docker occam.Docker
)

it.Before(func() {
Expand Down Expand Up @@ -58,14 +63,16 @@ func minicondaTestOffline(t *testing.T, context spec.G, it spec.S) {
var err error

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
image, logs, err = retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Offline,
settings.Buildpacks.BuildPlan.Online,
).
WithNetwork("none").
Execute(name, source)
WithNetwork("none"),
name,
source,
)

Expect(err).NotTo(HaveOccurred(), logs.String())

Expand Down
34 changes: 22 additions & 12 deletions integration/installers/miniconda_reuse_layer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ func minicondaTestLayerReuse(t *testing.T, context spec.G, it spec.S) {
Expect = NewWithT(t).Expect
Eventually = NewWithT(t).Eventually

retryBuild = integration_helpers.NewRetryBuild(t, 3)

pack occam.Pack
docker occam.Docker

Expand Down Expand Up @@ -77,13 +79,15 @@ func minicondaTestLayerReuse(t *testing.T, context spec.G, it spec.S) {
secondContainer occam.Container
)

firstImage, logs, err = pack.WithNoColor().Build.
firstImage, logs, err = retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Online,
settings.Buildpacks.BuildPlan.Online,
).
Execute(name, source)
),
name,
source,
)
Expect(err).ToNot(HaveOccurred(), logs.String)

imageIDs[firstImage.ID] = struct{}{}
Expand All @@ -94,13 +98,15 @@ func minicondaTestLayerReuse(t *testing.T, context spec.G, it spec.S) {

containerIDs[firstContainer.ID] = struct{}{}

secondImage, logs, err = pack.WithNoColor().Build.
secondImage, logs, err = retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Online,
settings.Buildpacks.BuildPlan.Online,
).
Execute(name, source)
),
name,
source,
)
Expect(err).ToNot(HaveOccurred(), logs.String)

imageIDs[secondImage.ID] = struct{}{}
Expand Down Expand Up @@ -151,14 +157,16 @@ func minicondaTestLayerReuse(t *testing.T, context spec.G, it spec.S) {

dependencies := integration_helpers.DependenciesForId(buildpackInfo.Metadata.Dependencies, "miniconda3")

firstImage, logs, err = pack.WithNoColor().Build.
firstImage, logs, err = retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Online,
settings.Buildpacks.BuildPlan.Online,
).
WithEnv(map[string]string{"BP_MINICONDA_VERSION": dependencies[0].Version}).
Execute(name, source)
WithEnv(map[string]string{"BP_MINICONDA_VERSION": dependencies[0].Version}),
name,
source,
)
Expect(err).ToNot(HaveOccurred(), logs.String)

imageIDs[firstImage.ID] = struct{}{}
Expand All @@ -169,14 +177,16 @@ func minicondaTestLayerReuse(t *testing.T, context spec.G, it spec.S) {

containerIDs[firstContainer.ID] = struct{}{}

secondImage, logs, err = pack.WithNoColor().Build.
secondImage, logs, err = retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Online,
settings.Buildpacks.BuildPlan.Online,
).
WithEnv(map[string]string{"BP_MINICONDA_VERSION": dependencies[2].Version}).
Execute(name, source)
WithEnv(map[string]string{"BP_MINICONDA_VERSION": dependencies[2].Version}),
name,
source,
)
Expect(err).ToNot(HaveOccurred(), logs.String)

imageIDs[secondImage.ID] = struct{}{}
Expand Down
18 changes: 12 additions & 6 deletions integration/installers/miniconda_versions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ func minicondaTestVersions(t *testing.T, context spec.G, it spec.S) {
Expect = NewWithT(t).Expect
Eventually = NewWithT(t).Eventually

retryBuild = integration_helpers.NewRetryBuild(t, 3)

pack occam.Pack
docker occam.Docker
)
Expand Down Expand Up @@ -76,14 +78,16 @@ func minicondaTestVersions(t *testing.T, context spec.G, it spec.S) {

Expect(firstMinicondaVersion).NotTo(Equal(secondMinicondaVersion))

firstImage, firstLogs, err := pack.WithNoColor().Build.
firstImage, firstLogs, err := retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Online,
settings.Buildpacks.BuildPlan.Online,
).
WithEnv(map[string]string{miniconda.EnvVersion: firstMinicondaVersion}).
Execute(name, source)
WithEnv(map[string]string{miniconda.EnvVersion: firstMinicondaVersion}),
name,
source,
)
Expect(err).ToNot(HaveOccurred(), firstLogs.String)

imagesMap[firstImage.ID] = nil
Expand All @@ -105,14 +109,16 @@ func minicondaTestVersions(t *testing.T, context spec.G, it spec.S) {
return cLogs.String()
}).Should(ContainSubstring(fmt.Sprintf(`conda %s`, firstMinicondaVersion)))

secondImage, secondLogs, err := pack.WithNoColor().Build.
secondImage, secondLogs, err := retryBuild.Execute(pack.WithNoColor().Build.
WithPullPolicy("never").
WithBuildpacks(
settings.Buildpacks.PythonInstallers.Online,
settings.Buildpacks.BuildPlan.Online,
).
WithEnv(map[string]string{miniconda.EnvVersion: secondMinicondaVersion}).
Execute(name, source)
WithEnv(map[string]string{miniconda.EnvVersion: secondMinicondaVersion}),
name,
source,
)
Expect(err).ToNot(HaveOccurred(), secondLogs.String)

imagesMap[secondImage.ID] = nil
Expand Down
Loading