Skip to content

Instantly share code, notes, and snippets.

@msaari
Created November 17, 2019 04:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save msaari/79a48b5211504cec2d256951fda31889 to your computer and use it in GitHub Desktop.
Save msaari/79a48b5211504cec2d256951fda31889 to your computer and use it in GitHub Desktop.
Test runner for running PHPUnit tests with many WordPress versions
#!/bin/sh
# Test runner for running Phpunit tests against multiple WordPress versions.
# Will fetch and install different WordPress versions in this directory:
BASE_PATH=~/multiwptest
if [ ! -d $BASE_PATH ]
then
echo "ERROR: Test directory $BASE_PATH is missing."
exit 1
fi
if [ ! -f "$BASE_PATH/wp-tests-config.php" ]
then
echo "ERROR: $BASE_PATH/wp-tests-config.php is missing."
exit 1
fi
# Minimum version number to test:
MINIMUM_VERSION=5.0.7
# Fetch the available WordPress versions.
echo "FETCHING AVAILABLE WP VERSIONS WITH A MINIMUM OF $MINIMUM_VERSION:"
VERSIONS="$(php wpversion.php $MINIMUM_VERSION)"
echo "- found $VERSIONS"
# Store existing WP_TESTS_INSTALLATION setting so it can be restored and
# remember where we are.
ORIGINAL_WP_TESTS_INSTALLATION=$WP_TESTS_INSTALLATION
ORIGINAL_DIR=$PWD
for version in $VERSIONS
do
TEST_VERSION=true
echo "\nTESTING $version:"
echo "- see if dir exists"
if [ -d "$BASE_PATH/wordpress-$version" ]
then
echo "- exists!"
else
echo "- doesn't exist, fetching..."
cd $BASE_PATH
wget -nv https://wordpress.org/wordpress-$version.zip
if [ -f "wordpress-$version.zip" ]
then
echo "- fetched, unzipping"
mkdir tmp
unzip -q wordpress-$version.zip -d tmp
echo "- rename"
mv tmp/wordpress wordpress-$version
rm -rf tmp
echo "- copy wp-tests-config.php"
cp wp-tests-config.php wordpress-$version
echo "- done!"
else
echo "- couldn't fetch, skipping this version"
TEST_VERSION=false
fi
fi
if [ $TEST_VERSION ]
then
export WP_TESTS_INSTALLATION=$BASE_PATH/wordpress-$version
cd $ORIGINAL_DIR
if [ -f "multisite.xml" ] && [ ${version:0:1} == "5" ] && [ ${version:2:1} != "0" ]
then
phpunit -c multisite.xml --stop-on-failure
else
phpunit --stop-on-failure
fi
else
echo "- skipping version"
fi
done
export WP_TESTS_INSTALLATION=$ORIGINAL_WP_TESTS_INSTALLATION
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment