From 3cf443a33711dafe6c752193b676ea867f431913 Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 24 Dec 2021 01:18:06 +0100 Subject: [PATCH 1/2] Fix: #Subdir Signed-off-by: guillaume --- stdlib/europa/dagger/utils.cue | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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: "/" } } From 19e701eb57a993b080fc6f6ac776fad48c99a39a Mon Sep 17 00:00:00 2001 From: guillaume Date: Fri, 24 Dec 2021 01:18:28 +0100 Subject: [PATCH 2/2] Implement tests for #Subdir Signed-off-by: guillaume --- tests/tasks.bats | 11 ++++++ tests/tasks/subdir/subdir_invalid_exec.cue | 41 ++++++++++++++++++++ tests/tasks/subdir/subdir_invalid_path.cue | 45 ++++++++++++++++++++++ tests/tasks/subdir/subdir_simple.cue | 39 +++++++++++++++++++ 4 files changed, 136 insertions(+) create mode 100644 tests/tasks/subdir/subdir_invalid_exec.cue create mode 100644 tests/tasks/subdir/subdir_invalid_path.cue create mode 100644 tests/tasks/subdir/subdir_simple.cue 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" + } + } +}