diff --git a/examples/docker/main.cue b/examples/docker/main.cue index 8be803a6..485ff08f 100644 --- a/examples/docker/main.cue +++ b/examples/docker/main.cue @@ -9,6 +9,6 @@ import ( source: dagger.#Artifact // Container image -container: docker.#ImageFromSource & { +container: docker.#Build & { "source": source } diff --git a/tests/examples.bats b/tests/examples.bats index 67890d85..f4bfc318 100644 --- a/tests/examples.bats +++ b/tests/examples.bats @@ -18,3 +18,11 @@ setup() { assert_success assert_output --partial "Todo App" } + +@test "example: docker" { + skip_unless_file_exist "$TESTDIR"/examples/docker/Dockerfile + + "$DAGGER" new --plan-dir "$TESTDIR"/../examples/docker/ docker + "$DAGGER" input dir source "$TESTDIR"/examples/docker/ -e "docker" + "$DAGGER" up -e "docker" +} \ No newline at end of file diff --git a/tests/examples/docker/Dockerfile b/tests/examples/docker/Dockerfile new file mode 100644 index 00000000..987ce9be --- /dev/null +++ b/tests/examples/docker/Dockerfile @@ -0,0 +1,2 @@ +FROM alpine +RUN echo test >> /test.txt \ No newline at end of file diff --git a/tests/helpers.bash b/tests/helpers.bash index 00f94b44..ec22da5b 100644 --- a/tests/helpers.bash +++ b/tests/helpers.bash @@ -19,6 +19,11 @@ skip_unless_secrets_available() { sops exec-file "$inputFile" echo > /dev/null 2>&1 || skip "$inputFile cannot be decrypted" } +skip_unless_file_exist() { + local inputFile="$1" + test -f "$inputFile" || skip "$inputFile does not exist" +} + skip_unless_local_kube() { if [ -f ~/.kube/config ] && grep -q "user: kind-kind" ~/.kube/config &> /dev/null && grep -q "127.0.0.1" ~/.kube/config &> /dev/null; then echo "Kubernetes available" diff --git a/tests/stdlib.bats b/tests/stdlib.bats index 16be89de..3d8aa653 100644 --- a/tests/stdlib.bats +++ b/tests/stdlib.bats @@ -60,6 +60,19 @@ setup() { "$DAGGER" compute "$TESTDIR"/stdlib/aws/ecr --input-yaml "$TESTDIR"/stdlib/aws/inputs.yaml } +@test "stdlib: docker-build" { + skip_unless_file_exist "$TESTDIR"/stdlib/docker/build/Dockerfile + + "$DAGGER" compute "$TESTDIR"/stdlib/docker/build/ --input-dir source="$TESTDIR"/stdlib/docker/build +} + +@test "stdlib: docker-pull" { + "$DAGGER" compute "$TESTDIR"/stdlib/docker/pull/ +} + +@test "stdlib: docker-dockerfile" { + "$DAGGER" compute "$TESTDIR"/stdlib/docker/dockerfile/ --input-dir source="$TESTDIR"/stdlib/docker/dockerfile/testdata +} @test "stdlib: terraform" { skip_unless_secrets_available "$TESTDIR"/stdlib/aws/inputs.yaml diff --git a/tests/stdlib/docker/build/Dockerfile b/tests/stdlib/docker/build/Dockerfile new file mode 100644 index 00000000..987ce9be --- /dev/null +++ b/tests/stdlib/docker/build/Dockerfile @@ -0,0 +1,2 @@ +FROM alpine +RUN echo test >> /test.txt \ No newline at end of file diff --git a/tests/stdlib/docker/build/build.cue b/tests/stdlib/docker/build/build.cue new file mode 100644 index 00000000..58601432 --- /dev/null +++ b/tests/stdlib/docker/build/build.cue @@ -0,0 +1,31 @@ +package docker + +import ( + "dagger.io/dagger" + "dagger.io/dagger/op" + "dagger.io/docker" +) + +// Build a Docker image from source, using included Dockerfile +source: dagger.#Artifact + +TestBuild: { + image: docker.#Build & { + "source": source + } + + verify: #up: [ + op.#Load & { + from: image + }, + + op.#Exec & { + always: true + args: [ + "sh", "-c", """ + grep -q "test" /test.txt + """, + ] + }, + ] +} diff --git a/tests/stdlib/docker/dockerfile/dockerfile.cue b/tests/stdlib/docker/dockerfile/dockerfile.cue new file mode 100644 index 00000000..7f982ab7 --- /dev/null +++ b/tests/stdlib/docker/dockerfile/dockerfile.cue @@ -0,0 +1,34 @@ +package docker + +import ( + "dagger.io/dagger" + "dagger.io/dagger/op" + "dagger.io/docker" +) + +source: dagger.#Artifact + +TestImageFromDockerfile: { + image: docker.#ImageFromDockerfile & { + dockerfile: """ + FROM alpine + COPY test.txt /test.txt + """ + context: source + } + + verify: #up: [ + op.#Load & { + from: image + }, + + op.#Exec & { + always: true + args: [ + "sh", "-c", """ + grep -q "test" /test.txt + """, + ] + }, + ] +} diff --git a/tests/stdlib/docker/dockerfile/testdata/test.txt b/tests/stdlib/docker/dockerfile/testdata/test.txt new file mode 100644 index 00000000..30d74d25 --- /dev/null +++ b/tests/stdlib/docker/dockerfile/testdata/test.txt @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/tests/stdlib/docker/pull/pull.cue b/tests/stdlib/docker/pull/pull.cue new file mode 100644 index 00000000..2f3e7dd2 --- /dev/null +++ b/tests/stdlib/docker/pull/pull.cue @@ -0,0 +1,27 @@ +package docker + +import ( + "dagger.io/dagger/op" + "dagger.io/docker" +) + +TestImageFromRegistry: { + image: docker.#Pull & { + from: "index.docker.io/the0only0vasek/alpine-test" + } + + verify: #up: [ + op.#Load & { + from: image + }, + + op.#Exec & { + always: true + args: [ + "sh", "-c", """ + grep -q "test" /test.txt + """, + ] + }, + ] +}