|
1 | 1 | #!/bin/sh |
2 | 2 |
|
3 | | -set -ex |
| 3 | +# Database credentials can be provided via environment variables: |
| 4 | +# - WP_CLI_TEST_DBHOST is the host to use and can include a port, i.e "127.0.0.1:33060" (defaults to "localhost") |
| 5 | +# - WP_CLI_TEST_DBUSER is the user that has permission to administer databases and users (defaults to "root"). |
| 6 | +# - WP_CLI_TEST_DBPASS is the password to use for the above user (defaults to an empty password). |
| 7 | + |
| 8 | +HOST=localhost |
| 9 | +PORT="" |
| 10 | +HOST_STRING='' |
| 11 | +if [ -n "$WP_CLI_TEST_DBHOST" ]; then |
| 12 | + case ${WP_CLI_TEST_DBHOST##*[]]} in |
| 13 | + (*:*) HOST=${WP_CLI_TEST_DBHOST%:*} PORT=${WP_CLI_TEST_DBHOST##*:};; |
| 14 | + (*) HOST=$WP_CLI_TEST_DBHOST;; |
| 15 | + esac |
| 16 | + HOST_STRING="-h$HOST" |
| 17 | + if [ -n "$PORT" ]; then |
| 18 | + HOST_STRING="$HOST_STRING -P$PORT --protocol=tcp" |
| 19 | + fi |
| 20 | +fi |
| 21 | + |
| 22 | +USER=root |
| 23 | +if [ -n "$WP_CLI_TEST_DBUSER" ]; then |
| 24 | + USER="$WP_CLI_TEST_DBUSER" |
| 25 | +fi |
4 | 26 |
|
5 | 27 | PASSWORD_STRING="" |
6 | | -if [ -z "DB_PASSWORD" ]; then |
7 | | - PASSWORD_STRING="-p${DB_PASSWORD}" |
8 | | -fi; |
9 | | - |
10 | | -# Prepare the database for running the tests |
11 | | -install_db() { |
12 | | - mysql -e 'CREATE DATABASE IF NOT EXISTS wp_cli_test;' -uroot "$PASSWORD_STRING" |
13 | | - mysql -e 'CREATE USER "wp_cli_test"@"localhost" IDENTIFIED BY "password1"' -uroot "$PASSWORD_STRING" |
14 | | - mysql -e 'GRANT ALL PRIVILEGES ON wp_cli_test.* TO "wp_cli_test"@"localhost"' -uroot "$PASSWORD_STRING" |
15 | | - mysql -e 'GRANT ALL PRIVILEGES ON wp_cli_test_scaffold.* TO "wp_cli_test"@"localhost"' -uroot "$PASSWORD_STRING" |
| 28 | +if [ -n "$WP_CLI_TEST_DBPASS" ]; then |
| 29 | + PASSWORD_STRING="-p$WP_CLI_TEST_DBPASS" |
| 30 | +fi |
| 31 | + |
| 32 | +# Prepare the database for running the tests with a MySQL version 8.0 or higher. |
| 33 | +install_db_8_0_plus() { |
| 34 | + mysql -e "CREATE DATABASE IF NOT EXISTS wp_cli_test;" $HOST_STRING -u"$USER" "$PASSWORD_STRING" |
| 35 | + mysql -e "CREATE USER IF NOT EXISTS wp_cli_test@$HOST IDENTIFIED BY 'password1'" $HOST_STRING -u"$USER" "$PASSWORD_STRING" |
| 36 | + mysql -e "GRANT ALL PRIVILEGES ON wp_cli_test.* TO wp_cli_test@$HOST" $HOST_STRING -u"$USER" "$PASSWORD_STRING" |
| 37 | + mysql -e "GRANT ALL PRIVILEGES ON wp_cli_test_scaffold.* TO wp_cli_test@$HOST" $HOST_STRING -u"$USER" "$PASSWORD_STRING" |
16 | 38 | } |
17 | 39 |
|
18 | | -install_db |
| 40 | +# Prepare the database for running the tests with a MySQL version lower than 8.0. |
| 41 | +install_db_lower_than_8_0() { |
| 42 | + mysql -e "CREATE DATABASE IF NOT EXISTS wp_cli_test;" $HOST_STRING -u"$USER" "$PASSWORD_STRING" |
| 43 | + mysql -e "GRANT ALL ON wp_cli_test.* TO wp_cli_test@$HOST IDENTIFIED BY 'password1'" $HOST_STRING -u"$USER" "$PASSWORD_STRING" |
| 44 | + mysql -e "GRANT ALL ON wp_cli_test_scaffold.* TO wp_cli_test@$HOST IDENTIFIED BY 'password1'" $HOST_STRING -u"$USER" "$PASSWORD_STRING" |
| 45 | +} |
| 46 | + |
| 47 | +set -ex |
| 48 | + |
| 49 | +VERSION_STRING=$(mysql -e "SELECT VERSION()" --skip-column-names $HOST_STRING -u"$USER" "$PASSWORD_STRING") |
| 50 | +VERSION=$(echo "$VERSION_STRING" | grep -o '^[^-]*') |
| 51 | +MAJOR=$(echo "$VERSION" | cut -d. -f1) |
| 52 | +MINOR=$(echo "$VERSION" | cut -d. -f2) |
| 53 | + |
| 54 | +if [ "$MAJOR" -ge 8 ]; then |
| 55 | + install_db_8_0_plus |
| 56 | +else |
| 57 | + install_db_lower_than_8_0 |
| 58 | +fi |
0 commit comments