diff --git a/Build/Scripts/runTests.sh b/Build/Scripts/runTests.sh index 3234afe7d84af4d14bd35908721de26e1e21d3cd..35fbedc81227a5a6b2896059f2f5aef885b10f84 100755 --- a/Build/Scripts/runTests.sh +++ b/Build/Scripts/runTests.sh @@ -30,15 +30,51 @@ setUpDockerComposeDotEnv() { echo "SCRIPT_VERBOSE=${SCRIPT_VERBOSE}" >> .env echo "PHPUNIT_RANDOM=${PHPUNIT_RANDOM}" >> .env echo "CGLCHECK_DRY_RUN=${CGLCHECK_DRY_RUN}" >> .env + echo "DATABASE_DRIVER=${DATABASE_DRIVER}" >> .env echo "MARIADB_VERSION=${MARIADB_VERSION}" >> .env echo "MYSQL_VERSION=${MYSQL_VERSION}" >> .env echo "POSTGRES_VERSION=${POSTGRES_VERSION}" >> .env echo "PHP_VERSION=${PHP_VERSION}" >> .env echo "CHUNKS=${CHUNKS}" >> .env echo "THISCHUNK=${THISCHUNK}" >> .env +} - # Set a custom database driver provided by option: -a - [[ ! -z "$DATABASE_DRIVER" ]] && echo "DATABASE_DRIVER=${DATABASE_DRIVER}" >> .env +# Options -a and -d depend on each other. The function +# validates input combinations and sets defaults. +handleDbmsAndDriverOptions() { + case ${DBMS} in + mariadb) + ;& + mysql) + [ -z ${DATABASE_DRIVER} ] && DATABASE_DRIVER="mysqli" + if [ "${DATABASE_DRIVER}" != "mysqli" ] && [ "${DATABASE_DRIVER}" != "pdo_mysql" ]; then + echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2 + echo >&2 + echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2 + exit 1 + fi + ;; + mssql) + [ -z ${DATABASE_DRIVER} ] && DATABASE_DRIVER="sqlsrv" + if [ "${DATABASE_DRIVER}" != "sqlsrv" ] && [ "${DATABASE_DRIVER}" != "pdo_sqlsrv" ]; then + echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2 + echo >&2 + echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2 + exit 1 + fi + ;; + postgres) + ;& + sqlite) + if ! [ -z ${DATABASE_DRIVER} ]; then + echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2 + echo >&2 + echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2 + exit 1 + fi + DATABASE_DRIVER="" + ;; + esac } # Load help text into $HELP @@ -367,19 +403,20 @@ fi # Suite execution case ${TEST_SUITE} in acceptance) + handleDbmsAndDriverOptions setUpDockerComposeDotEnv if [ ${CHUNKS} -gt 1 ]; then docker-compose run acceptance_split fi case ${DBMS} in mysql) - [[ ! -z "$DATABASE_DRIVER" ]] && echo "Using driver: ${DATABASE_DRIVER}" + echo "Using driver: ${DATABASE_DRIVER}" docker-compose run prepare_acceptance_backend_mysql docker-compose run acceptance_backend_mysql SUITE_EXIT_CODE=$? ;; mariadb) - [[ ! -z "$DATABASE_DRIVER" ]] && echo "Using driver: ${DATABASE_DRIVER}" + echo "Using driver: ${DATABASE_DRIVER}" docker-compose run prepare_acceptance_backend_mariadb docker-compose run acceptance_backend_mariadb SUITE_EXIT_CODE=$? @@ -548,25 +585,26 @@ case ${TEST_SUITE} in docker-compose down ;; functional) + handleDbmsAndDriverOptions setUpDockerComposeDotEnv if [ ${CHUNKS} -gt 1 ]; then docker-compose run functional_split fi case ${DBMS} in mariadb) - [[ ! -z "$DATABASE_DRIVER" ]] && echo "Using driver: ${DATABASE_DRIVER}" + echo "Using driver: ${DATABASE_DRIVER}" docker-compose run prepare_functional_mariadb docker-compose run functional_mariadb SUITE_EXIT_CODE=$? ;; mysql) - [[ ! -z "$DATABASE_DRIVER" ]] && echo "Using driver: ${DATABASE_DRIVER}" + echo "Using driver: ${DATABASE_DRIVER}" docker-compose run prepare_functional_mysql docker-compose run functional_mysql SUITE_EXIT_CODE=$? ;; mssql) - [[ ! -z "$DATABASE_DRIVER" ]] && echo "Using driver: ${DATABASE_DRIVER}" + echo "Using driver: ${DATABASE_DRIVER}" docker-compose run prepare_functional_mssql2019latest docker-compose run functional_mssql2019latest SUITE_EXIT_CODE=$? @@ -590,16 +628,17 @@ case ${TEST_SUITE} in docker-compose down ;; install) + handleDbmsAndDriverOptions setUpDockerComposeDotEnv case ${DBMS} in mysql) - [[ ! -z "$DATABASE_DRIVER" ]] && echo "Using driver: ${DATABASE_DRIVER}" + echo "Using driver: ${DATABASE_DRIVER}" docker-compose run prepare_acceptance_install_mysql docker-compose run acceptance_install_mysql SUITE_EXIT_CODE=$? ;; mariadb) - [[ ! -z "$DATABASE_DRIVER" ]] && echo "Using driver: ${DATABASE_DRIVER}" + echo "Using driver: ${DATABASE_DRIVER}" docker-compose run prepare_acceptance_install_mariadb docker-compose run acceptance_install_mariadb SUITE_EXIT_CODE=$? @@ -691,13 +730,13 @@ esac case ${DBMS} in mariadb) - DBMS_OUTPUT="DBMS: ${DBMS} version ${MARIADB_VERSION} driver ${DATABASE_DRIVER:-mysqli}" + DBMS_OUTPUT="DBMS: ${DBMS} version ${MARIADB_VERSION} driver ${DATABASE_DRIVER}" ;; mysql) - DBMS_OUTPUT="DBMS: ${DBMS} version ${MYSQL_VERSION} driver ${DATABASE_DRIVER:-mysqli}" + DBMS_OUTPUT="DBMS: ${DBMS} version ${MYSQL_VERSION} driver ${DATABASE_DRIVER}" ;; mssql) - DBMS_OUTPUT="DBMS: ${DBMS} driver ${DATABASE_DRIVER:-sqlsrv}" + DBMS_OUTPUT="DBMS: ${DBMS} driver ${DATABASE_DRIVER}" ;; postgres) DBMS_OUTPUT="DBMS: ${DBMS} version ${POSTGRES_VERSION}" diff --git a/Build/testing-docker/local/docker-compose.yml b/Build/testing-docker/local/docker-compose.yml index 543bcdbf598aa0d534a68a4ad82af35a6e7d1a6e..540d055f1e6d95311bb2991c611b1bc5ae38b9e0 100644 --- a/Build/testing-docker/local/docker-compose.yml +++ b/Build/testing-docker/local/docker-compose.yml @@ -845,7 +845,7 @@ services: - /etc/passwd:/etc/passwd:ro - /etc/group:/etc/group:ro environment: - typo3DatabaseDriver: "${DATABASE_DRIVER:-mysqli}" + typo3DatabaseDriver: "${DATABASE_DRIVER}" typo3DatabaseName: func_test typo3DatabaseUsername: root typo3DatabasePassword: funcp @@ -899,7 +899,7 @@ services: - /etc/passwd:/etc/passwd:ro - /etc/group:/etc/group:ro environment: - typo3DatabaseDriver: "${DATABASE_DRIVER:-mysqli}" + typo3DatabaseDriver: "${DATABASE_DRIVER}" typo3DatabaseName: func_test typo3DatabaseUsername: root typo3DatabasePassword: funcp @@ -954,7 +954,7 @@ services: - /etc/passwd:/etc/passwd:ro - /etc/group:/etc/group:ro environment: - typo3DatabaseDriver: "${DATABASE_DRIVER:-sqlsrv}" + typo3DatabaseDriver: "${DATABASE_DRIVER}" typo3DatabaseName: func typo3DatabasePassword: "Test1234!" typo3DatabaseUsername: SA