Skip to content

Commit a0b90f7

Browse files
committed
Add prepare-tests info
When running composer prepare-tests and there is an errro, no usefull information is shown. Now It diesplays all the variables it uses. And when giving an error, display where to find the documentation.
1 parent 0c5c2e9 commit a0b90f7

File tree

1 file changed

+47
-12
lines changed

1 file changed

+47
-12
lines changed

bin/install-package-tests

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,13 @@
1212
is_numeric() {
1313
case $1 in
1414
''|*[!0-9]*) return 1;; # returns 1 if not numeric
15-
*) return 0;; # returns 0 if numeric
15+
*) return 0;; # returns 0 if numeric
1616
esac
1717
}
18+
# Promt color vars.
19+
C_RED="\033[31m"
20+
C_BLUE="\033[34m"
21+
NO_FORMAT="\033[0m"
1822

1923
HOST=localhost
2024
PORT=""
@@ -28,65 +32,93 @@ if [ -n "${WP_CLI_TEST_DBHOST}" ]; then
2832
if [ -n "${PORT}" ]; then
2933
# If the port is not numeric, then we assume it is a socket path.
3034
if is_numeric "${PORT}"; then
35+
echo "Connecting to custom host: ${C_BLUE}${HOST}${NO_FORMAT} on port ${C_BLUE}${PORT}${NO_FORMAT}"
3136
HOST_STRING="${HOST_STRING} --port=${PORT} --protocol=tcp"
3237
else
38+
echo "Connecting to custom host: ${C_BLUE}${HOST}${NO_FORMAT} on socket ${C_BLUE}${PORT}${NO_FORMAT}"
3339
HOST_STRING="${HOST_STRING} --socket=${PORT} --protocol=socket"
3440
fi
41+
else
42+
echo "Connecting to custom host: ${C_BLUE}${HOST}${NO_FORMAT}"
3543
fi
44+
else
45+
echo "Connecting to default host: ${C_BLUE}${HOST}${NO_FORMAT}"
3646
fi
3747

3848
USER=root
3949
if [ -n "${WP_CLI_TEST_DBROOTUSER}" ]; then
40-
USER="${WP_CLI_TEST_DBROOTUSER}"
50+
echo "Connecting with custom root user: ${C_BLUE}${WP_CLI_TEST_DBROOTUSER}${NO_FORMAT}"
51+
USER="${WP_CLI_TEST_DBROOTUSER}"
52+
else
53+
echo "Connecting with default root user: ${C_BLUE}${USER}${NO_FORMAT}"
4154
fi
4255

4356
PASSWORD_STRING=""
4457
if [ -n "${WP_CLI_TEST_DBROOTPASS}" ]; then
45-
PASSWORD_STRING="-p${WP_CLI_TEST_DBROOTPASS}"
58+
echo "Connecting with custom root password: ${C_BLUE}${WP_CLI_TEST_DBROOTPASS}${NO_FORMAT}"
59+
PASSWORD_STRING="-p${WP_CLI_TEST_DBROOTPASS}"
60+
else
61+
echo "Connecting with default root password: ${C_BLUE}empty${NO_FORMAT}"
4662
fi
4763

4864
TEST_DB=wp_cli_test
4965
if [ -n "${WP_CLI_TEST_DBNAME}" ]; then
50-
TEST_DB="${WP_CLI_TEST_DBNAME}"
66+
echo "Using custom test database: ${C_BLUE}${WP_CLI_TEST_DBNAME}${NO_FORMAT}"
67+
TEST_DB="${WP_CLI_TEST_DBNAME}"
68+
else
69+
echo "Using default test database: ${C_BLUE}${TEST_DB}${NO_FORMAT}"
5170
fi
5271

5372
TEST_USER=wp_cli_test
5473
if [ -n "${WP_CLI_TEST_DBUSER}" ]; then
55-
TEST_USER="${WP_CLI_TEST_DBUSER}"
74+
echo "Using custom test user: ${C_BLUE}${WP_CLI_TEST_DBUSER}${NO_FORMAT}"
75+
TEST_USER="${WP_CLI_TEST_DBUSER}"
76+
else
77+
echo "Using default test user: ${C_BLUE}${TEST_USER}${NO_FORMAT}"
5678
fi
5779

