diff --git a/tests/input/default/main.cue b/tests/compute/input/default/main.cue similarity index 100% rename from tests/input/default/main.cue rename to tests/compute/input/default/main.cue diff --git a/tests/input/simple/main.cue b/tests/compute/input/simple/main.cue similarity index 100% rename from tests/input/simple/main.cue rename to tests/compute/input/simple/main.cue diff --git a/tests/copy/invalid/cache/main.cue b/tests/llb/copy/invalid/cache/main.cue similarity index 100% rename from tests/copy/invalid/cache/main.cue rename to tests/llb/copy/invalid/cache/main.cue diff --git a/tests/copy/valid/component/main.cue b/tests/llb/copy/valid/component/main.cue similarity index 100% rename from tests/copy/valid/component/main.cue rename to tests/llb/copy/valid/component/main.cue diff --git a/tests/copy/valid/script/main.cue b/tests/llb/copy/valid/script/main.cue similarity index 100% rename from tests/copy/valid/script/main.cue rename to tests/llb/copy/valid/script/main.cue diff --git a/tests/dockerbuild/main.cue b/tests/llb/dockerbuild/main.cue similarity index 100% rename from tests/dockerbuild/main.cue rename to tests/llb/dockerbuild/main.cue diff --git a/tests/dockerbuild/testdata/Dockerfile b/tests/llb/dockerbuild/testdata/Dockerfile similarity index 100% rename from tests/dockerbuild/testdata/Dockerfile rename to tests/llb/dockerbuild/testdata/Dockerfile diff --git a/tests/dockerbuild/testdata/dockerfilepath/Dockerfile.custom b/tests/llb/dockerbuild/testdata/dockerfilepath/Dockerfile.custom similarity index 100% rename from tests/dockerbuild/testdata/dockerfilepath/Dockerfile.custom rename to tests/llb/dockerbuild/testdata/dockerfilepath/Dockerfile.custom diff --git a/tests/dockerbuild/testdata/foo b/tests/llb/dockerbuild/testdata/foo similarity index 100% rename from tests/dockerbuild/testdata/foo rename to tests/llb/dockerbuild/testdata/foo diff --git a/tests/exec/always/main.cue b/tests/llb/exec/always/main.cue similarity index 100% rename from tests/exec/always/main.cue rename to tests/llb/exec/always/main.cue diff --git a/tests/exec/dir/doesnotexist/main.cue b/tests/llb/exec/dir/doesnotexist/main.cue similarity index 100% rename from tests/exec/dir/doesnotexist/main.cue rename to tests/llb/exec/dir/doesnotexist/main.cue diff --git a/tests/exec/dir/exist/main.cue b/tests/llb/exec/dir/exist/main.cue similarity index 100% rename from tests/exec/dir/exist/main.cue rename to tests/llb/exec/dir/exist/main.cue diff --git a/tests/exec/env/invalid/main.cue b/tests/llb/exec/env/invalid/main.cue similarity index 100% rename from tests/exec/env/invalid/main.cue rename to tests/llb/exec/env/invalid/main.cue diff --git a/tests/exec/env/overlay/main.cue b/tests/llb/exec/env/overlay/main.cue similarity index 100% rename from tests/exec/env/overlay/main.cue rename to tests/llb/exec/env/overlay/main.cue diff --git a/tests/exec/env/valid/main.cue b/tests/llb/exec/env/valid/main.cue similarity index 100% rename from tests/exec/env/valid/main.cue rename to tests/llb/exec/env/valid/main.cue diff --git a/tests/exec/error/main.cue b/tests/llb/exec/error/main.cue similarity index 100% rename from tests/exec/error/main.cue rename to tests/llb/exec/error/main.cue diff --git a/tests/exec/exit_code/main.cue b/tests/llb/exec/exit_code/main.cue similarity index 100% rename from tests/exec/exit_code/main.cue rename to tests/llb/exec/exit_code/main.cue diff --git a/tests/exec/invalid/main.cue b/tests/llb/exec/invalid/main.cue similarity index 100% rename from tests/exec/invalid/main.cue rename to tests/llb/exec/invalid/main.cue diff --git a/tests/exec/simple/main.cue b/tests/llb/exec/simple/main.cue similarity index 100% rename from tests/exec/simple/main.cue rename to tests/llb/exec/simple/main.cue diff --git a/tests/exec/undefined/non_concrete_not_referenced/main.cue b/tests/llb/exec/undefined/non_concrete_not_referenced/main.cue similarity index 100% rename from tests/exec/undefined/non_concrete_not_referenced/main.cue rename to tests/llb/exec/undefined/non_concrete_not_referenced/main.cue diff --git a/tests/exec/undefined/non_concrete_referenced/main.cue b/tests/llb/exec/undefined/non_concrete_referenced/main.cue similarity index 100% rename from tests/exec/undefined/non_concrete_referenced/main.cue rename to tests/llb/exec/undefined/non_concrete_referenced/main.cue diff --git a/tests/exec/undefined/with_pkg_def/cue.mod/module.cue b/tests/llb/exec/undefined/with_pkg_def/cue.mod/module.cue similarity index 100% rename from tests/exec/undefined/with_pkg_def/cue.mod/module.cue rename to tests/llb/exec/undefined/with_pkg_def/cue.mod/module.cue diff --git a/tests/exec/undefined/with_pkg_def/cue.mod/pkg/dagger.io/def/main.cue b/tests/llb/exec/undefined/with_pkg_def/cue.mod/pkg/dagger.io/def/main.cue similarity index 100% rename from tests/exec/undefined/with_pkg_def/cue.mod/pkg/dagger.io/def/main.cue rename to tests/llb/exec/undefined/with_pkg_def/cue.mod/pkg/dagger.io/def/main.cue diff --git a/tests/exec/undefined/with_pkg_def/main.cue b/tests/llb/exec/undefined/with_pkg_def/main.cue similarity index 100% rename from tests/exec/undefined/with_pkg_def/main.cue rename to tests/llb/exec/undefined/with_pkg_def/main.cue diff --git a/tests/exec/undefined/with_pkg_mandatory/cue.mod/module.cue b/tests/llb/exec/undefined/with_pkg_mandatory/cue.mod/module.cue similarity index 100% rename from tests/exec/undefined/with_pkg_mandatory/cue.mod/module.cue rename to tests/llb/exec/undefined/with_pkg_mandatory/cue.mod/module.cue diff --git a/tests/exec/undefined/with_pkg_mandatory/cue.mod/pkg/dagger.io/nonoptional/main.cue b/tests/llb/exec/undefined/with_pkg_mandatory/cue.mod/pkg/dagger.io/nonoptional/main.cue similarity index 100% rename from tests/exec/undefined/with_pkg_mandatory/cue.mod/pkg/dagger.io/nonoptional/main.cue rename to tests/llb/exec/undefined/with_pkg_mandatory/cue.mod/pkg/dagger.io/nonoptional/main.cue diff --git a/tests/exec/undefined/with_pkg_mandatory/main.cue b/tests/llb/exec/undefined/with_pkg_mandatory/main.cue similarity index 100% rename from tests/exec/undefined/with_pkg_mandatory/main.cue rename to tests/llb/exec/undefined/with_pkg_mandatory/main.cue diff --git a/tests/exec/undefined/with_pkg_optional/cue.mod/module.cue b/tests/llb/exec/undefined/with_pkg_optional/cue.mod/module.cue similarity index 100% rename from tests/exec/undefined/with_pkg_optional/cue.mod/module.cue rename to tests/llb/exec/undefined/with_pkg_optional/cue.mod/module.cue diff --git a/tests/exec/undefined/with_pkg_optional/cue.mod/pkg/dagger.io/optional/main.cue b/tests/llb/exec/undefined/with_pkg_optional/cue.mod/pkg/dagger.io/optional/main.cue similarity index 100% rename from tests/exec/undefined/with_pkg_optional/cue.mod/pkg/dagger.io/optional/main.cue rename to tests/llb/exec/undefined/with_pkg_optional/cue.mod/pkg/dagger.io/optional/main.cue diff --git a/tests/exec/undefined/with_pkg_optional/main.cue b/tests/llb/exec/undefined/with_pkg_optional/main.cue similarity index 100% rename from tests/exec/undefined/with_pkg_optional/main.cue rename to tests/llb/exec/undefined/with_pkg_optional/main.cue diff --git a/tests/export/bool/main.cue b/tests/llb/export/bool/main.cue similarity index 100% rename from tests/export/bool/main.cue rename to tests/llb/export/bool/main.cue diff --git a/tests/export/concurrency/main.cue b/tests/llb/export/concurrency/main.cue similarity index 100% rename from tests/export/concurrency/main.cue rename to tests/llb/export/concurrency/main.cue diff --git a/tests/export/float/main.cue b/tests/llb/export/float/main.cue similarity index 100% rename from tests/export/float/main.cue rename to tests/llb/export/float/main.cue diff --git a/tests/export/invalid/format/main.cue b/tests/llb/export/invalid/format/main.cue similarity index 100% rename from tests/export/invalid/format/main.cue rename to tests/llb/export/invalid/format/main.cue diff --git a/tests/export/invalid/path/main.cue b/tests/llb/export/invalid/path/main.cue similarity index 100% rename from tests/export/invalid/path/main.cue rename to tests/llb/export/invalid/path/main.cue diff --git a/tests/export/invalid/validation/main.cue b/tests/llb/export/invalid/validation/main.cue similarity index 100% rename from tests/export/invalid/validation/main.cue rename to tests/llb/export/invalid/validation/main.cue diff --git a/tests/export/json/main.cue b/tests/llb/export/json/main.cue similarity index 100% rename from tests/export/json/main.cue rename to tests/llb/export/json/main.cue diff --git a/tests/export/number/main.cue b/tests/llb/export/number/main.cue similarity index 100% rename from tests/export/number/main.cue rename to tests/llb/export/number/main.cue diff --git a/tests/export/string/main.cue b/tests/llb/export/string/main.cue similarity index 100% rename from tests/export/string/main.cue rename to tests/llb/export/string/main.cue diff --git a/tests/export/withvalidation/main.cue b/tests/llb/export/withvalidation/main.cue similarity index 100% rename from tests/export/withvalidation/main.cue rename to tests/llb/export/withvalidation/main.cue diff --git a/tests/export/yaml/main.cue b/tests/llb/export/yaml/main.cue similarity index 100% rename from tests/export/yaml/main.cue rename to tests/llb/export/yaml/main.cue diff --git a/tests/fetch-container/exist/main.cue b/tests/llb/fetch-container/exist/main.cue similarity index 100% rename from tests/fetch-container/exist/main.cue rename to tests/llb/fetch-container/exist/main.cue diff --git a/tests/fetch-container/invalid/main.cue b/tests/llb/fetch-container/invalid/main.cue similarity index 100% rename from tests/fetch-container/invalid/main.cue rename to tests/llb/fetch-container/invalid/main.cue diff --git a/tests/fetch-container/nonexistent/digest/main.cue b/tests/llb/fetch-container/nonexistent/digest/main.cue similarity index 100% rename from tests/fetch-container/nonexistent/digest/main.cue rename to tests/llb/fetch-container/nonexistent/digest/main.cue diff --git a/tests/fetch-container/nonexistent/image-with-valid-digest/main.cue b/tests/llb/fetch-container/nonexistent/image-with-valid-digest/main.cue similarity index 100% rename from tests/fetch-container/nonexistent/image-with-valid-digest/main.cue rename to tests/llb/fetch-container/nonexistent/image-with-valid-digest/main.cue diff --git a/tests/fetch-container/nonexistent/image/main.cue b/tests/llb/fetch-container/nonexistent/image/main.cue similarity index 100% rename from tests/fetch-container/nonexistent/image/main.cue rename to tests/llb/fetch-container/nonexistent/image/main.cue diff --git a/tests/fetch-container/nonexistent/tag/main.cue b/tests/llb/fetch-container/nonexistent/tag/main.cue similarity index 100% rename from tests/fetch-container/nonexistent/tag/main.cue rename to tests/llb/fetch-container/nonexistent/tag/main.cue diff --git a/tests/fetch-git/exist/main.cue b/tests/llb/fetch-git/exist/main.cue similarity index 100% rename from tests/fetch-git/exist/main.cue rename to tests/llb/fetch-git/exist/main.cue diff --git a/tests/fetch-git/invalid/main.cue b/tests/llb/fetch-git/invalid/main.cue similarity index 100% rename from tests/fetch-git/invalid/main.cue rename to tests/llb/fetch-git/invalid/main.cue diff --git a/tests/fetch-git/nonexistent/bork/main.cue b/tests/llb/fetch-git/nonexistent/bork/main.cue similarity index 100% rename from tests/fetch-git/nonexistent/bork/main.cue rename to tests/llb/fetch-git/nonexistent/bork/main.cue diff --git a/tests/fetch-git/nonexistent/ref/main.cue b/tests/llb/fetch-git/nonexistent/ref/main.cue similarity index 100% rename from tests/fetch-git/nonexistent/ref/main.cue rename to tests/llb/fetch-git/nonexistent/ref/main.cue diff --git a/tests/fetch-git/nonexistent/remote/main.cue b/tests/llb/fetch-git/nonexistent/remote/main.cue similarity index 100% rename from tests/fetch-git/nonexistent/remote/main.cue rename to tests/llb/fetch-git/nonexistent/remote/main.cue diff --git a/tests/load/invalid/cache/main.cue b/tests/llb/load/invalid/cache/main.cue similarity index 100% rename from tests/load/invalid/cache/main.cue rename to tests/llb/load/invalid/cache/main.cue diff --git a/tests/load/valid/component/main.cue b/tests/llb/load/valid/component/main.cue similarity index 100% rename from tests/load/valid/component/main.cue rename to tests/llb/load/valid/component/main.cue diff --git a/tests/load/valid/script/main.cue b/tests/llb/load/valid/script/main.cue similarity index 100% rename from tests/load/valid/script/main.cue rename to tests/llb/load/valid/script/main.cue diff --git a/tests/mounts/valid/cache/main.cue b/tests/llb/mounts/valid/cache/main.cue similarity index 100% rename from tests/mounts/valid/cache/main.cue rename to tests/llb/mounts/valid/cache/main.cue diff --git a/tests/mounts/valid/component/main.cue b/tests/llb/mounts/valid/component/main.cue similarity index 100% rename from tests/mounts/valid/component/main.cue rename to tests/llb/mounts/valid/component/main.cue diff --git a/tests/mounts/valid/script/main.cue b/tests/llb/mounts/valid/script/main.cue similarity index 100% rename from tests/mounts/valid/script/main.cue rename to tests/llb/mounts/valid/script/main.cue diff --git a/tests/mounts/valid/tmpfs/main.cue b/tests/llb/mounts/valid/tmpfs/main.cue similarity index 100% rename from tests/mounts/valid/tmpfs/main.cue rename to tests/llb/mounts/valid/tmpfs/main.cue diff --git a/tests/push-container/inputs.yaml b/tests/llb/push-container/inputs.yaml similarity index 100% rename from tests/push-container/inputs.yaml rename to tests/llb/push-container/inputs.yaml diff --git a/tests/push-container/main.cue b/tests/llb/push-container/main.cue similarity index 100% rename from tests/push-container/main.cue rename to tests/llb/push-container/main.cue diff --git a/tests/subdir/simple/main.cue b/tests/llb/subdir/simple/main.cue similarity index 100% rename from tests/subdir/simple/main.cue rename to tests/llb/subdir/simple/main.cue diff --git a/tests/repro-19/main.cue b/tests/repro-19/main.cue deleted file mode 100644 index 65694195..00000000 --- a/tests/repro-19/main.cue +++ /dev/null @@ -1,15 +0,0 @@ -package test - -#compute: [ - { - do: "fetch-container" - ref: "busybox" - }, - { - do: "exec" - args: ["sh", "-c", """ - echo hello > /tmp/out - """] - // dir: "/" - }, -] diff --git a/tests/test.sh b/tests/test.sh index 01169718..aadfc4b5 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -13,7 +13,34 @@ DAGGER_BINARY_ARGS="${DAGGER_BINARY_ARGS:---log-format json}" read -ra DAGGER_BINARY_ARGS <<< "${DAGGER_BINARY_ARGS:-}" readonly DAGGER_BINARY_ARGS -test::stdlib() { +test::all(){ + local dagger="$1" + + test::llb "$dagger" + test::stdlib "$dagger" + test::dependencies "$dagger" + test::compute "$dagger" + test::daggerignore "$dagger" + test::examples "$dagger" +} + +test::llb(){ + local dagger="$1" + + test::llb::load "$dagger" + test::llb::mount "$dagger" + test::llb::copy "$dagger" + test::llb::local "$dagger" + test::llb::fetchcontainer "$dagger" + test::llb::pushcontainer "$dagger" + test::llb::fetchgit "$dagger" + test::llb::exec "$dagger" + test::llb::export "$dagger" + test::llb::subdir "$dagger" + test::llb::dockerbuild "$dagger" +} + +test::stdlib(){ local dagger="$1" test::one "stdlib: alpine" \ @@ -28,10 +55,15 @@ test::stdlib() { "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/stdlib/netlify } -test::examples() { - test::secret "$d"/../examples/react-netlify/inputs.yaml "examples: React Netlify" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/../examples/react-netlify +test::dependencies(){ + local dagger="$1" + test::one "Dependencies: simple direct dependency" --exit=0 --stdout='{"A":{"result":"from A"},"B":{"result":"dependency from A"}}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/dependencies/simple + test::one "Dependencies: interpolation" --exit=0 --stdout='{"A":{"result":"from A"},"B":{"result":"dependency from A"}}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/dependencies/interpolation + test::one "Dependencies: json.Unmarshal" --exit=0 --stdout='{"A":"{\"hello\": \"world\"}\n","B":{"result":"unmarshalled.hello=world"},"unmarshalled":{"hello":"world"}}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/dependencies/unmarshal } test::compute(){ @@ -56,197 +88,20 @@ test::compute(){ "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/compute/success/overload/flat test::one "Compute: overloading #Component should work" --exit=0 \ "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/compute/success/overload/wrapped -} -test::dependencies(){ - local dagger="$1" + # Compute: `--input-*` + test::one "Compute: Input: missing input should skip execution" --exit=0 --stdout='{}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/compute/input/simple - test::one "Dependencies: simple direct dependency" --exit=0 --stdout='{"A":{"result":"from A"},"B":{"result":"dependency from A"}}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/dependencies/simple - test::one "Dependencies: interpolation" --exit=0 --stdout='{"A":{"result":"from A"},"B":{"result":"dependency from A"}}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/dependencies/interpolation - test::one "Dependencies: json.Unmarshal" --exit=0 --stdout='{"A":"{\"hello\": \"world\"}\n","B":{"result":"unmarshalled.hello=world"},"unmarshalled":{"hello":"world"}}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/dependencies/unmarshal -} + test::one "Compute: Input: simple input" --exit=0 --stdout='{"in":"foobar","test":"received: foobar"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-string 'in=foobar' "$d"/compute/input/simple -test::fetchcontainer(){ - local dagger="$1" + test::one "Compute: Input: default values" --exit=0 --stdout='{"in":"default input","test":"received: default input"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/compute/input/default - # Fetch container - disable test::one "FetchContainer: missing ref (FIXME: distinguish missing inputs from incorrect config)" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-container/invalid - test::one "FetchContainer: non existent container image" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-container/nonexistent/image - test::one "FetchContainer: non existent container tag" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-container/nonexistent/tag - test::one "FetchContainer: non existent container digest" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-container/nonexistent/digest + test::one "Compute: Input: override default value" --exit=0 --stdout='{"in":"foobar","test":"received: foobar"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-string 'in=foobar' "$d"/compute/input/default - test::one "FetchContainer: valid containers" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-container/exist - - disable test::one "FetchContainer: non existent container image with valid digest (FIXME https://github.com/blocklayerhq/dagger/issues/32)" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-container/nonexistent/image-with-valid-digest -} - -test::pushcontainer(){ - local dagger="$1" - - test::secret "$d"/push-container/inputs.yaml "PushContainer: simple" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/push-container -} - -test::fetchgit(){ - local dagger="$1" - - # Fetch git - test::one "FetchGit: valid" --exit=0 --stdout="{}" \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-git/exist - disable test::one "FetchGit: invalid (FIXME: distinguish missing inputs from incorrect config) " --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-git/invalid - test::one "FetchGit: non existent remote" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-git/nonexistent/remote - test::one "FetchGit: non existent ref" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-git/nonexistent/ref - test::one "FetchGit: non existent bork" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/fetch-git/nonexistent/bork -} - -test::exec(){ - # Exec - test::one "Exec: invalid" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/invalid - test::one "Exec: error" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/error - test::one "Exec: simple" --exit=0 --stdout={} \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/simple - # XXX should run twice and test that the string "always output" is visible with DOCKER_OUTPUT=1 - # Alternatively, use export, but this would test multiple things then... - test::one "Exec: always" --exit=0 --stdout={} \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/always - test::one "Exec: env invalid" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/env/invalid - test::one "Exec: env valid" --exit=0 --stdout={} \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/env/valid - test::one "Exec: env with overlay" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-string 'bar=overlay environment' "$d"/exec/env/overlay - - test::one "Exec: non existent dir" --exit=0 --stdout={} \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/dir/doesnotexist - test::one "Exec: valid dir" --exit=0 --stdout={} \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/dir/exist - - disable test::one "Exec: exit code propagation (FIXME https://github.com/blocklayerhq/dagger/issues/74)" --exit=123 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/exit_code - - test::one "Exec: script with referenced non-concrete property should not be executed, and should succeed overall" --exit=0 --stdout='{"hello":"world"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/undefined/non_concrete_referenced - # NOTE: the exec is meant to fail - and we test that as a way to confirm it has been executed - test::one "Exec: script with unreferenced undefined properties should be executed" --exit=1 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/undefined/non_concrete_not_referenced - test::one "Exec: package with optional def, not referenced, should be executed" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/undefined/with_pkg_def - test::one "Exec: script with optional prop, not referenced, should be executed" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/undefined/with_pkg_optional - disable test::one "Exec: script with non-optional prop, not referenced, should be executed (FIXME https://github.com/blocklayerhq/dagger/issues/70)" --exit=1 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/exec/undefined/with_pkg_mandatory -} - -test::export(){ - test::one "Export: json" --exit=0 --stdout='{"testMap":{"something":"something"},"testScalar":true}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/json - - test::one "Export: string" --exit=0 --stdout='{"test":"something"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/string - - test::one "Export: string with additional constraint success" --exit=0 --stdout='{"test":"something"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/withvalidation - - test::one "Export: many concurrent" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/concurrency - - test::one "Export: does not pass additional validation" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/invalid/validation - - test::one "Export: invalid format" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/invalid/format - - test::one "Export: invalid path" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/invalid/path - - test::one "Export: number" --exit=0 --stdout='{"test":-123.5}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/float - - disable test::one "Export: number (FIXME: https://github.com/blocklayerhq/dagger/issues/96)" --exit=0 --stdout='{"test":-123.5}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/number - - test::one "Export: yaml" --exit=0 --stdout='{"testMap":{"something":"something"},"testScalar":true}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/yaml - - test::one "Export: bool" --exit=0 --stdout='{"test":true}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/export/bool -} - -test::copy(){ - test::one "Copy: valid components" --exit=0 --stdout='{"component":{},"test1":"lol","test2":"lol"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/copy/valid/component - test::one "Copy: valid script" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/copy/valid/script - - disable test::one "Copy: invalid caching (FIXME https://github.com/blocklayerhq/dagger/issues/44)" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/copy/invalid/cache -} - -test::load(){ - test::one "Load: valid components" --exit=0 --stdout='{"component":{},"test1":"lol","test2":"lol"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/load/valid/component - test::one "Load: valid script" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/load/valid/script - - test::one "Load: invalid caching (FIXME https://github.com/blocklayerhq/dagger/issues/44)" --exit=1 --stdout= \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/load/invalid/cache -} - -test::local(){ - disable "" "There are no local tests right now (the feature is possibly not functioning at all: see https://github.com/blocklayerhq/dagger/issues/41)" -} - -test::mount(){ - test::one "Mount: tmpfs" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/mounts/valid/tmpfs - - test::one "Mount: cache" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/mounts/valid/cache - - test::one "Mount: component" --exit=0 --stdout='{"test":"hello world"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/mounts/valid/component - - disable test::one "Mount: script (FIXME https://github.com/blocklayerhq/dagger/issues/46)" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/mounts/valid/script -} - -test::input() { - test::one "Input: missing input should skip execution" --exit=0 --stdout='{}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/input/simple - - test::one "Input: simple input" --exit=0 --stdout='{"in":"foobar","test":"received: foobar"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-string 'in=foobar' "$d"/input/simple - - test::one "Input: default values" --exit=0 --stdout='{"in":"default input","test":"received: default input"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/input/default - - test::one "Input: override default value" --exit=0 --stdout='{"in":"foobar","test":"received: foobar"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-string 'in=foobar' "$d"/input/default -} - -test::subdir() { - test::one "Subdir: simple usage" --exit=0 --stdout='{"hello":"world"}' \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/subdir/simple -} - -test::dockerbuild() { - test::one "Docker Build" --exit=0 \ - "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-dir TestData="$d"/dockerbuild/testdata "$d"/dockerbuild } test::daggerignore() { @@ -254,28 +109,176 @@ test::daggerignore() { "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-dir TestData="$d"/ignore/testdata "$d"/ignore } -test::all(){ +test::examples() { + test::secret "$d"/../examples/react-netlify/inputs.yaml "examples: React Netlify" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/../examples/react-netlify + +} + +test::llb::fetchcontainer(){ local dagger="$1" - test::load "$dagger" - test::mount "$dagger" + # Fetch container + disable test::one "FetchContainer: missing ref (FIXME: distinguish missing inputs from incorrect config)" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-container/invalid + test::one "FetchContainer: non existent container image" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-container/nonexistent/image + test::one "FetchContainer: non existent container tag" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-container/nonexistent/tag + test::one "FetchContainer: non existent container digest" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-container/nonexistent/digest - test::copy "$dagger" - test::local "$dagger" - test::compute "$dagger" - test::fetchcontainer "$dagger" - test::pushcontainer "$dagger" - test::fetchgit "$dagger" - test::exec "$dagger" - test::export "$dagger" - test::input "$dagger" - test::subdir "$dagger" - test::dockerbuild "$dagger" - test::daggerignore "$dagger" + test::one "FetchContainer: valid containers" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-container/exist - test::stdlib "$dagger" + disable test::one "FetchContainer: non existent container image with valid digest (FIXME https://github.com/blocklayerhq/dagger/issues/32)" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-container/nonexistent/image-with-valid-digest +} - test::examples "$dagger" +test::llb::pushcontainer(){ + local dagger="$1" + + test::secret "$d"/llb/push-container/inputs.yaml "PushContainer: simple" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/push-container +} + +test::llb::fetchgit(){ + local dagger="$1" + + # Fetch git + test::one "FetchGit: valid" --exit=0 --stdout="{}" \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-git/exist + disable test::one "FetchGit: invalid (FIXME: distinguish missing inputs from incorrect config) " --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-git/invalid + test::one "FetchGit: non existent remote" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-git/nonexistent/remote + test::one "FetchGit: non existent ref" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-git/nonexistent/ref + test::one "FetchGit: non existent bork" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/fetch-git/nonexistent/bork +} + +test::llb::exec(){ + # Exec + test::one "Exec: invalid" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/invalid + test::one "Exec: error" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/error + test::one "Exec: simple" --exit=0 --stdout={} \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/simple + # XXX should run twice and test that the string "always output" is visible with DOCKER_OUTPUT=1 + # Alternatively, use export, but this would test multiple things then... + test::one "Exec: always" --exit=0 --stdout={} \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/always + test::one "Exec: env invalid" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/env/invalid + test::one "Exec: env valid" --exit=0 --stdout={} \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/env/valid + test::one "Exec: env with overlay" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-string 'bar=overlay environment' "$d"/llb/exec/env/overlay + + test::one "Exec: non existent dir" --exit=0 --stdout={} \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/dir/doesnotexist + test::one "Exec: valid dir" --exit=0 --stdout={} \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/dir/exist + + disable test::one "Exec: exit code propagation (FIXME https://github.com/blocklayerhq/dagger/issues/74)" --exit=123 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/exit_code + + test::one "Exec: script with referenced non-concrete property should not be executed, and should succeed overall" --exit=0 --stdout='{"hello":"world"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/undefined/non_concrete_referenced + # NOTE: the exec is meant to fail - and we test that as a way to confirm it has been executed + test::one "Exec: script with unreferenced undefined properties should be executed" --exit=1 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/undefined/non_concrete_not_referenced + test::one "Exec: package with optional def, not referenced, should be executed" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/undefined/with_pkg_def + test::one "Exec: script with optional prop, not referenced, should be executed" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/undefined/with_pkg_optional + disable test::one "Exec: script with non-optional prop, not referenced, should be executed (FIXME https://github.com/blocklayerhq/dagger/issues/70)" --exit=1 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/exec/undefined/with_pkg_mandatory +} + +test::llb::export(){ + test::one "Export: json" --exit=0 --stdout='{"testMap":{"something":"something"},"testScalar":true}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/json + + test::one "Export: string" --exit=0 --stdout='{"test":"something"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/string + + test::one "Export: string with additional constraint success" --exit=0 --stdout='{"test":"something"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/withvalidation + + test::one "Export: many concurrent" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/concurrency + + test::one "Export: does not pass additional validation" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/invalid/validation + + test::one "Export: invalid format" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/invalid/format + + test::one "Export: invalid path" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/invalid/path + + test::one "Export: number" --exit=0 --stdout='{"test":-123.5}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/float + + disable test::one "Export: number (FIXME: https://github.com/blocklayerhq/dagger/issues/96)" --exit=0 --stdout='{"test":-123.5}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/number + + test::one "Export: yaml" --exit=0 --stdout='{"testMap":{"something":"something"},"testScalar":true}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/yaml + + test::one "Export: bool" --exit=0 --stdout='{"test":true}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/export/bool +} + +test::llb::copy(){ + test::one "Copy: valid components" --exit=0 --stdout='{"component":{},"test1":"lol","test2":"lol"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/copy/valid/component + test::one "Copy: valid script" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/copy/valid/script + + disable test::one "Copy: invalid caching (FIXME https://github.com/blocklayerhq/dagger/issues/44)" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/copy/invalid/cache +} + +test::llb::load(){ + test::one "Load: valid components" --exit=0 --stdout='{"component":{},"test1":"lol","test2":"lol"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/load/valid/component + test::one "Load: valid script" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/load/valid/script + + test::one "Load: invalid caching (FIXME https://github.com/blocklayerhq/dagger/issues/44)" --exit=1 --stdout= \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/load/invalid/cache +} + +test::llb::local(){ + disable "" "There are no local tests right now (the feature is possibly not functioning at all: see https://github.com/blocklayerhq/dagger/issues/41)" +} + +test::llb::mount(){ + test::one "Mount: tmpfs" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/mounts/valid/tmpfs + + test::one "Mount: cache" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/mounts/valid/cache + + test::one "Mount: component" --exit=0 --stdout='{"test":"hello world"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/mounts/valid/component + + disable test::one "Mount: script (FIXME https://github.com/blocklayerhq/dagger/issues/46)" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/mounts/valid/script +} + +test::llb::subdir() { + test::one "Subdir: simple usage" --exit=0 --stdout='{"hello":"world"}' \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/llb/subdir/simple +} + +test::llb::dockerbuild() { + test::one "Docker Build" --exit=0 \ + "$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-dir TestData="$d"/llb/dockerbuild/testdata "$d"/llb/dockerbuild } case "${1:-all}" in