Skip to content

Commit

Permalink
Adding ubi-buildpackless-builder and ubi-nodejs-extension on integrat…
Browse files Browse the repository at this point in the history
…ion tests

adding ubi-buildpackless-builder on project path integration tests

adding ubi-buildpackless-builder on simple npm integration tests

adding ubi-buildpackless-builder on simple yarn integration tests

adding enabling experimental feature

adding ubi-buildpackless-build on vue_npm and vue_yarn integration tests
  • Loading branch information
pacostas committed Dec 4, 2023
1 parent 433ada2 commit 16bc004
Show file tree
Hide file tree
Showing 8 changed files with 159 additions and 67 deletions.
7 changes: 6 additions & 1 deletion integration.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"builders": ["paketobuildpacks/builder:buildpackless-base", "paketobuildpacks/builder-jammy-buildpackless-base"],
"builders": [
"paketocommunity/builder-ubi-buildpackless-base",
"paketobuildpacks/builder:buildpackless-base",
"paketobuildpacks/builder-jammy-buildpackless-base"
],
"ubi-nodejs-extension": "github.com/paketo-community/ubi-nodejs-extension",
"node-engine": "github.com/paketo-buildpacks/node-engine",
"npm-install": "github.com/paketo-buildpacks/npm-install",
"yarn": "github.com/paketo-buildpacks/yarn",
Expand Down
32 changes: 24 additions & 8 deletions integration/init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,21 @@ var settings struct {
Online string
}
}
Extensions struct {
UbiNodejsExtension struct {
Online string
}
}
Buildpack struct {
ID string
Name string
}
Config struct {
NodeEngine string `json:"node-engine"`
NPMInstall string `json:"npm-install"`
Yarn string `json:"yarn"`
YarnInstall string `json:"yarn-install"`
NodeEngine string `json:"node-engine"`
NPMInstall string `json:"npm-install"`
Yarn string `json:"yarn"`
YarnInstall string `json:"yarn-install"`
UbiNodejsExtension string `json:"ubi-nodejs-extension"`
}
}

