diff --git a/plan/task/clientenv.go b/plan/task/clientenv.go index 5e51f625..8bf98658 100644 --- a/plan/task/clientenv.go +++ b/plan/task/clientenv.go @@ -62,7 +62,7 @@ func (t clientEnvTask) getEnv(envvar string, v *compiler.Value, pctx *plancontex return secret.MarshalCUE(), nil } - if val.IsConcrete() { + if !hasDefault && val.IsConcrete() { return nil, fmt.Errorf("%s: unexpected concrete value, please use a type or set a default", envvar) } diff --git a/tests/plan.bats b/tests/plan.bats index 1eae849b..22284a39 100644 --- a/tests/plan.bats +++ b/tests/plan.bats @@ -183,6 +183,16 @@ setup() { export TEST_SECRET="bar" "$DAGGER" "do" -p ./plan/client/env/usage.cue test + +} + +@test "plan/client/env default" { + cd "${TESTDIR}" + + export TEST_DEFAULT="hello universe" + + "$DAGGER" "do" -p ./plan/client/env/default.cue test + } @test "plan/client/env not exists" { diff --git a/tests/plan/client/env/default.cue b/tests/plan/client/env/default.cue new file mode 100644 index 00000000..93800148 --- /dev/null +++ b/tests/plan/client/env/default.cue @@ -0,0 +1,19 @@ +package main + +import ( + "dagger.io/dagger" + "dagger.io/dagger/core" +) + +dagger.#Plan & { + client: env: TEST_DEFAULT: string | *"hello world" + actions: { + image: core.#Pull & { + source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3" + } + test: core.#Exec & { + input: image.output + args: ["test", client.env.TEST_DEFAULT, "=", "hello universe"] + } + } +}