diff --git a/dagger/pipeline.go b/dagger/pipeline.go index 1741ca49..f0ca2999 100644 --- a/dagger/pipeline.go +++ b/dagger/pipeline.go @@ -234,7 +234,7 @@ func (p *Pipeline) Subdir(ctx context.Context, op *compiler.Value, st llb.State) if err != nil { return st, err } - return st.File( + return llb.Scratch().File( llb.Copy( st, dir, diff --git a/tests/ops.bats b/tests/ops.bats index f3f6be81..83fce481 100644 --- a/tests/ops.bats +++ b/tests/ops.bats @@ -207,6 +207,9 @@ setup() { run "$DAGGER" compute "$TESTDIR"/ops/subdir/simple assert_success assert_line '{"hello":"world"}' + + run "$DAGGER" compute "$TESTDIR"/ops/subdir/error + assert_failure } @test "op.#DockerBuild" { diff --git a/tests/ops/subdir/error/main.cue b/tests/ops/subdir/error/main.cue new file mode 100644 index 00000000..9fb09742 --- /dev/null +++ b/tests/ops/subdir/error/main.cue @@ -0,0 +1,31 @@ +package main + +import "dagger.io/dagger/op" + +hello: { + string + + #up: [ + op.#FetchContainer & { + ref: "alpine" + }, + op.#Exec & { + args: ["mkdir", "-p", "/tmp/foo"] + }, + op.#Exec & { + args: ["sh", "-c", "echo -n world > /tmp/foo/hello"] + }, + op.#Subdir & { + dir: "/tmp/foo" + }, + // Should FAIL + op.#Exec & { + always: true + args: ["ls"] + }, + op.#Export & { + source: "./hello" + format: "string" + }, + ] +} diff --git a/tests/ops/subdir/simple/main.cue b/tests/ops/subdir/simple/main.cue index 1cb98ffb..0fde946f 100644 --- a/tests/ops/subdir/simple/main.cue +++ b/tests/ops/subdir/simple/main.cue @@ -19,7 +19,7 @@ hello: { dir: "/tmp/foo" }, op.#Export & { - source: "/hello" + source: "./hello" format: "string" }, ]