5880
TEST_PASSWORD=password1
5981
if [ -n "${WP_CLI_TEST_DBPASS}" ]; then
60-
TEST_PASSWORD="${WP_CLI_TEST_DBPASS}"
82+
echo "Using custom test password: ${C_BLUE}${WP_CLI_TEST_DBPASS}${NO_FORMAT}"
83+
TEST_PASSWORD="${WP_CLI_TEST_DBPASS}"
84+
else
85+
echo "Using default test password: ${C_BLUE}${TEST_PASSWORD}${NO_FORMAT}"
6186
fi
6287

6388
echo 'Checking if MySQL is ready...'
89+
90+
MYSQL_TRIES=36
91+
MYSQL_WAIT=5
6492
while ! mysql ${HOST_STRING} --user="${USER}" "${PASSWORD_STRING}" --execute="SHOW DATABASES;" | grep 'information_schema' >/dev/null;
6593
do
66-
echo 'Waiting for MySQL...'
67-
sleep 5
94+
echo "Waiting for MySQL(${i}/${MYSQL_TRIES})..."
95+
sleep ${MYSQL_WAIT}
6896
i=$((i+1))
69-
if [ $i -gt 36 ]; then
70-
echo 'MySQL failed to start. Aborting.'
97+
if [ $i -gt $MYSQL_TRIES ]; then
98+
echo "${C_RED}MySQL failed to start. Aborting.${NO_FORMAT}"
99+
echo "Cannot connect to mysql server. For all available variables, check the documentation at:"
100+
echo " ${C_BLUE}https://github.com/wp-cli/wp-cli-tests?tab=readme-ov-file#the-database-credentials${NO_FORMAT}"
71101
exit 1
72102
fi
73103
done
74104

75105
# Prepare the database for running the tests with a MySQL version 8.0 or higher.
76106
install_mysql_db_8_0_plus() {
77-
set -ex
107+
set -ex # print all the commands.
78108
mysql -e "CREATE DATABASE IF NOT EXISTS \`${TEST_DB}\`;" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
79109
mysql -e "CREATE USER IF NOT EXISTS \`${TEST_USER}\`@'%' IDENTIFIED WITH mysql_native_password BY '${TEST_PASSWORD}'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
80110
mysql -e "GRANT ALL PRIVILEGES ON \`${TEST_DB}\`.* TO '${TEST_USER}'@'%'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
81111
mysql -e "GRANT ALL PRIVILEGES ON \`${TEST_DB}_scaffold\`.* TO '${TEST_USER}'@'%'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
112+
{ set +ex; } 2> /dev/null # stop printing the commands
82113
}
83114

84115
# Prepare the database for running the tests with a MySQL version lower than 8.0.
85116
install_mysql_db_lower_than_8_0() {
86-
set -ex
117+
set -ex # print all the commands.
87118
mysql -e "CREATE DATABASE IF NOT EXISTS \`${TEST_DB}\`;" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
88119
mysql -e "GRANT ALL ON \`${TEST_DB}\`.* TO '${TEST_USER}'@'%' IDENTIFIED BY '${TEST_PASSWORD}'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
89120
mysql -e "GRANT ALL ON \`${TEST_DB}_scaffold\`.* TO '${TEST_USER}'@'%' IDENTIFIED BY '${TEST_PASSWORD}'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
121+
{ set +ex; } 2> /dev/null # stop printing the commands
90122
}
91123

92124
VERSION_STRING=$(mysql -e "SELECT VERSION()" --skip-column-names ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}")
@@ -108,3 +140,6 @@ if [ "${TYPE}" != "MariaDB" ] && [ "${MAJOR}" -ge 8 ]; then
108140
else
109141
install_mysql_db_lower_than_8_0
110142
fi
143+
144+
echo "Succesfully prepared the database for running tests."
145+
echo "This command does not have to be run again."

0 commit comments

Comments
 (0)