82 lines
2.0 KiB
Bash
Executable File
82 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_NAME="${COMPOSE_PROJECT_NAME:-mahak-authenticate-bridge-test}"
|
|
WORDPRESS_PORT="${WORDPRESS_PORT:-8080}"
|
|
KEEP_TEST_ENV="${KEEP_TEST_ENV:-0}"
|
|
|
|
if docker info >/dev/null 2>&1; then
|
|
DOCKER=(docker)
|
|
elif command -v sudo >/dev/null 2>&1; then
|
|
DOCKER=(sudo docker)
|
|
else
|
|
echo "Docker is not available." >&2
|
|
exit 1
|
|
fi
|
|
|
|
COMPOSE=("${DOCKER[@]}" compose)
|
|
|
|
compose() {
|
|
WORDPRESS_PORT="$WORDPRESS_PORT" "${COMPOSE[@]}" \
|
|
-p "$PROJECT_NAME" \
|
|
-f "$SCRIPT_DIR/docker-compose.yml" \
|
|
"$@"
|
|
}
|
|
|
|
cleanup() {
|
|
if [[ "$KEEP_TEST_ENV" != "1" ]]; then
|
|
compose down --volumes --remove-orphans >/dev/null 2>&1 || true
|
|
fi
|
|
}
|
|
|
|
wait_for_wordpress_files() {
|
|
for _ in $(seq 1 90); do
|
|
if compose exec -T wordpress php -r 'exit(is_file("/var/www/html/wp-load.php") ? 0 : 1);' >/dev/null 2>&1; then
|
|
return 0
|
|
fi
|
|
|
|
sleep 1
|
|
done
|
|
|
|
echo "WordPress files were not ready in time." >&2
|
|
return 1
|
|
}
|
|
|
|
run_php_lint() {
|
|
compose exec -T wordpress sh -lc '
|
|
find /var/www/html/wp-content/plugins/mahak-authenticate-bridge \
|
|
-path "*/.git" -prune -o \
|
|
-name "*.php" -print \
|
|
| xargs -n1 php -l
|
|
'
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
echo "Resetting test containers and volumes..."
|
|
compose down --volumes --remove-orphans
|
|
|
|
echo "Pulling Docker images..."
|
|
compose pull
|
|
|
|
echo "Starting fresh WordPress on http://127.0.0.1:${WORDPRESS_PORT} ..."
|
|
compose up -d
|
|
|
|
echo "Waiting for WordPress files..."
|
|
wait_for_wordpress_files
|
|
|
|
echo "Running PHP 7.4 syntax checks..."
|
|
run_php_lint
|
|
|
|
echo "Running authentication integration test in PHP 7.4..."
|
|
compose exec -T wordpress php /var/www/html/wp-content/plugins/mahak-authenticate-bridge/test/integration-authentication.php
|
|
|
|
echo "Integration test passed."
|
|
|
|
if [[ "$KEEP_TEST_ENV" == "1" ]]; then
|
|
echo "Test environment kept running. Clean it up with:"
|
|
echo " ${COMPOSE[*]} -p $PROJECT_NAME -f $SCRIPT_DIR/docker-compose.yml down --volumes --remove-orphans"
|
|
fi
|