crowdsec/test/ansible/prepare-run
mmetc a19748ae35
Rename directory "tests" to "test" (#2094)
If you use a ./test/local directory, you need to create it again:
$ make clean bats-build bats-fixture
2023-03-03 15:54:49 +01:00

50 lines
1.3 KiB
Bash
Executable file

#!/usr/bin/env bash
# This loops over all the available boxes, running the test suite on each one.
# The results are collected in a file. If the file already exists, tests are not run again.
env=$1
if [[ -z "${env}" ]]; then
echo "Usage: $0 <env> [vagrant-dir]..."
exit 1
fi
shift
vagrant_dirs=("$@")
if [[ $# -eq 0 ]]; then
# find all targets, with possibly weird names, don't go into subfolders (like 'experimental/')
readarray -d '' vagrant_dirs < <(find vagrant -mindepth 1 -maxdepth 1 -type d -print0 | sort -z | grep -z -v .vagrant)
fi
#shellcheck disable=SC1090
. "${env}"
VAGRANT_FORCE_COLOR=true
export VAGRANT_FORCE_COLOR
for vm in "${vagrant_dirs[@]}"; do
outfile="$(basename "${env}").out"
pushd "${vm}" >/dev/null || exit
if [[ ! -f "Vagrantfile" ]]; then
popd >/dev/null || exit
continue
fi
echo "Prepare and run tests on ${vm}..."
if [[ -x "skip" ]]; then
if ! ./skip; then
popd >/dev/null || exit
continue
fi
fi
if [[ ! -f "${outfile}" ]]; then
vagrant up --no-provision
vagrant provision 2>&1 | tee "${outfile}"
vagrant destroy -f
else
echo "skipping: ${vm}, file ${outfile} already exists." >&2
fi
popd >/dev/null || exit
done