#!/usr/bin/env bash set -euo pipefail repository_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) workspace_venv="$repository_root/../.venv" test_tmp=$(mktemp -d) chmod 0700 "$test_tmp" export ANSIBLE_COLLECTIONS_PATH="$test_tmp/collections" export ANSIBLE_ROLES_PATH="$(dirname "$repository_root")" inventory="$repository_root/tests/inventory" converge="$repository_root/tests/converge.yml" verify="$repository_root/tests/verify.yml" ansible_playbook="$workspace_venv/bin/ansible-playbook" default_commit=77ae132e5609916da40dcd4fcc749c000a63cbac cleanup() { exit_status=$? trap - EXIT "$ansible_playbook" -i "$inventory" "$converge" >/dev/null 2>&1 || true rm -rf -- "$test_tmp" exit "$exit_status" } trap cleanup EXIT require_clean_recap() { grep -Eq 'changed=0 .*failed=0' "$1" } cd "$repository_root" "$workspace_venv/bin/ansible-galaxy" collection install \ -r collections/requirements.yml \ -p "$ANSIBLE_COLLECTIONS_PATH" "$ansible_playbook" -i "$inventory" --syntax-check "$converge" "$workspace_venv/bin/ansible-lint" "$converge" "$verify" baseline_log="$test_tmp/baseline.log" "$ansible_playbook" -i "$inventory" "$converge" | tee "$baseline_log" "$ansible_playbook" -i "$inventory" \ -e "notarius_expected_version=v0.6.0" \ -e "notarius_expected_commit=$default_commit" \ "$verify" repeat_log="$test_tmp/repeat.log" "$ansible_playbook" -i "$inventory" "$converge" | tee "$repeat_log" require_clean_recap "$repeat_log"