diff --git a/pkg/universe.dagger.io/docker/test/build-multi-steps.cue b/pkg/universe.dagger.io/docker/test/build-multi-steps.cue new file mode 100644 index 00000000..b4567b57 --- /dev/null +++ b/pkg/universe.dagger.io/docker/test/build-multi-steps.cue @@ -0,0 +1,49 @@ +package test + +import ( + "dagger.io/dagger" + "dagger.io/dagger/engine" + "universe.dagger.io/docker" +) + +// This test verify that we can correctly build an image +// using docker.#Build with multiple steps executed during +// the building process +dagger.#Plan & { + inputs: directories: testdata: path: "./testdata" + + actions: { + image: docker.#Build & { + steps: [ + docker.#Pull & { + source: "golang:1.17-alpine" + }, + docker.#Copy & { + contents: inputs.directories.testdata.contents + dest: "/input" + }, + docker.#Run & { + script: """ + # FIXME remove that line when #1517 is merged + export PATH=/go/bin:/usr/local/go/bin:$PATH + go build -o hello ./main.go + mv hello /bin + """ + workdir: "/input" + }, + docker.#Run & { + script: """ + hello >> /test.txt + """ + }, + ] + } + + verify: engine.#ReadFile & { + input: image.output.rootfs + path: "/test.txt" + } & { + contents: "hello world" + } + } +} diff --git a/pkg/universe.dagger.io/docker/test/build-simple.cue b/pkg/universe.dagger.io/docker/test/build-simple.cue new file mode 100644 index 00000000..fb72d510 --- /dev/null +++ b/pkg/universe.dagger.io/docker/test/build-simple.cue @@ -0,0 +1,38 @@ +package test + +import ( + "dagger.io/dagger" + "dagger.io/dagger/engine" + "universe.dagger.io/docker" +) + +// This test verify that we can correctly build a simplistic image +// using docker.#Build +dagger.#Plan & { + #alpineImage: "index.docker.io/alpine:3.15.0@sha256:21a3deaa0d32a8057914f36584b5288d2e5ecc984380bc0118285c70fa8c9300" + + #testValue: "hello world" + + actions: { + image: docker.#Build & { + steps: [ + docker.#Pull & { + source: #alpineImage + }, + docker.#Run & { + script: """ + echo -n $TEST >> /test.txt + """ + env: TEST: #testValue + }, + ] + } + + verify: engine.#ReadFile & { + input: image.output.rootfs + path: "/test.txt" + } & { + contents: #testValue + } + } +} diff --git a/pkg/universe.dagger.io/docker/test/docker.bats b/pkg/universe.dagger.io/docker/test/docker.bats index 8b7abe8c..d8414a1d 100644 --- a/pkg/universe.dagger.io/docker/test/docker.bats +++ b/pkg/universe.dagger.io/docker/test/docker.bats @@ -5,6 +5,9 @@ setup() { } @test "docker.#Build" { + dagger up ./build-simple.cue + dagger up ./build-multi-steps.cue + dagger up ./nested-build-test.cue # FIXME: this is currently broken diff --git a/pkg/universe.dagger.io/docker/test/testdata/go.mod b/pkg/universe.dagger.io/docker/test/testdata/go.mod new file mode 100644 index 00000000..9bacf229 --- /dev/null +++ b/pkg/universe.dagger.io/docker/test/testdata/go.mod @@ -0,0 +1,3 @@ +module test.com + +go 1.17 diff --git a/pkg/universe.dagger.io/docker/test/testdata/main.go b/pkg/universe.dagger.io/docker/test/testdata/main.go new file mode 100644 index 00000000..75b323ab --- /dev/null +++ b/pkg/universe.dagger.io/docker/test/testdata/main.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Printf("hello world") +}