aa74b8fb7b
Signed-off-by: Sam Alba <sam.alba@gmail.com>
236 lines
7.5 KiB
Bash
236 lines
7.5 KiB
Bash
setup() {
|
|
load 'helpers'
|
|
|
|
common_setup
|
|
}
|
|
|
|
@test "op.#Load" {
|
|
run "$DAGGER" compute "$TESTDIR"/ops/load/valid/component
|
|
assert_success
|
|
assert_line '{"TestComponent":{},"TestComponentLoad":"lol","TestNestedLoad":"lol"}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/load/valid/script
|
|
assert_success
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/load/invalid/cache
|
|
assert_failure
|
|
}
|
|
|
|
@test "op.#Mount" {
|
|
# tmpfs
|
|
run "$DAGGER" compute "$TESTDIR"/ops/mounts/valid/tmpfs
|
|
assert_line '{"TestMountTmpfs":"ok"}'
|
|
assert_success
|
|
|
|
# cache
|
|
run "$DAGGER" compute "$TESTDIR"/ops/mounts/valid/cache
|
|
assert_line '{"TestMountCache":"NOT SURE WHAT TO TEST YET"}'
|
|
assert_success
|
|
|
|
# component
|
|
run "$DAGGER" compute "$TESTDIR"/ops/mounts/valid/component
|
|
assert_success
|
|
assert_line '{"test":"hello world"}'
|
|
|
|
# Invalid mount path
|
|
run "$DAGGER" compute "$TESTDIR"/ops/mounts/valid/script
|
|
assert_failure
|
|
}
|
|
|
|
@test "op.#Copy" {
|
|
run "$DAGGER" compute "$TESTDIR"/ops/copy/valid/component
|
|
assert_success
|
|
assert_line '{"TestComponent":{},"TestComponentCopy":"lol","TestNestedCopy":"lol"}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/copy/valid/script
|
|
assert_success
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/copy/invalid/cache
|
|
assert_failure
|
|
}
|
|
|
|
@test "op.#Local" {
|
|
skip "There are no local tests right now (the feature is possibly not functioning at all: see https://github.com/blocklayerhq/dagger/issues/41)"
|
|
}
|
|
|
|
@test "op.#FetchContainer" {
|
|
# non existent container image"
|
|
run "$DAGGER" compute "$TESTDIR"/ops/fetch-container/nonexistent/image
|
|
assert_failure
|
|
|
|
# non existent container tag
|
|
run "$DAGGER" compute "$TESTDIR"/ops/fetch-container/nonexistent/tag
|
|
assert_failure
|
|
|
|
# non existent container digest
|
|
run "$DAGGER" compute "$TESTDIR"/ops/fetch-container/nonexistent/digest
|
|
assert_failure
|
|
|
|
# valid containers
|
|
run "$DAGGER" compute "$TESTDIR"/ops/fetch-container/exist
|
|
assert_success
|
|
|
|
# missing ref
|
|
# FIXME: distinguish missing inputs from incorrect config
|
|
# run "$DAGGER" compute "$TESTDIR"/ops/fetch-container/invalid
|
|
# assert_failure
|
|
|
|
# non existent container image with valid digest
|
|
# FIXME https://github.com/blocklayerhq/dagger/issues/32
|
|
# run "$DAGGER" compute "$TESTDIR"/ops/fetch-container/nonexistent/image-with-valid-digest
|
|
# assert_failure
|
|
}
|
|
|
|
@test "op.#PushContainer" {
|
|
skip_unless_secrets_available "$TESTDIR"/ops/push-container/inputs.yaml
|
|
|
|
# ensure the tests fail without credentials
|
|
run "$DAGGER" compute "$TESTDIR"/ops/push-container/valid
|
|
assert_failure
|
|
|
|
# check that they succeed with the credentials
|
|
run "$DAGGER" compute --input-yaml "$TESTDIR"/ops/push-container/inputs.yaml "$TESTDIR"/ops/push-container
|
|
assert_success
|
|
}
|
|
|
|
@test "op.#FetchGit" {
|
|
run "$DAGGER" compute "$TESTDIR"/ops/fetch-git/exist
|
|
assert_success
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/fetch-git/nonexistent/remote
|
|
assert_failure
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/fetch-git/nonexistent/ref
|
|
assert_failure
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/fetch-git/nonexistent/bork
|
|
assert_failure
|
|
|
|
# FIXME: distinguish missing inputs from incorrect config
|
|
# run "$DAGGER" compute "$TESTDIR"/ops/fetch-git/invalid
|
|
# assert_failure
|
|
}
|
|
|
|
@test "op.#Exec" {
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/invalid
|
|
assert_failure
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/error
|
|
assert_failure
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/simple
|
|
assert_success
|
|
|
|
# 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...
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/always
|
|
assert_success
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/env/invalid
|
|
assert_failure
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/env/valid
|
|
assert_success
|
|
|
|
run "$DAGGER" compute --input-string 'bar=overlay environment' "$TESTDIR"/ops/exec/env/overlay
|
|
assert_success
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/dir/doesnotexist
|
|
assert_success
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/dir/exist
|
|
assert_success
|
|
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/undefined/non_concrete_referenced
|
|
assert_success
|
|
assert_line '{"hello":"world"}'
|
|
|
|
# NOTE: the exec is meant to fail - and we test that as a way to confirm it has been executed
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/undefined/non_concrete_not_referenced
|
|
assert_failure
|
|
|
|
# package with optional def, not referenced, should be executed
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/undefined/with_pkg_def
|
|
assert_success
|
|
|
|
# script with optional prop, not referenced, should be executed
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/undefined/with_pkg_optional
|
|
assert_success
|
|
|
|
# FIXME https://github.com/blocklayerhq/dagger/issues/74
|
|
# run "$DAGGER" compute "$TESTDIR"/ops/exec/exit_code
|
|
# assert_failure # --exit=123
|
|
|
|
# script with non-optional prop, not referenced, should be executed
|
|
run "$DAGGER" compute "$TESTDIR"/ops/exec/undefined/with_pkg_mandatory
|
|
assert_success
|
|
}
|
|
|
|
@test "op.#Export" {
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/json
|
|
assert_success
|
|
assert_line '{"TestExportList":["milk","pumpkin pie","eggs","juice"],"TestExportMap":{"something":"something"},"TestExportScalar":true}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/string
|
|
assert_success
|
|
assert_line '{"TestExportString":"something"}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/withvalidation
|
|
assert_success
|
|
assert_line '{"TestExportStringValidation":"something"}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/concurrency
|
|
assert_success
|
|
assert_line '{"TestExportConcurrency1":"lol1","TestExportConcurrency10":"lol10","TestExportConcurrency2":"lol2","TestExportConcurrency3":"lol3","TestExportConcurrency4":"lol4","TestExportConcurrency5":"lol5","TestExportConcurrency6":"lol6","TestExportConcurrency7":"lol7","TestExportConcurrency8":"lol8","TestExportConcurrency9":"lol9"}'
|
|
|
|
# does not pass additional validation
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/invalid/validation
|
|
assert_failure
|
|
|
|
# invalid format
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/invalid/format
|
|
assert_failure
|
|
|
|
# invalid path
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/invalid/path
|
|
assert_failure
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/float
|
|
assert_success
|
|
assert_line '{"TestExportFloat":-123.5}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/yaml
|
|
assert_success
|
|
assert_line '{"TestExportList":["milk","pumpkin pie","eggs","juice"],"TestExportMap":{"something":"something"},"TestExportScalar":true}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/bool
|
|
assert_success
|
|
assert_line '{"TestExportBool":true}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/export/number
|
|
assert_success
|
|
assert_line '{"TestExportNumber":-123.5}'
|
|
}
|
|
|
|
@test "op.#Subdir" {
|
|
run "$DAGGER" compute "$TESTDIR"/ops/subdir/valid/simple
|
|
assert_success
|
|
assert_line '{"TestSimpleSubdir":"world"}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/subdir/valid/container
|
|
assert_success
|
|
assert_line '{"TestSubdirMount":"world"}'
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/subdir/invalid/exec
|
|
assert_failure
|
|
|
|
run "$DAGGER" compute "$TESTDIR"/ops/subdir/invalid/path
|
|
assert_failure
|
|
}
|
|
|
|
@test "op.#DockerBuild" {
|
|
run "$DAGGER" compute --input-dir TestData="$TESTDIR"/ops/dockerbuild/testdata "$TESTDIR"/ops/dockerbuild
|
|
assert_success
|
|
}
|