2021-08-12 12:47:50 +02:00
|
|
|
## Doc commands are being extracted from this file and helpers.
|
|
|
|
## Indentation is important, please append at the end
|
|
|
|
|
|
|
|
common_setup() {
|
|
|
|
load 'node_modules/bats-support/load'
|
|
|
|
load 'node_modules/bats-assert/load'
|
|
|
|
|
|
|
|
# Dagger Binary
|
|
|
|
# FIXME: `command -v` must be wrapped in a sub-bash,
|
|
|
|
# otherwise infinite recursion when DAGGER_BINARY is not set.
|
|
|
|
export DAGGER="${DAGGER_BINARY:-$(bash -c 'command -v dagger')}"
|
|
|
|
|
2022-03-24 03:01:09 +01:00
|
|
|
# Disable telemetry
|
|
|
|
DAGGER_TELEMETRY_DISABLE="1"
|
|
|
|
export DAGGER_TELEMETRY_DISABLE
|
|
|
|
|
2021-09-23 20:07:09 +02:00
|
|
|
# Set the project to the universe directory (so tests can run from anywhere)
|
2021-08-12 12:47:50 +02:00
|
|
|
UNIVERSE="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )"
|
2021-09-23 20:07:09 +02:00
|
|
|
DAGGER_PROJECT="$UNIVERSE"
|
|
|
|
export DAGGER_PROJECT
|
2021-08-12 12:47:50 +02:00
|
|
|
|
2021-10-05 01:42:55 +02:00
|
|
|
# Force plain printing for error reporting
|
|
|
|
DAGGER_LOG_FORMAT="plain"
|
2021-08-12 12:47:50 +02:00
|
|
|
export DAGGER_LOG_FORMAT
|
|
|
|
|
2021-09-23 20:07:09 +02:00
|
|
|
# Sandbox project.
|
|
|
|
DAGGER_SANDBOX="$(mktemp -d -t dagger-project-XXXXXX)"
|
2021-08-12 12:47:50 +02:00
|
|
|
export DAGGER_SANDBOX
|
2021-09-23 20:07:09 +02:00
|
|
|
dagger init --project "$DAGGER_SANDBOX"
|
2021-08-12 12:47:50 +02:00
|
|
|
|
2022-03-23 23:02:17 +01:00
|
|
|
if [ -n "$GITHUB_ACTIONS" ];
|
|
|
|
then
|
|
|
|
export DAGGER_CACHE_TO="type=gha,mode=max,scope=docs-tests-$BATS_TEST_NAME"
|
|
|
|
export DAGGER_CACHE_FROM="type=gha,scope=docs-tests-$BATS_TEST_NAME"
|
|
|
|
fi
|
|
|
|
|
2021-08-12 12:47:50 +02:00
|
|
|
# allows the use of `sops`
|
|
|
|
SOPS_AGE_KEY_FILE=~/.config/dagger/keys.txt
|
|
|
|
export SOPS_AGE_KEY_FILE
|
|
|
|
}
|
|
|
|
|
|
|
|
# dagger helper to execute the right binary
|
|
|
|
dagger() {
|
|
|
|
"${DAGGER}" "$@"
|
|
|
|
}
|
|
|
|
|
2021-08-30 16:06:39 +02:00
|
|
|
# Setup sandbox for dagger example
|
|
|
|
# It clones the example repository and update Sandbox to
|
2021-08-12 12:47:50 +02:00
|
|
|
setup_example_sandbox() {
|
2021-08-30 16:06:39 +02:00
|
|
|
git -C "$DAGGER_SANDBOX" clone https://github.com/dagger/examples
|
|
|
|
|
|
|
|
export DAGGER_SANDBOX="$DAGGER_SANDBOX"/examples/todoapp
|
2021-10-06 03:15:38 +02:00
|
|
|
dagger --project "$DAGGER_SANDBOX" init
|
2021-08-12 12:47:50 +02:00
|
|
|
}
|
|
|
|
|
2021-08-30 16:06:39 +02:00
|
|
|
|
2021-09-23 20:07:09 +02:00
|
|
|
# copy an environment from the current project to the sandbox.
|
2021-08-12 12:47:50 +02:00
|
|
|
#
|
|
|
|
# this is needed if the test requires altering inputs without dirtying the
|
|
|
|
# current environment.
|
|
|
|
# Usage:
|
|
|
|
# copy_to_sandbox myenv
|
|
|
|
# dagger input secret -w "$DAGGER_SANDBOX" -e myenv "temporary change"
|
2021-09-23 20:07:09 +02:00
|
|
|
# dagger up --project "$DAGGER_SANDBOX" -e myenv
|
2021-08-12 12:47:50 +02:00
|
|
|
#
|
|
|
|
# To use testdata directory in tests, add the package name as second flag
|
|
|
|
# Usage:
|
|
|
|
# copy_to_sandbox myenv mypackage
|
|
|
|
copy_to_sandbox() {
|
|
|
|
local name="$1"
|
2021-09-23 20:07:09 +02:00
|
|
|
local source="$DAGGER_PROJECT"/.dagger/env/"$name"
|
2021-08-12 12:47:50 +02:00
|
|
|
local target="$DAGGER_SANDBOX"/.dagger/env/"$name"
|
|
|
|
|
|
|
|
cp -a "$source" "$target"
|
|
|
|
|
|
|
|
if [ -d "$2" ]; then
|
|
|
|
local package="$2"
|
2021-09-23 20:07:09 +02:00
|
|
|
local source_package="$DAGGER_PROJECT"/"$package"
|
2021-08-12 12:47:50 +02:00
|
|
|
local target_package="$DAGGER_SANDBOX"/
|
|
|
|
|
|
|
|
cp -a "$source_package" "$target_package"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2021-08-20 16:09:35 +02:00
|
|
|
# Check if there is a localstack instance.
|
|
|
|
#
|
|
|
|
# This is needed to do docs test in the CI.
|
|
|
|
skip_unless_local_localstack() {
|
|
|
|
if [ "$(curl -s http://localhost:4566)" = '{"status": "running"}' ]; then
|
|
|
|
echo "Localstack available"
|
|
|
|
else
|
|
|
|
skip "Localstack not available"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2021-08-12 12:47:50 +02:00
|
|
|
# Check if there is a local kubernetes cluster.
|
|
|
|
#
|
|
|
|
# This is need to do kubernetes test in the CI.
|
|
|
|
skip_unless_local_kube() {
|
2021-12-15 00:09:44 +01:00
|
|
|
if [ -f ~/.kube/config ] && grep -q "127.0.0.1" ~/.kube/config; then
|
2021-08-12 12:47:50 +02:00
|
|
|
echo "Kubernetes available"
|
|
|
|
else
|
|
|
|
skip "local kubernetes cluster not available"
|
|
|
|
fi
|
2021-10-06 03:15:38 +02:00
|
|
|
}
|