Expand All @@ -64,14 +70,25 @@ func TestIntegration(t *testing.T) {
file, err = os.Open("../buildpack.toml")
Expect(err).NotTo(HaveOccurred())

_, err = toml.NewDecoder(file).Decode(&settings.Buildpack)
_, err = toml.NewDecoder(file).Decode(&settings)
Expect(err).NotTo(HaveOccurred())

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

buildpackStore := occam.NewBuildpackStore()

pack := occam.NewPack()

builder, err := pack.Builder.Inspect.Execute()
Expect(err).NotTo(HaveOccurred())

settings.Extensions.UbiNodejsExtension.Online, err = buildpackStore.Get.
Execute(settings.Config.UbiNodejsExtension)
Expect(err).ToNot(HaveOccurred())
if builder.BuilderName == "paketocommunity/builder-ubi-buildpackless-base" {

Check failure on line 89 in integration/init_test.go

View workflow job for this annotation

GitHub Actions / lint

SA9003: empty branch (staticcheck)
}

settings.Buildpacks.NodeRunScript.Online, err = buildpackStore.Get.
WithVersion("1.2.3").
Execute(root)
Expand All @@ -93,13 +110,12 @@ func TestIntegration(t *testing.T) {
Execute(settings.Config.YarnInstall)
Expect(err).NotTo(HaveOccurred())

pack := occam.NewPack()
docker := occam.NewDocker()

suite := spec.New("Integration", spec.Report(report.Terminal{}), spec.Parallel())
suite("SimpleYarnApp", testSimpleYarnApp(pack, docker))
suite("SimpleNPMApp", testSimpleNPMApp(pack, docker))
suite("ProjectPathApp", testProjectPathApp(pack, docker))
suite("SimpleNPMApp", testSimpleNPMApp(pack, docker))
suite("SimpleYarnApp", testSimpleYarnApp(pack, docker))
suite("VueNPMApp", testVueNPMApp(pack, docker))
suite("VueYarnApp", testVueYarnApp(pack, docker))
suite.Run(t)
Expand Down
37 changes: 25 additions & 12 deletions integration/project_path_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ func testProjectPathApp(pack occam.Pack, docker occam.Docker) func(*testing.T, s
var (
Expect = NewWithT(t).Expect
Eventually = NewWithT(t).Eventually

pullPolicy = "never"
extenderBuildStr = ""
extenderBuildStrEscaped = ""
)

context("when building a simple yarn app inside a nested directory", func() {
Expand All @@ -33,6 +37,12 @@ func testProjectPathApp(pack occam.Pack, docker occam.Docker) func(*testing.T, s
var err error
name, err = occam.RandomName()
Expect(err).NotTo(HaveOccurred())

if settings.Extensions.UbiNodejsExtension.Online != "" {
pullPolicy = "always"
extenderBuildStr = "[extender (build)] "
extenderBuildStrEscaped = `\[extender \(build\)\] `
}
})

it.After(func() {
Expand All @@ -49,6 +59,9 @@ func testProjectPathApp(pack occam.Pack, docker occam.Docker) func(*testing.T, s

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithExtensions(
settings.Extensions.UbiNodejsExtension.Online,
).
WithBuildpacks(
settings.Buildpacks.NodeEngine.Online,
settings.Buildpacks.Yarn.Online,
Expand All @@ -58,24 +71,24 @@ func testProjectPathApp(pack occam.Pack, docker occam.Docker) func(*testing.T, s
WithEnv(map[string]string{
"BP_NODE_RUN_SCRIPTS": "test_script_1,test_script_2",
"BP_NODE_PROJECT_PATH": "nested_yarn_app"}).
WithPullPolicy("never").
WithPullPolicy(pullPolicy).
Execute(name, source)
Expect(err).NotTo(HaveOccurred(), logs.String())

Expect(logs).To(ContainLines(
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
" Executing build process",
" Running 'yarn run test_script_1'",
MatchRegexp(` yarn run v\d+\.\d+\.\d+$`),
" $ echo \"some commands\"",
" some commands",
MatchRegexp(` Done in \d+\.\d+s\.`),
MatchRegexp(fmt.Sprintf(`%s%s \d+\.\d+\.\d+`, extenderBuildStrEscaped, settings.Buildpack.Name)),
extenderBuildStr+" Executing build process",
extenderBuildStr+" Running 'yarn run test_script_1'",
MatchRegexp(extenderBuildStrEscaped+` yarn run v\d+\.\d+\.\d+$`),
extenderBuildStr+" $ echo \"some commands\"",
extenderBuildStr+" some commands",
MatchRegexp(extenderBuildStrEscaped+` Done in \d+\.\d+s\.`),
))
Expect(logs).To(ContainLines(
" Running 'yarn run test_script_2'",
MatchRegexp(` yarn run v\d+\.\d+\.\d+$`),
" $ touch dummyfile.txt",
MatchRegexp(` Done in \d+\.\d+s\.`),
extenderBuildStr+" Running 'yarn run test_script_2'",
MatchRegexp(extenderBuildStrEscaped+` yarn run v\d+\.\d+\.\d+$`),
extenderBuildStr+" $ touch dummyfile.txt",
MatchRegexp(extenderBuildStrEscaped+` Done in \d+\.\d+s\.`),
))
Expect(logs).To(ContainLines(MatchRegexp(` Completed in ([0-9]*(\.[0-9]*)?[a-z]+)+`)))

Expand Down
49 changes: 33 additions & 16 deletions integration/simple_npm_app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ func testSimpleNPMApp(pack occam.Pack, docker occam.Docker) func(*testing.T, spe

name string
source string

pullPolicy = "never"
extenderBuildStr = ""
extenderBuildStrEscaped = ""
)

it.Before(func() {
Expand All @@ -30,6 +34,12 @@ func testSimpleNPMApp(pack occam.Pack, docker occam.Docker) func(*testing.T, spe

source, err = occam.Source(filepath.Join("testdata", "simple_npm_app"))
Expect(err).NotTo(HaveOccurred())

if settings.Extensions.UbiNodejsExtension.Online != "" {
pullPolicy = "always"
extenderBuildStr = "[extender (build)] "
extenderBuildStrEscaped = `\[extender \(build\)\] `
}
})

it.After(func() {
Expand All @@ -52,35 +62,39 @@ func testSimpleNPMApp(pack occam.Pack, docker occam.Docker) func(*testing.T, spe
var logs fmt.Stringer
var err error
image, logs, err = pack.Build.
WithExtensions(
settings.Extensions.UbiNodejsExtension.Online,
).
WithBuildpacks(
settings.Buildpacks.NodeEngine.Online,
settings.Buildpacks.NPMInstall.Online,
settings.Buildpacks.NodeRunScript.Online,
).
WithEnv(map[string]string{"BP_NODE_RUN_SCRIPTS": "test_script_1,test_script_2"}).
WithPullPolicy("never").
WithPullPolicy(pullPolicy).
Execute(name, source)
Expect(err).NotTo(HaveOccurred(), logs.String())

Expect(logs).To(ContainLines(
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
" Executing build process",
" Running 'npm run test_script_1'",
" ",
MatchRegexp(` > simple_npm_app@\d+\.\d+\.\d+ test_script_1`),
" > echo \"some commands\"",
" ",
" some commands",
MatchRegexp(fmt.Sprintf(`%s%s \d+\.\d+\.\d+`, extenderBuildStrEscaped, settings.Buildpack.Name)),
extenderBuildStr+" Executing build process",
extenderBuildStr+" Running 'npm run test_script_1'",
))
Expect(logs).To(ContainLines(
" Running 'npm run test_script_2'",
" ",
MatchRegexp(` > simple_npm_app@\d+\.\d+\.\d+ test_script_2`),
" > touch dummyfile.txt",
" ",
MatchRegexp(extenderBuildStrEscaped+` > simple_npm_app@\d+\.\d+\.\d+ test_script_1`),
extenderBuildStr+" > echo \"some commands\"",
extenderBuildStr+" ",
extenderBuildStr+" some commands",
))
Expect(logs).To(ContainLines(
MatchRegexp(` Completed in ([0-9]*(\.[0-9]*)?[a-z]+)+`),
extenderBuildStr+" Running 'npm run test_script_2'",
extenderBuildStr+" ",
MatchRegexp(extenderBuildStrEscaped+` > simple_npm_app@\d+\.\d+\.\d+ test_script_2`),
extenderBuildStr+" > touch dummyfile.txt",
extenderBuildStr+" ",
))
Expect(logs).To(ContainLines(
MatchRegexp(extenderBuildStrEscaped + ` Completed in ([0-9]*(\.[0-9]*)?[a-z]+)+`),
))

container, err = docker.Container.Run.
Expand All @@ -99,13 +113,16 @@ func testSimpleNPMApp(pack occam.Pack, docker occam.Docker) func(*testing.T, spe
context("when BP_NODE_RUN_SCRIPTS is explicitly deactivated", func() {
it("fails detection", func() {
_, logs, err := pack.WithVerbose().Build.
WithExtensions(
settings.Extensions.UbiNodejsExtension.Online,
).
WithBuildpacks(
settings.Buildpacks.NodeEngine.Online,
settings.Buildpacks.NPMInstall.Online,
settings.Buildpacks.NodeRunScript.Online,
).
WithEnv(map[string]string{"BP_NODE_RUN_SCRIPTS": ""}).
WithPullPolicy("never").
WithPullPolicy(pullPolicy).
Execute(name, source)
Expect(err).To(HaveOccurred())
Expect(logs).To(ContainLines(
Expand Down
39 changes: 26 additions & 13 deletions integration/simple_yarn_app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ func testSimpleYarnApp(pack occam.Pack, docker occam.Docker) func(*testing.T, sp
var (
Expect = NewWithT(t).Expect
Eventually = NewWithT(t).Eventually

pullPolicy = "never"
extenderBuildStr = ""
extenderBuildStrEscaped = ""
)

context("when building a simple yarn app", func() {
Expand All @@ -33,6 +37,12 @@ func testSimpleYarnApp(pack occam.Pack, docker occam.Docker) func(*testing.T, sp
var err error
name, err = occam.RandomName()
Expect(err).NotTo(HaveOccurred())

if settings.Extensions.UbiNodejsExtension.Online != "" {
pullPolicy = "always"
extenderBuildStr = "[extender (build)] "
extenderBuildStrEscaped = `\[extender \(build\)\] `
}
})

it.After(func() {
Expand All @@ -49,34 +59,37 @@ func testSimpleYarnApp(pack occam.Pack, docker occam.Docker) func(*testing.T, sp

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithExtensions(
settings.Extensions.UbiNodejsExtension.Online,
).
WithBuildpacks(
settings.Buildpacks.NodeEngine.Online,
settings.Buildpacks.Yarn.Online,
settings.Buildpacks.YarnInstall.Online,
settings.Buildpacks.NodeRunScript.Online,
).
WithEnv(map[string]string{"BP_NODE_RUN_SCRIPTS": "test_script_1,test_script_2"}).
WithPullPolicy("never").
WithPullPolicy(pullPolicy).
Execute(name, source)
Expect(err).NotTo(HaveOccurred(), logs.String())

Expect(logs).To(ContainLines(
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
" Executing build process",
" Running 'yarn run test_script_1'",
MatchRegexp(` yarn run v\d+\.\d+\.\d+`),
" $ echo \"some commands\"",
" some commands",
MatchRegexp(` Done in \d+\.\d+s\.`),
MatchRegexp(fmt.Sprintf(`%s%s \d+\.\d+\.\d+`, extenderBuildStrEscaped, settings.Buildpack.Name)),
extenderBuildStr+" Executing build process",
extenderBuildStr+" Running 'yarn run test_script_1'",
MatchRegexp(extenderBuildStrEscaped+` yarn run v\d+\.\d+\.\d+`),
extenderBuildStr+" $ echo \"some commands\"",
extenderBuildStr+" some commands",
MatchRegexp(extenderBuildStrEscaped+` Done in \d+\.\d+s\.`),
))
Expect(logs).To(ContainLines(
" Running 'yarn run test_script_2'",
MatchRegexp(` yarn run v\d+\.\d+\.\d+`),
" $ touch dummyfile.txt",
MatchRegexp(` Done in \d+\.\d+s\.`),
extenderBuildStr+" Running 'yarn run test_script_2'",
MatchRegexp(extenderBuildStrEscaped+` yarn run v\d+\.\d+\.\d+`),
extenderBuildStr+" $ touch dummyfile.txt",
MatchRegexp(extenderBuildStrEscaped+` Done in \d+\.\d+s\.`),
))
Expect(logs).To(ContainLines(
MatchRegexp(` Completed in ([0-9]*(\.[0-9]*)?[a-z]+)+`),
MatchRegexp(extenderBuildStrEscaped + ` Completed in ([0-9]*(\.[0-9]*)?[a-z]+)+`),
))

container, err = docker.Container.Run.
Expand Down
31 changes: 22 additions & 9 deletions integration/vue_npm_app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ func testVueNPMApp(pack occam.Pack, docker occam.Docker) func(*testing.T, spec.G
var (
Expect = NewWithT(t).Expect
Eventually = NewWithT(t).Eventually

pullPolicy = "never"
extenderBuildStr = ""
extenderBuildStrEscaped = ""
)

context("when building a Vue npm app", func() {
Expand All @@ -33,6 +37,12 @@ func testVueNPMApp(pack occam.Pack, docker occam.Docker) func(*testing.T, spec.G
var err error
name, err = occam.RandomName()
Expect(err).NotTo(HaveOccurred())

if settings.Extensions.UbiNodejsExtension.Online != "" {
pullPolicy = "always"
extenderBuildStr = "[extender (build)] "
extenderBuildStrEscaped = `\[extender \(build\)\] `
}
})

it.After(func() {
Expand All @@ -49,27 +59,30 @@ func testVueNPMApp(pack occam.Pack, docker occam.Docker) func(*testing.T, spec.G

var logs fmt.Stringer
image, logs, err = pack.WithNoColor().Build.
WithExtensions(
settings.Extensions.UbiNodejsExtension.Online,
).
WithBuildpacks(
settings.Buildpacks.NodeEngine.Online,
settings.Buildpacks.NPMInstall.Online,
settings.Buildpacks.NodeRunScript.Online,
).
WithPullPolicy("never").
WithPullPolicy(pullPolicy).
Execute(name, source)
Expect(err).NotTo(HaveOccurred(), logs.String())

Expect(logs).To(ContainLines(
MatchRegexp(fmt.Sprintf(`%s \d+\.\d+\.\d+`, settings.Buildpack.Name)),
" Executing build process",
" Running 'npm run build'",
" ",
MatchRegexp(` > vue_app@\d+\.\d+\.\d+ build`),
" > vue-cli-service build",
MatchRegexp(fmt.Sprintf(`%s%s \d+\.\d+\.\d+`, extenderBuildStrEscaped, settings.Buildpack.Name)),
extenderBuildStr+" Executing build process",
extenderBuildStr+" Running 'npm run build'",
extenderBuildStr+" ",
MatchRegexp(extenderBuildStrEscaped+` > vue_app@\d+\.\d+\.\d+ build`),
extenderBuildStr+" > vue-cli-service build",
))
Expect(logs).To(ContainLines(
" DONE Build complete. The dist directory is ready to be deployed.",
extenderBuildStr + " DONE Build complete. The dist directory is ready to be deployed.",
))
Expect(logs).To(ContainLines(MatchRegexp(` Completed in ([0-9]*(\.[0-9]*)?[a-z]+)+`)))
Expect(logs).To(ContainLines(MatchRegexp(extenderBuildStrEscaped + ` Completed in ([0-9]*(\.[0-9]*)?[a-z]+)+`)))

container, err = docker.Container.Run.
WithCommand("ls -al /workspace/dist/").
Expand Down
Loading

0 comments on commit 16bc004

Please sign in to comment.