diff --git a/stdlib/europa/dagger/utils.cue b/stdlib/europa/dagger/utils.cue index bb9fccc4..b69f7b96 100644 --- a/stdlib/europa/dagger/utils.cue +++ b/stdlib/europa/dagger/utils.cue @@ -14,13 +14,18 @@ import ( path: string // Subdirectory tree - output: #FS & _copy.output + output: #FS & copy.output - _copy: engine.#Copy & { - "input": engine.#Scratch.output + // Base image + scratch: engine.#Scratch + + // Copy action + copy: engine.#Copy & { + "input": scratch.output source: { root: input "path": path } + dest: "/" } } diff --git a/tests/tasks.bats b/tests/tasks.bats index 422277e8..c93a408e 100644 --- a/tests/tasks.bats +++ b/tests/tasks.bats @@ -94,6 +94,17 @@ setup() { "$DAGGER" --europa up ./scratch.cue -l debug } +@test "task: #Subdir" { + cd "$TESTDIR"/tasks/subdir + "$DAGGER" --europa up ./subdir_simple.cue + + run "$DAGGER" --europa up ./subdir_invalid_path.cue + assert_failure + + run "$DAGGER" --europa up ./subdir_invalid_exec.cue + assert_failure +} + @test "task: #GitPull" { cd "$TESTDIR" "$DAGGER" --europa up ./tasks/gitpull/exists.cue diff --git a/tests/tasks/subdir/subdir_invalid_exec.cue b/tests/tasks/subdir/subdir_invalid_exec.cue new file mode 100644 index 00000000..fea7241b --- /dev/null +++ b/tests/tasks/subdir/subdir_invalid_exec.cue @@ -0,0 +1,41 @@ +package main + +import ( + "alpha.dagger.io/europa/dagger/engine" + "alpha.dagger.io/europa/dagger" +) + +engine.#Plan & { + actions: { + image: engine.#Pull & { + source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3" + } + + mkdir: engine.#Mkdir & { + input: image.output + path: "/test/foo" + } + + writeChecker: engine.#WriteFile & { + input: mkdir.output + path: "/test/foo/hello" + contents: "world" + permissions: 0o700 + } + + subdir: dagger.#Subdir & { + input: writeChecker.output + path: "/test/foo" + } + + verify: engine.#Exec & { + input: subdir.output + args: [ + "sh", "-c", + #""" + # impossible execution + """#, + ] + } + } +} diff --git a/tests/tasks/subdir/subdir_invalid_path.cue b/tests/tasks/subdir/subdir_invalid_path.cue new file mode 100644 index 00000000..f93df6f9 --- /dev/null +++ b/tests/tasks/subdir/subdir_invalid_path.cue @@ -0,0 +1,45 @@ +package main + +import ( + "alpha.dagger.io/europa/dagger/engine" + "alpha.dagger.io/europa/dagger" +) + +engine.#Plan & { + actions: { + image: engine.#Pull & { + source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3" + } + + mkdir: engine.#Mkdir & { + input: image.output + path: "/test/foo" + } + + writeChecker: engine.#WriteFile & { + input: mkdir.output + path: "/test/foo/hello" + contents: "world" + permissions: 0o700 + } + + subdir: dagger.#Subdir & { + input: writeChecker.output + path: "/directorynotfound" + } + + verify: engine.#Exec & { + input: image.output + mounts: fs: { + dest: "/target" + contents: subdir.output + } + args: [ + "sh", "-c", + #""" + test $(ls /target | wc -l) = 1 + """#, + ] + } + } +} diff --git a/tests/tasks/subdir/subdir_simple.cue b/tests/tasks/subdir/subdir_simple.cue new file mode 100644 index 00000000..3faab7ce --- /dev/null +++ b/tests/tasks/subdir/subdir_simple.cue @@ -0,0 +1,39 @@ +package main + +import ( + "alpha.dagger.io/europa/dagger/engine" + "alpha.dagger.io/europa/dagger" +) + +engine.#Plan & { + actions: { + image: engine.#Pull & { + source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3" + } + + mkdir: engine.#Mkdir & { + input: image.output + path: "/test/foo" + } + + writeChecker: engine.#WriteFile & { + input: mkdir.output + path: "/test/foo/hello" + contents: "world" + permissions: 0o700 + } + + subdir: dagger.#Subdir & { + input: writeChecker.output + path: "/test/foo" + } + + verify: engine.#ReadFile & { + input: subdir.output + path: "/hello" + } & { + // assert result + contents: "world" + } + } +}