diff --git a/scripts/terraform_test_all.sh b/scripts/terraform_test_all.sh new file mode 100644 index 00000000..01258904 --- /dev/null +++ b/scripts/terraform_test_all.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Find all directories that contain any .tftest.hcl files and run terraform test in each + +run_dir() { + local dir="$1" + echo "==> Running terraform test in $dir" + (cd "$dir" && terraform init -upgrade -input=false -no-color > /dev/null && terraform test -no-color -verbose) +} + +mapfile -t test_dirs < <(find . -type f -name "*.tftest.hcl" -print0 | xargs -0 -I{} dirname {} | sort -u) + +if [[ ${#test_dirs[@]} -eq 0 ]]; then + echo "No .tftest.hcl tests found." + exit 0 +fi + +status=0 +for d in "${test_dirs[@]}"; do + if ! run_dir "$d"; then + status=1 + fi +done + +exit $status