-
Notifications
You must be signed in to change notification settings - Fork 86
Light updates to the install-wp-tests.sh
script
#356
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
2176805
f847213
a4e6950
8746658
4f19c42
a05593f
49792b7
2b5b25a
7859375
634d3f6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,7 @@ | ||
#!/usr/bin/env bash | ||
|
||
# See https://raw.githubusercontent.com/wp-cli/scaffold-command/master/templates/install-wp-tests.sh | ||
|
||
if [ $# -lt 3 ]; then | ||
echo "usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version] [skip-database-creation]" | ||
exit 1 | ||
|
@@ -15,11 +17,13 @@ SKIP_DB_CREATE=${6-false} | |
TMPDIR=${TMPDIR-/tmp} | ||
TMPDIR=$(echo $TMPDIR | sed -e "s/\/$//") | ||
WP_TESTS_DIR=${WP_TESTS_DIR-$TMPDIR/wordpress-tests-lib} | ||
WP_TESTS_FILE="$WP_TESTS_DIR"/includes/functions.php | ||
WP_CORE_DIR=${WP_CORE_DIR-$TMPDIR/wordpress} | ||
WP_CORE_FILE="$WP_CORE_DIR"/wp-settings.php | ||
|
||
download() { | ||
if [ `which curl` ]; then | ||
curl -s "$1" > "$2"; | ||
curl -L -s "$1" > "$2"; | ||
elif [ `which wget` ]; then | ||
wget -nv -O "$2" "$1" | ||
else | ||
|
@@ -28,13 +32,39 @@ download() { | |
fi | ||
} | ||
|
||
# Check if svn is installed | ||
check_svn_installed() { | ||
if ! command -v svn > /dev/null; then | ||
echo "Error: svn is not installed. Please install svn and try again." | ||
exit 1 | ||
fi | ||
check_for_updates() { | ||
local remote_url="https://raw.githubusercontent.com/wp-cli/scaffold-command/main/templates/install-wp-tests.sh" | ||
local tmp_script="$TMPDIR/install-wp-tests.sh.latest" | ||
|
||
download "$remote_url" "$tmp_script" | ||
|
||
if [ ! -f "$tmp_script" ]; then | ||
echo "Warning: Could not download the latest version of the script for update check." | ||
return | ||
fi | ||
|
||
local local_hash="" | ||
local remote_hash="" | ||
|
||
if command -v shasum > /dev/null; then | ||
local_hash=$(shasum -a 256 "$0" | awk '{print $1}') | ||
remote_hash=$(shasum -a 256 "$tmp_script" | awk '{print $1}') | ||
elif command -v sha256sum > /dev/null; then | ||
local_hash=$(sha256sum "$0" | awk '{print $1}') | ||
remote_hash=$(sha256sum "$tmp_script" | awk '{print $1}') | ||
else | ||
echo "Warning: Could not find shasum or sha256sum to check for script updates." | ||
rm "$tmp_script" | ||
return | ||
fi | ||
|
||
rm "$tmp_script" | ||
|
||
if [ "$local_hash" != "$remote_hash" ]; then | ||
echo "Warning: A newer version of this script is available at $remote_url" | ||
fi | ||
} | ||
check_for_updates | ||
|
||
if [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+\-(beta|RC)[0-9]+$ ]]; then | ||
WP_BRANCH=${WP_VERSION%\-*} | ||
|
@@ -66,18 +96,16 @@ set -ex | |
|
||
install_wp() { | ||
|
||
if [ -d $WP_CORE_DIR ]; then | ||
if [ -f $WP_CORE_FILE ]; then | ||
return; | ||
fi | ||
|
||
rm -rf $WP_CORE_DIR | ||
mkdir -p $WP_CORE_DIR | ||
|
||
if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then | ||
mkdir -p $TMPDIR/wordpress-trunk | ||
rm -rf $TMPDIR/wordpress-trunk/* | ||
check_svn_installed | ||
svn export --quiet https://core.svn.wordpress.org/trunk $TMPDIR/wordpress-trunk/wordpress | ||
mv $TMPDIR/wordpress-trunk/wordpress/* $WP_CORE_DIR | ||
download https://github.com/WordPress/wordpress/archive/refs/heads/master.tar.gz $TMPDIR/wordpress.tar.gz | ||
tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR | ||
else | ||
if [ $WP_VERSION == 'latest' ]; then | ||
local ARCHIVE_NAME='latest' | ||
|
@@ -103,8 +131,6 @@ install_wp() { | |
download https://wordpress.org/${ARCHIVE_NAME}.tar.gz $TMPDIR/wordpress.tar.gz | ||
tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR | ||
fi | ||
|
||
download https://raw.githubusercontent.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php | ||
} | ||
|
||
install_test_suite() { | ||
|
@@ -115,22 +141,43 @@ install_test_suite() { | |
local ioption='-i' | ||
fi | ||
|
||
# set up testing suite if it doesn't yet exist | ||
if [ ! -d $WP_TESTS_DIR ]; then | ||
# set up testing suite if it doesn't yet exist or only partially exists | ||
if [ ! -f $WP_TESTS_FILE ]; then | ||
# set up testing suite | ||
rm -rf $WP_TESTS_DIR | ||
mkdir -p $WP_TESTS_DIR | ||
rm -rf $WP_TESTS_DIR/{includes,data} | ||
check_svn_installed | ||
svn export --quiet --ignore-externals https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes | ||
svn export --quiet --ignore-externals https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data | ||
|
||
if [[ $WP_TESTS_TAG == 'trunk' ]]; then | ||
ref=trunk | ||
archive_url="https://github.com/WordPress/wordpress-develop/archive/refs/heads/${ref}.tar.gz" | ||
elif [[ $WP_TESTS_TAG == branches/* ]]; then | ||
ref=${WP_TESTS_TAG#branches/} | ||
archive_url="https://github.com/WordPress/wordpress-develop/archive/refs/heads/${ref}.tar.gz" | ||
else | ||
ref=${WP_TESTS_TAG#tags/} | ||
archive_url="https://github.com/WordPress/wordpress-develop/archive/refs/tags/${ref}.tar.gz" | ||
fi | ||
|
||
download ${archive_url} $TMPDIR/wordpress-develop.tar.gz | ||
tar -zxmf $TMPDIR/wordpress-develop.tar.gz -C $TMPDIR | ||
mv $TMPDIR/wordpress-develop-${ref}/tests/phpunit/includes $WP_TESTS_DIR/ | ||
mv $TMPDIR/wordpress-develop-${ref}/tests/phpunit/data $WP_TESTS_DIR/ | ||
rm -rf $TMPDIR/wordpress-develop-${ref} | ||
rm $TMPDIR/wordpress-develop.tar.gz | ||
fi | ||
|
||
if [ ! -f wp-tests-config.php ]; then | ||
download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php | ||
if [ ! -f "$WP_TESTS_DIR"/wp-tests-config.php ]; then | ||
if [[ $WP_TESTS_TAG == 'trunk' ]]; then | ||
ref=master | ||
elif [[ $WP_TESTS_TAG == branches/* ]]; then | ||
ref=${WP_TESTS_TAG#branches/} | ||
else | ||
ref=${WP_TESTS_TAG#tags/} | ||
fi | ||
download https://raw.githubusercontent.com/WordPress/wordpress-develop/${ref}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php | ||
# remove all forward slashes in the end | ||
WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::") | ||
sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php | ||
sed $ioption "s:__DIR__ . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php | ||
sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php | ||
sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php | ||
sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php | ||
|
@@ -143,7 +190,11 @@ recreate_db() { | |
shopt -s nocasematch | ||
if [[ $1 =~ ^(y|yes)$ ]] | ||
then | ||
mysqladmin drop $DB_NAME -f --user="$DB_USER" --password="$DB_PASS"$EXTRA | ||
if [ `which mariadb-admin` ]; then | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just because MariaDB might exist locally, is that sufficient to know that the developer wants to use it? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could allow overriding with a flag perhaps if needed. |
||
mariadb-admin drop $DB_NAME -f --user="$DB_USER" --password="$DB_PASS"$EXTRA | ||
else | ||
mysqladmin drop $DB_NAME -f --user="$DB_USER" --password="$DB_PASS"$EXTRA | ||
fi | ||
create_db | ||
echo "Recreated the database ($DB_NAME)." | ||
else | ||
|
@@ -153,7 +204,11 @@ recreate_db() { | |
} | ||
|
||
create_db() { | ||
mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA | ||
if [ `which mariadb-admin` ]; then | ||
mariadb-admin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA | ||
else | ||
mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA | ||
fi | ||
} | ||
|
||
install_db() { | ||
|
@@ -179,7 +234,12 @@ install_db() { | |
fi | ||
|
||
# create database | ||
if [ $(mysql --user="$DB_USER" --password="$DB_PASS"$EXTRA --execute='show databases;' | grep ^$DB_NAME$) ] | ||
if [ `which mariadb` ]; then | ||
local DB_CLIENT='mariadb' | ||
else | ||
local DB_CLIENT='mysql' | ||
fi | ||
if [ $($DB_CLIENT --user="$DB_USER" --password="$DB_PASS"$EXTRA --execute='show databases;' | grep ^$DB_NAME$) ] | ||
then | ||
echo "Reinstalling will delete the existing test database ($DB_NAME)" | ||
read -p 'Are you sure you want to proceed? [y/N]: ' DELETE_EXISTING_DB | ||
|
Uh oh!
There was an error while loading. Please reload this page.