All tested with PHP 8.4 and PHP 8.3 too Major changes: - cube root Math (cbrt) now throws InvalidArgumentException if NAN is returned instead of returning NAN - Byte convert from string to int will throw errors if value is too large (\LengthException) - new flag for returning string type but for this bcmath must be installed (\RuntimeException if no bcmath) - Updated curl class and remove close handler as not needed and deprecated as of PHP 8.5 - Curl phpunit tests: convert string to JSON convert flow for return content check (to avoid per PHP version check) - image close handler for ImageMagick removed as not needed and deprecated as of PHP 8.5 - updated all check calls too use phive tools if possible (except phpunit) and all scripts can have dynamic php version set
105 lines
2.3 KiB
Bash
Executable File
105 lines
2.3 KiB
Bash
Executable File
#!/bin/env bash
|
|
|
|
function error() {
|
|
if [ -t 1 ]; then echo "[MAK] ERROR: $*" >&2; fi; exit 0;
|
|
}
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-t] [-v] [-p VERSION]
|
|
|
|
Runs all the PHP unit tests.
|
|
|
|
If -p is not set, the default intalled PHP is used.
|
|
|
|
Available options:
|
|
|
|
-h, --help Print this help and exit
|
|
-t, --testdox Enable testdox output for phpunit
|
|
-v, --verbose Enable verbose output for PHPunit
|
|
-p, --php VERSION Chose PHP version in the form of "N.N", if not found will exit
|
|
EOF
|
|
exit
|
|
}
|
|
|
|
# set base variables
|
|
BASE_PATH=$(pwd)"/";
|
|
PHPUNIT_CONFIG="${BASE_PATH}phpunit.xml";
|
|
PHP_BIN_PATH=$(which php);
|
|
if [ -z "${PHP_BIN_PATH}" ]; then
|
|
echo "Cannot find php binary";
|
|
exit;
|
|
fi;
|
|
DEFAULT_PHP_VERSION=$(${PHP_BIN_PATH} -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;");
|
|
if [ -z "${DEFAULT_PHP_VERSION}" ]; then
|
|
echo "Cannot set default PHP version";
|
|
exit;
|
|
fi;
|
|
# -c phpunit.xml
|
|
# --testdox
|
|
# call with "-tt" to give verbose testdox output
|
|
# SUPPORTED: https://www.php.net/supported-versions.php
|
|
# call with -p <php version number> to force a certain php version
|
|
|
|
opt_testdox="";
|
|
opt_verbose="";
|
|
php_version="";
|
|
no_php_version=0;
|
|
while [ -n "${1-}" ]; do
|
|
case "${1}" in
|
|
-t | --testdox)
|
|
opt_testdox="--testdox";
|
|
;;
|
|
-v | --verbose)
|
|
opt_verbose="--verbose";
|
|
;;
|
|
-p | --php)
|
|
php_version="${2-}";
|
|
shift
|
|
;;
|
|
-h | --help)
|
|
usage
|
|
;;
|
|
# invalid option
|
|
-?*)
|
|
error "[!] Unknown option: '$1'."
|
|
;;
|
|
esac
|
|
shift;
|
|
done;
|
|
|
|
if [ -z "${php_version}" ]; then
|
|
php_version="${DEFAULT_PHP_VERSION}";
|
|
no_php_version=1;
|
|
fi;
|
|
php_bin="${PHP_BIN_PATH}${php_version}";
|
|
echo "Use PHP Version: ${php_version}";
|
|
|
|
if [ ! -f "${php_bin}" ]; then
|
|
echo "Set php ${php_bin} does not exist";
|
|
exit;
|
|
fi;
|
|
|
|
# Note 4dev/tests/bootstrap.php has to be set as bootstrap file in phpunit.xml
|
|
PHPUNIT_CALL=(
|
|
"${php_bin}"
|
|
"${BASE_PATH}vendor/bin/phpunit"
|
|
"${opt_testdox}"
|
|
"${opt_verbose}"
|
|
"-c" "${PHPUNIT_CONFIG}"
|
|
"${BASE_PATH}4dev/tests/"
|
|
)
|
|
# phpunit_call="${php_bin}${BASE_PATH}vendor/bin/phpunit ${opt_testdox} ${opt_verbose} -c ${PHPUNIT_CONFIG} ${BASE_PATH}4dev/tests/";
|
|
# ${phpunit_call};
|
|
"${PHPUNIT_CALL[@]}" || exit;
|
|
|
|
echo -e "\nPHPUnit Config: ${PHPUNIT_CONFIG}";
|
|
if [ "${no_php_version}" -eq 0 ]; then
|
|
echo "*** CALLED WITH PHP ${php_bin} ***";
|
|
${php_bin} --version;
|
|
else
|
|
echo "Default PHP used: $(php --version)";
|
|
fi;
|
|
|
|
# __END__
|