Test runner for WordPress plugins (extended version)
3.0K
Test runner for WordPress plugins
docker run \
--network "${NETWORK_NAME}" \
-e WORDPRESS_VERSION \
-e WP_MULTISITE \
-e MYSQL_USER \
-e MYSQL_PASSWORD \
-e MYSQL_DATABASE \
-e MYSQL_HOST \
-v "$(pwd):/app" \
wildwildangel/wp-test-runner-ex
Parameters and environment variables:
NETWORK_NAME is the name of the network (created with docker network create) where MySQL server resides.WORDPRESS_VERSION is the version of WordPress to use. If the version specified is not among the preinstalled ones, it will be downloaded and configured. Preinstalled versions:
latest)WP_MULTISITE: 0 if run tests for the "single site" mode, 1 for the WPMU modeMYSQL_USER: MySQL user name (defaults to wordpress)MYSQL_PASSWORD: MySQL user password (defaults to wordpress)MYSQL_DATABASE: MySQL database for tests (defaults to wordpress_test). WARNING: this must be an empty database, as its content will be erased.MYSQL_HOST: hostname where MySQL server runsPHPUNIT_VERSION: version of PHPUnit to use. Preinstalled versions are 7, 8, and 9 (the image uses the latest stable versions provided on the official website). By default, the system uses PHPUnit 7.xPHP_VERSION: version of PHP to run the tests. Currently available versions are 7.3, 7.4, 8.0, and 8.1. PHP is installed from the ondrej/php PPA. By default, the system uses PHP 7.4DISABLE_XDEBUG: if set to a non-empty string, the runner disables the XDebug extension (this can be useful for performance reasons)First, the startup scrip checks whether the requested WordPress and WordPress test library are available. If they are not, it tries to download and install them (check the install-wp.sh for details).
The, if the user has provided the PHP_VERSION environment variable, and /usr/bin/php${PHP_VERSION} exists, the script uses update-alternatives to set the versoin of PHP.
If the user has specified a non-empty value for the DISABLE_XDEBUG environment variable, the script will use php -d xdebug.mode=Off to run tests. Otherwise, it will use php.
The startup script expects that the application to test will be mounted into the /app directory. It checks if /app/phpunit.xml or /app/phpunit.xml.dist file exists. If it does not, the script complains and terminates.
The the script chooses the version of PHPUnit to use. If the environment variable PHPUNIT_VERSION is not provided, and /app/vendor/bin/phpunit exists, it will be used as the PHPUnit. Otherwise, if the user has provided the PHPUNIT_VERSION variable, and /usr/local/bin/phpunit${PHPUNIT_VERSION} exists, the system will use it. Otherwise, the script will fall back to the preinstalled PHPUnit (~/.composer/vendor/bin/phpunit).
To run your tests, the script invokes
${PHP} -f "${PHPUNIT}" -- "$@"
#!/bin/sh
set -x
export WORDPRESS_VERSION="${1:-latest}"
export WP_MULTISITE="${2:-0}"
if [ $# -ge 2 ]; then
shift 2
elif [ $# -ge 1 ]; then
shift 1
fi
echo "--------------"
echo "Will test with WORDPRESS_VERSION=${WORDPRESS_VERSION} and WP_MULTISITE=${WP_MULTISITE}"
echo "--------------"
echo
MARIADB_VERSION="10.3"
UUID=$(date +%s000)
NETWORK_NAME="tests-${UUID}"
export MYSQL_HOST="db-${UUID}"
export MYSQL_USER=wordpress
export MYSQL_PASSWORD=wordpress
export MYSQL_DATABASE=wordpress_test
export MYSQL_ROOT_PASSWORD=wordpress
export MYSQL_INITDB_SKIP_TZINFO=1
docker network create "${NETWORK_NAME}"
db=$(docker run --network "${NETWORK_NAME}" --name "${MYSQL_HOST}" -e MYSQL_ROOT_PASSWORD -e MARIADB_INITDB_SKIP_TZINFO -e MYSQL_USER -e MYSQL_PASSWORD -e MYSQL_DATABASE -d "mariadb:${MARIADB_VERSION}")
cleanup() {
docker rm -f "${db}"
docker network rm "${NETWORK_NAME}"
}
trap cleanup EXIT
docker run \
--network "${NETWORK_NAME}" \
-e WORDPRESS_VERSION \
-e WP_MULTISITE \
-e MYSQL_USER \
-e MYSQL_PASSWORD \
-e MYSQL_DATABASE \
-e MYSQL_HOST \
-v "$(pwd):/app" \
wildwildangel/wp-test-runner-ex "/usr/local/bin/runner" "$@"
Content type
Image
Digest
sha256:e861c9caf…
Size
673.7 MB
Last updated
about 4 years ago
docker pull wildwildangel/wp-test-runner-ex