Skip to content

Commit

Permalink
Merge pull request #4464 from TomSweeneyRedHat/dev/tsweeney/buildtest
Browse files Browse the repository at this point in the history
Add new test suite for build
  • Loading branch information
openshift-merge-robot committed Nov 19, 2019
2 parents f3f219a + f2f45cc commit c673ff8
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 0 deletions.
1 change: 1 addition & 0 deletions test/e2e/build/basicalpine/Containerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
FROM alpine
Empty file.
2 changes: 2 additions & 0 deletions test/e2e/build/squash/Dockerfile.squash-a
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
FROM busybox:latest
ADD alpinetest.tgz /data
2 changes: 2 additions & 0 deletions test/e2e/build/squash/Dockerfile.squash-b
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
FROM test-squash-a:latest
RUN rm -rf /data
3 changes: 3 additions & 0 deletions test/e2e/build/squash/Dockerfile.squash-c
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
FROM busybox:latest
ADD alpinetest.tgz /data
RUN rm -rf /data
Binary file added test/e2e/build/squash/alpinetest.tgz
Binary file not shown.
108 changes: 108 additions & 0 deletions test/e2e/build_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
// +build !remoteclient

package integration

import (
"os"
"strings"

. "github.com/containers/libpod/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

var _ = Describe("Podman build", func() {
var (
tempdir string
err error
podmanTest *PodmanTestIntegration
)

BeforeEach(func() {
tempdir, err = CreateTempDirInTempDir()
if err != nil {
os.Exit(1)
}
podmanTest = PodmanTestCreate(tempdir)
podmanTest.Setup()
podmanTest.RestoreAllArtifacts()
})

AfterEach(func() {
podmanTest.Cleanup()
f := CurrentGinkgoTestDescription()
processTestResult(f)
})

// Let's first do the most simple build possible to make sure stuff is
// happy and then clean up after ourselves to make sure that works too.
It("podman build and remove basic alpine", func() {
session := podmanTest.PodmanNoCache([]string{"build", "build/basicalpine"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))

session = podmanTest.PodmanNoCache([]string{"rmi", "alpine"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
})

// If the context directory is pointing at a file and not a directory,
// that's a no no, fail out.
It("podman build context directory a file", func() {
session := podmanTest.PodmanNoCache([]string{"build", "build/context_dir_a_file"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(125))
})

// Check that builds with different values for the squash options
// create the appropriate number of layers, then clean up after.
It("podman build basic alpine with squash", func() {
session := podmanTest.PodmanNoCache([]string{"build", "-f", "build/squash/Dockerfile.squash-a", "-t", "test-squash-a:latest", "build/squash"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))

session = podmanTest.PodmanNoCache([]string{"inspect", "--format", "{{.RootFS.Layers}}", "test-squash-a"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
// Check for two layers
Expect(len(strings.Fields(session.OutputToString()))).To(Equal(2))

session = podmanTest.PodmanNoCache([]string{"build", "-f", "build/squash/Dockerfile.squash-b", "--squash", "-t", "test-squash-b:latest", "build/squash"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))

session = podmanTest.PodmanNoCache([]string{"inspect", "--format", "{{.RootFS.Layers}}", "test-squash-b"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
// Check for three layers
Expect(len(strings.Fields(session.OutputToString()))).To(Equal(3))

session = podmanTest.PodmanNoCache([]string{"build", "-f", "build/squash/Dockerfile.squash-c", "--squash", "-t", "test-squash-c:latest", "build/squash"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))

session = podmanTest.PodmanNoCache([]string{"inspect", "--format", "{{.RootFS.Layers}}", "test-squash-c"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
// Check for two layers
Expect(len(strings.Fields(session.OutputToString()))).To(Equal(2))

session = podmanTest.PodmanNoCache([]string{"build", "-f", "build/squash/Dockerfile.squash-c", "--squash-all", "-t", "test-squash-d:latest", "build/squash"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))

session = podmanTest.PodmanNoCache([]string{"inspect", "--format", "{{.RootFS.Layers}}", "test-squash-d"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
// Check for one layers
Expect(len(strings.Fields(session.OutputToString()))).To(Equal(1))

session = podmanTest.PodmanNoCache([]string{"rm", "-a"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))

session = podmanTest.PodmanNoCache([]string{"rmi", "-a", "-f"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
})
})

0 comments on commit c673ff8

Please sign in to comment.