diff --git a/bin/install-package-tests b/bin/install-package-tests index 841c268b..15492720 100755 --- a/bin/install-package-tests +++ b/bin/install-package-tests @@ -8,6 +8,14 @@ # - WP_CLI_TEST_DBUSER is the user that the tests run under (defaults to "wp_cli_test"). # - WP_CLI_TEST_DBPASS is the password to use for the above user (defaults to "password1"). +# POSIX compliant function to check if a string is numeric. +is_numeric() { + case $1 in + ''|*[!0-9]*) return 1;; # returns 1 if not numeric + *) return 0;; # returns 0 if numeric + esac +} + HOST=localhost PORT="" HOST_STRING='' @@ -16,9 +24,14 @@ if [ -n "${WP_CLI_TEST_DBHOST}" ]; then (*:*) HOST=${WP_CLI_TEST_DBHOST%:*} PORT=${WP_CLI_TEST_DBHOST##*:};; (*) HOST=${WP_CLI_TEST_DBHOST};; esac - HOST_STRING="-h${HOST}" - if [ -n "${PORT}" ]; then - HOST_STRING="${HOST_STRING} -P${PORT} --protocol=tcp" + HOST_STRING="-h${HOST}" + if [ -n "${PORT}" ]; then + # If the port is not numeric, then we assume it is a socket path. + if is_numeric "${PORT}"; then + HOST_STRING="${HOST_STRING} -P${PORT} --protocol=tcp" + else + HOST_STRING="${HOST_STRING} --socket=${PORT}" + fi fi fi