Files
wordpress/tests/run.sh
kawaiipunk 90d44bd3bc Fix lint issues and improve test suite resilience
- compose.matrix.yml: add trailing newline
- compose.ftp-222*.yml: fix YAML indentation (8->6 spaces)
- entrypoint.sh.tmpl: fix SC2198 ([ -n "$@" ] -> [ $# -gt 0 ])
- All .tmpl files: migrate from {{ env }} to {{ getenv }} for gomplate v5 compat
- uploads.ini.tmpl: add {{- / -}} whitespace trimming, fix double-space typo
- tests/run.sh: only run ShellCheck on *.sh.tmpl files
- tests/test_shell.sh: gracefully skip if shellcheck not installed
- tests/test_templates.sh: remove dead render() function,
  gracefully skip if gomplate not found, use set -a/. for env sourcing
- tests/test_compose_config.sh: validate override files combined
  with compose.yml, skip partial snippets needing more context
- README.md: add test instructions with brew install
2026-06-02 23:36:18 +01:00

55 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
# Root of the project directory
ROOT="$(dirname "$(realpath "$0")")"
echo "==================================="
echo " WordPress Recipe Test Suite"
echo "==================================="
echo ""
# Collect all compose files for YAML validation
COMPOSE_FILES=()
while IFS= read -r f; do
COMPOSE_FILES+=("$f")
done < <(find "$ROOT/.." -maxdepth 1 -name 'compose*.yml' | sort)
# Collect all tmpl files for shellcheck (only those with bash content)
SHELL_TMPL_FILES=()
while IFS= read -r f; do
SHELL_TMPL_FILES+=("$f")
done < <(find "$ROOT/.." -maxdepth 1 -name '*.sh.tmpl' | sort)
# Track total failures across all test suites
failures=0
# Validate YAML syntax of all compose files
echo "========================================================================"
"$ROOT/test_yaml.sh" "${COMPOSE_FILES[@]}" || failures=$((failures + 1))
echo ""
# Lint shell scripts inside Go templates (after stripping template tags)
echo "========================================================================"
"$ROOT/test_shell.sh" "${SHELL_TMPL_FILES[@]}" || failures=$((failures + 1))
echo ""
# Render templates with fixture env files and verify expected output
echo "========================================================================"
"$ROOT/test_templates.sh" || failures=$((failures + 1))
echo ""
# Validate compose files against the Docker Compose specification
echo "========================================================================"
"$ROOT/test_compose_config.sh" || failures=$((failures + 1))
echo ""
echo "==================================="
if [ "$failures" -eq 0 ]; then
echo " All tests passed!"
else
echo " $failures test suite(s) failed"
fi
echo "==================================="
exit "$failures"