From 9519b1fb7006a0e947d67187c834bde9d99ed5df Mon Sep 17 00:00:00 2001
From: Christian Kuhn <lolli@schwarzbu.ch>
Date: Mon, 7 Aug 2023 03:22:36 +0200
Subject: [PATCH] [TASK] Simplify runTests.sh DBMS version selection

Remove -j and -k and only use -i to specify
database versions. This is more easy to use,
parse and validate.

Resolves: #101604
Releases: main, 12.4, 11.5
Change-Id: Ie6b9343c6f244a294d636f0e5c09d24c5e1845fb
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80429
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 Build/Scripts/runTests.sh                     | 121 +++++++++---------
 .../gitlab-ci/nightly/acceptance-install.yml  |  36 +++---
 Build/gitlab-ci/nightly/functional.yml        |  30 ++---
 .../pre-merge/acceptance-install.yml          |   4 +-
 Build/gitlab-ci/pre-merge/functional.yml      |   4 +-
 5 files changed, 94 insertions(+), 101 deletions(-)

diff --git a/Build/Scripts/runTests.sh b/Build/Scripts/runTests.sh
index 6bceb422ff3d..caf4a0a48f3f 100755
--- a/Build/Scripts/runTests.sh
+++ b/Build/Scripts/runTests.sh
@@ -29,25 +29,38 @@ cleanUp() {
     ${CONTAINER_BIN} network rm ${NETWORK} >/dev/null
 }
 
-# Options -a and -d depend on each other. The function
-# validates input combinations and sets defaults.
-handleDbmsAndDriverOptions() {
+handleDbmsOptions() {
+    # -a, -d, -i depend on each other. Validate input combinations and set defaults.
     case ${DBMS} in
         mariadb)
             [ -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 "Invalid combination -d ${DBMS} -a ${DATABASE_DRIVER}" >&2
                 echo >&2
-                echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+                echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+                exit 1
+            fi
+            [ -z "${DBMS_VERSION}" ] && DBMS_VERSION="10.3"
+            if ! [[ ${DBMS_VERSION} =~ ^(10.1|10.2|10.3|10.4|10.5|10.6|10.7|10.8|10.9|10.10|10.11)$ ]]; then
+                echo "Invalid combination -d ${DBMS} -i ${DBMS_VERSION}" >&2
+                echo >&2
+                echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
                 exit 1
             fi
             ;;
         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 "Invalid combination -d ${DBMS} -a ${DATABASE_DRIVER}" >&2
                 echo >&2
-                echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+                echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+                exit 1
+            fi
+            [ -z "${DBMS_VERSION}" ] && DBMS_VERSION="5.5"
+            if ! [[ ${DBMS_VERSION} =~ ^(5.5|5.6|5.7|8.0)$ ]]; then
+                echo "Invalid combination -d ${DBMS} -i ${DBMS_VERSION}" >&2
+                echo >&2
+                echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
                 exit 1
             fi
             ;;
@@ -62,24 +75,37 @@ handleDbmsAndDriverOptions() {
             ;;
         postgres)
             if [ -n "${DATABASE_DRIVER}" ]; then
-                echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2
+                echo "Invalid combination -d ${DBMS} -a ${DATABASE_DRIVER}" >&2
                 echo >&2
-                echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+                echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+                exit 1
+            fi
+            [ -z "${DBMS_VERSION}" ] && DBMS_VERSION="10"
+            if ! [[ ${DBMS_VERSION} =~ ^(9.6|10|11|12|13|14|15)$ ]]; then
+                echo "Invalid combination -d ${DBMS} -i ${DBMS_VERSION}" >&2
+                echo >&2
+                echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
                 exit 1
             fi
             ;;
         sqlite)
             if [ -n "${DATABASE_DRIVER}" ]; then
-                echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2
+                echo "Invalid combination -d ${DBMS} -a ${DATABASE_DRIVER}" >&2
                 echo >&2
-                echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+                echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+                exit 1
+            fi
+            if [ -n "${DBMS_VERSION}" ]; then
+                echo "Invalid combination -d ${DBMS} -i ${DATABASE_DRIVER}" >&2
+                echo >&2
+                echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
                 exit 1
             fi
             ;;
         *)
             echo "Invalid option -d ${DBMS}" >&2
             echo >&2
-            echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
+            echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
             exit 1
             ;;
     esac
@@ -144,7 +170,7 @@ Usage: $0 [options] [file]
 
 Options:
     -s <...>
-        Specifies which test suite to run
+        Specifies the test suite to run
             - acceptance: main application acceptance tests
             - acceptanceInstall: installation acceptance tests, only with -d mariadb|postgres|sqlite
             - buildCss: execute scss to css builder
@@ -209,9 +235,9 @@ Options:
             - postgres: use postgres
             - mssql: use mssql
 
-    -i <10.1|10.2|10.3|10.4|10.5|10.6|10.7|10.8|10.9|10.10|10.11>
-        Only with -d mariadb
-        Specifies on which version of mariadb tests are performed
+    -i version
+        Specify a specific database version
+        With "-d mariadb":
             - 10.1   short-term, no longer maintained
             - 10.2   short-term, no longer maintained
             - 10.3   short-term, maintained until 2023-05-25 (default)
@@ -223,18 +249,12 @@ Options:
             - 10.9   short-term, maintained until 2023-08
             - 10.10  short-term, maintained until 2023-11
             - 10.11  long-term, maintained until 2028-02
-
-    -j <5.5|5.6|5.7|8.0>
-        Only with -d mysql
-        Specifies on which version of mysql tests are performed
+        With "-d mariadb":
             - 5.5   unmaintained since 2018-12 (default)
             - 5.6   unmaintained since 2021-02
             - 5.7   maintained until 2023-10
             - 8.0   maintained until 2026-04
-
-    -k <9.6|10|11|12|13|14|15>
-        Only with -d postgres
-        Specifies on which version of postgres tests are performed
+        With "-d postgres":
             - 9.6   unmaintained since 2021-11-11
             - 10    unmaintained since 2022-11-10 (default)
             - 11    maintained until 2023-11-09
@@ -316,7 +336,7 @@ Examples:
     ./Build/Scripts/runTests.sh -d mariadb -i 10.5
 
     # Run functional tests on postgres 11
-    ./Build/Scripts/runTests.sh -s functional -d postgres -k 11
+    ./Build/Scripts/runTests.sh -s functional -d postgres -i 11
 
     # Run restricted set of application acceptance tests
     ./Build/Scripts/runTests.sh -s acceptance typo3/sysext/core/Tests/Acceptance/Application/Login/BackendLoginCest.php:loginButtonMouseOver
@@ -335,6 +355,7 @@ fi
 # Option defaults
 TEST_SUITE="unit"
 DBMS="sqlite"
+DBMS_VERSION=""
 PHP_VERSION="7.4"
 PHP_XDEBUG_ON=0
 PHP_XDEBUG_PORT=9003
@@ -342,9 +363,6 @@ EXTRA_TEST_OPTIONS=""
 PHPUNIT_RANDOM=""
 CGLCHECK_DRY_RUN=""
 DATABASE_DRIVER=""
-MARIADB_VERSION="10.3"
-MYSQL_VERSION="5.5"
-POSTGRES_VERSION="10"
 CHUNKS=0
 THISCHUNK=0
 CONTAINER_BIN="docker"
@@ -355,7 +373,7 @@ OPTIND=1
 # Array for invalid options
 INVALID_OPTIONS=()
 # Simple option parsing based on getopts (! not getopt)
-while getopts ":a:s:c:d:i:j:k:p:e:xy:o:nhu" OPT; do
+while getopts ":a:s:c:d:i:p:e:xy:o:nhu" OPT; do
     case ${OPT} in
         s)
             TEST_SUITE=${OPTARG}
@@ -376,22 +394,7 @@ while getopts ":a:s:c:d:i:j:k:p:e:xy:o:nhu" OPT; do
             DBMS=${OPTARG}
             ;;
         i)
-            MARIADB_VERSION=${OPTARG}
-            if ! [[ ${MARIADB_VERSION} =~ ^(10.1|10.2|10.3|10.4|10.5|10.6|10.7|10.8|10.9|10.10|10.11)$ ]]; then
-                INVALID_OPTIONS+=("${OPTARG}")
-            fi
-            ;;
-        j)
-            MYSQL_VERSION=${OPTARG}
-            if ! [[ ${MYSQL_VERSION} =~ ^(5.5|5.6|5.7|8.0)$ ]]; then
-                INVALID_OPTIONS+=("${OPTARG}")
-            fi
-            ;;
-        k)
-            POSTGRES_VERSION=${OPTARG}
-            if ! [[ ${POSTGRES_VERSION} =~ ^(9.6|10|11|12|13|14|15)$ ]]; then
-                INVALID_OPTIONS+=("${OPTARG}")
-            fi
+            DBMS_VERSION=${OPTARG}
             ;;
         p)
             PHP_VERSION=${OPTARG}
@@ -438,10 +441,12 @@ if [ ${#INVALID_OPTIONS[@]} -ne 0 ]; then
         echo "-"${I} >&2
     done
     echo >&2
-    echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options"
+    echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
     exit 1
 fi
 
+handleDbmsOptions
+
 COMPOSER_ROOT_VERSION="11.5.x-dev"
 HOST_UID=$(id -u)
 USERSET=""
@@ -484,14 +489,12 @@ IMAGE_ALPINE="${IMAGE_PREFIX}alpine:3.8"
 IMAGE_SELENIUM="${IMAGE_PREFIX}selenium/standalone-chrome:4.0.0-20211102"
 IMAGE_REDIS="${IMAGE_PREFIX}redis:4-alpine"
 IMAGE_MEMCACHED="${IMAGE_PREFIX}memcached:1.5-alpine"
-IMAGE_MARIADB="${IMAGE_PREFIX}mariadb:${MARIADB_VERSION}"
-IMAGE_MYSQL="${IMAGE_PREFIX}mysql:${MYSQL_VERSION}"
-IMAGE_POSTGRES="${IMAGE_PREFIX}postgres:${POSTGRES_VERSION}-alpine"
+IMAGE_MARIADB="${IMAGE_PREFIX}mariadb:${DBMS_VERSION}"
+IMAGE_MYSQL="${IMAGE_PREFIX}mysql:${DBMS_VERSION}"
+IMAGE_POSTGRES="${IMAGE_PREFIX}postgres:${DBMS_VERSION}-alpine"
 IMAGE_MSSQL="${IMAGE_PREFIX}typo3/core-testing-mssql2019:latest"
 
-# Detect arm64 and use a seleniarm image.
-# In a perfect world selenium would have a arm64 integrated, but that is not on the horizon.
-# So for the time being we have to use seleniarm image.
+# Detect arm64 to use seleniarm image.
 ARCH=$(uname -m)
 if [ ${ARCH} = "arm64" ]; then
     IMAGE_SELENIUM="${IMAGE_PREFIX}seleniarm/standalone-chromium:4.1.2-20220227"
@@ -523,7 +526,6 @@ fi
 # Suite execution
 case ${TEST_SUITE} in
     acceptance)
-        handleDbmsAndDriverOptions
         if [ "${CHUNKS}" -gt 0 ]; then
             ${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name ac-splitter-${SUFFIX} ${IMAGE_PHP} php -dxdebug.mode=off Build/Scripts/splitAcceptanceTests.php -v ${CHUNKS}
             COMMAND="bin/codecept run Application -d -g AcceptanceTests-Job-${THISCHUNK} -c typo3/sysext/core/Tests/codeception.yml ${EXTRA_TEST_OPTIONS} ${TEST_FILE} --html reports.html"
@@ -565,7 +567,6 @@ case ${TEST_SUITE} in
         esac
         ;;
     acceptanceInstall)
-        handleDbmsAndDriverOptions
         ${CONTAINER_BIN} run -d --name ac-istall-chrome-${SUFFIX} --network ${NETWORK} --network-alias chrome --tmpfs /dev/shm:rw,nosuid,nodev,noexec,relatime ${IMAGE_SELENIUM} >/dev/null
         ${CONTAINER_BIN} run -d --name ac-install-web-${SUFFIX} --network ${NETWORK} --network-alias web --add-host "host.docker.internal:host-gateway" $USERSET -v ${CORE_ROOT}:${CORE_ROOT} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${IMAGE_PHP} php -S web:8000 -t ${CORE_ROOT} >/dev/null
         waitFor chrome 4444
@@ -723,7 +724,6 @@ case ${TEST_SUITE} in
         SUITE_EXIT_CODE=$?
         ;;
     functional)
-        handleDbmsAndDriverOptions
         if [ "${CHUNKS}" -gt 0 ]; then
             ${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name func-splitter-${SUFFIX} ${IMAGE_PHP} php -dxdebug.mode=off Build/Scripts/splitFunctionalTests.php -v ${CHUNKS}
             COMMAND="bin/phpunit -c Build/phpunit/FunctionalTests-Job-${THISCHUNK}.xml --exclude-group not-${DBMS} ${EXTRA_TEST_OPTIONS} ${TEST_FILE}"
@@ -777,7 +777,6 @@ case ${TEST_SUITE} in
         esac
         ;;
     functionalDeprecated)
-        handleDbmsAndDriverOptions
         COMMAND="bin/phpunit -c Build/phpunit/FunctionalTestsDeprecated.xml --exclude-group not-${DBMS} ${EXTRA_TEST_OPTIONS} ${TEST_FILE}"
         ${CONTAINER_BIN} run --name redis-func-dep-${SUFFIX} --network ${NETWORK} -d ${IMAGE_REDIS} >/dev/null
         ${CONTAINER_BIN} run --name memcached-func-dep-${SUFFIX} --network ${NETWORK} -d ${IMAGE_MEMCACHED} >/dev/null
@@ -913,18 +912,12 @@ fi
 echo "PHP: ${PHP_VERSION}" >&2
 if [[ ${TEST_SUITE} =~ ^(functional|functionalDeprecated|acceptance|acceptanceInstall)$ ]]; then
     case "${DBMS}" in
-        mariadb)
-            echo "DBMS: ${DBMS}  version ${MARIADB_VERSION}  driver ${DATABASE_DRIVER}" >&2
-            ;;
-        mysql)
-            echo "DBMS: ${DBMS}  version ${MYSQL_VERSION}  driver ${DATABASE_DRIVER}" >&2
+        mariadb|mysql|postgres)
+            echo "DBMS: ${DBMS}  version ${DBMS_VERSION}  driver ${DATABASE_DRIVER}" >&2
             ;;
         mssql)
             echo "DBMS: ${DBMS}  driver ${DATABASE_DRIVER}" >&2
             ;;
-        postgres)
-            echo "DBMS: ${DBMS}  version ${POSTGRES_VERSION}" >&2
-            ;;
         sqlite)
             echo "DBMS: ${DBMS}" >&2
             ;;
diff --git a/Build/gitlab-ci/nightly/acceptance-install.yml b/Build/gitlab-ci/nightly/acceptance-install.yml
index 14772dd64683..697d38f930e3 100644
--- a/Build/gitlab-ci/nightly/acceptance-install.yml
+++ b/Build/gitlab-ci/nightly/acceptance-install.yml
@@ -189,7 +189,7 @@ acceptance install mysql php 7.4:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 7.4
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 7.4
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 7.4
 acceptance install mysql php 7.4 max:
   stage: acceptance
   needs: []
@@ -205,7 +205,7 @@ acceptance install mysql php 7.4 max:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 7.4
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 7.4
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 7.4
 acceptance install mysql php 7.4 min:
   stage: acceptance
   needs: []
@@ -221,7 +221,7 @@ acceptance install mysql php 7.4 min:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 7.4
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 7.4
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 7.4
 
 acceptance install mysql php 8.0:
   stage: acceptance
@@ -234,7 +234,7 @@ acceptance install mysql php 8.0:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 8.0
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 8.0
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 8.0
 acceptance install mysql php 8.0 max:
   stage: acceptance
   needs: []
@@ -250,7 +250,7 @@ acceptance install mysql php 8.0 max:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 8.0
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 8.0
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 8.0
 acceptance install mysql php 8.0 min:
   stage: acceptance
   needs: []
@@ -266,7 +266,7 @@ acceptance install mysql php 8.0 min:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 8.0
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 8.0
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 8.0
 
 acceptance install mysql php 8.1:
   stage: acceptance
@@ -279,7 +279,7 @@ acceptance install mysql php 8.1:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 8.1
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 8.1
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 8.1
 acceptance install mysql php 8.1 max:
   stage: acceptance
   needs: []
@@ -295,7 +295,7 @@ acceptance install mysql php 8.1 max:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 8.1
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 8.1
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 8.1
 acceptance install mysql php 8.1 min:
   stage: acceptance
   needs: []
@@ -311,7 +311,7 @@ acceptance install mysql php 8.1 min:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 8.1
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 8.1
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 8.1
 
 acceptance install postgres php 7.4 locked:
   stage: acceptance
@@ -324,7 +324,7 @@ acceptance install postgres php 7.4 locked:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 7.4
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 7.4
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 7.4
 acceptance install postgres php 7.4 max:
   stage: acceptance
   needs: []
@@ -340,7 +340,7 @@ acceptance install postgres php 7.4 max:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 7.4
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 7.4
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 7.4
 acceptance install postgres php 7.4 min:
   stage: acceptance
   needs: []
@@ -356,7 +356,7 @@ acceptance install postgres php 7.4 min:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 7.4
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 7.4
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 7.4
 
 acceptance install postgres php 8.0 locked:
   stage: acceptance
@@ -369,7 +369,7 @@ acceptance install postgres php 8.0 locked:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 8.0
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 8.0
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 8.0
 acceptance install postgres php 8.0 max:
   stage: acceptance
   needs: []
@@ -385,7 +385,7 @@ acceptance install postgres php 8.0 max:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 8.0
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 8.0
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 8.0
 acceptance install postgres php 8.0 min:
   stage: acceptance
   needs: []
@@ -401,7 +401,7 @@ acceptance install postgres php 8.0 min:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 8.0
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 8.0
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 8.0
 
 acceptance install postgres php 8.1 locked:
   stage: acceptance
@@ -414,7 +414,7 @@ acceptance install postgres php 8.1 locked:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 8.1
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 8.1
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 8.1
 acceptance install postgres php 8.1 max:
   stage: acceptance
   needs: []
@@ -430,7 +430,7 @@ acceptance install postgres php 8.1 max:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 8.1
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 8.1
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 8.1
 acceptance install postgres php 8.1 min:
   stage: acceptance
   needs: []
@@ -446,7 +446,7 @@ acceptance install postgres php 8.1 min:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 8.1
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 8.1
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 8.1
 
 acceptance install sqlite php 7.4 locked:
   stage: acceptance
diff --git a/Build/gitlab-ci/nightly/functional.yml b/Build/gitlab-ci/nightly/functional.yml
index 9056ac16b122..47c98a6eab86 100644
--- a/Build/gitlab-ci/nightly/functional.yml
+++ b/Build/gitlab-ci/nightly/functional.yml
@@ -104,7 +104,7 @@ functional deprecated mysql 5.5 php 7.4 locked:
     - schedules
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 7.4
-    - Build/Scripts/runTests.sh -s functionalDeprecated -d mysql -j 5.5 -p 7.4
+    - Build/Scripts/runTests.sh -s functionalDeprecated -d mysql -i 5.5 -p 7.4
 functional deprecated mysql 5.5 php 7.4 max:
   stage: functional
   needs: []
@@ -116,7 +116,7 @@ functional deprecated mysql 5.5 php 7.4 max:
       - .cache
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 7.4
-    - Build/Scripts/runTests.sh -s functionalDeprecated -d mysql -j 5.5 -p 7.4
+    - Build/Scripts/runTests.sh -s functionalDeprecated -d mysql -i 5.5 -p 7.4
 functional deprecated mysql 5.5 php 7.4 min:
   stage: functional
   needs: []
@@ -128,7 +128,7 @@ functional deprecated mysql 5.5 php 7.4 min:
       - .cache
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 7.4
-    - Build/Scripts/runTests.sh -s functionalDeprecated -d mysql -j 5.5 -p 7.4
+    - Build/Scripts/runTests.sh -s functionalDeprecated -d mysql -i 5.5 -p 7.4
 
 functional deprecated postgres 10 php 7.4 locked:
   stage: functional
@@ -137,7 +137,7 @@ functional deprecated postgres 10 php 7.4 locked:
     - schedules
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 7.4
-    - Build/Scripts/runTests.sh -s functionalDeprecated -d postgres -k 10 -p 7.4
+    - Build/Scripts/runTests.sh -s functionalDeprecated -d postgres -i 10 -p 7.4
 functional deprecated postgres 10 php 7.4 max:
   stage: functional
   needs: []
@@ -149,7 +149,7 @@ functional deprecated postgres 10 php 7.4 max:
       - .cache
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 7.4
-    - Build/Scripts/runTests.sh -s functionalDeprecated -d postgres -k 10 -p 7.4
+    - Build/Scripts/runTests.sh -s functionalDeprecated -d postgres -i 10 -p 7.4
 functional deprecated postgres 10 php 7.4 min:
   stage: functional
   needs: []
@@ -161,7 +161,7 @@ functional deprecated postgres 10 php 7.4 min:
       - .cache
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 7.4
-    - Build/Scripts/runTests.sh -s functionalDeprecated -d postgres -k 10 -p 7.4
+    - Build/Scripts/runTests.sh -s functionalDeprecated -d postgres -i 10 -p 7.4
 
 functional deprecated sqlite php 8.1 locked:
   stage: functional
@@ -277,7 +277,7 @@ functional mysql 5.5 php 7.4 locked:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 7.4
-    - Build/Scripts/runTests.sh -s functional -d mysql -j 5.5 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d mysql -i 5.5 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 functional mysql 5.5 php 7.4 max:
   stage: functional
   needs: []
@@ -290,7 +290,7 @@ functional mysql 5.5 php 7.4 max:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 7.4
-    - Build/Scripts/runTests.sh -s functional -d mysql -j 5.5 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d mysql -i 5.5 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 functional mysql 5.5 php 7.4 min:
   stage: functional
   needs: []
@@ -303,7 +303,7 @@ functional mysql 5.5 php 7.4 min:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 7.4
-    - Build/Scripts/runTests.sh -s functional -d mysql -j 5.5 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d mysql -i 5.5 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 
 functional postgres 10 php 7.4 locked:
   stage: functional
@@ -313,7 +313,7 @@ functional postgres 10 php 7.4 locked:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 7.4
-    - Build/Scripts/runTests.sh -s functional -d postgres -k 10 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d postgres -i 10 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 functional postgres 10 php 7.4 max:
   stage: functional
   needs: []
@@ -326,7 +326,7 @@ functional postgres 10 php 7.4 max:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 7.4
-    - Build/Scripts/runTests.sh -s functional -d postgres -k 10 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d postgres -i 10 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 functional postgres 10 php 7.4 min:
   stage: functional
   needs: []
@@ -339,7 +339,7 @@ functional postgres 10 php 7.4 min:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 7.4
-    - Build/Scripts/runTests.sh -s functional -d postgres -k 10 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d postgres -i 10 -p 7.4 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 
 functional postgres 10 php 8.3 locked:
   stage: functional
@@ -349,7 +349,7 @@ functional postgres 10 php 8.3 locked:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 8.3
-    - Build/Scripts/runTests.sh -s functional -d postgres -k 10 -p 8.3 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d postgres -i 10 -p 8.3 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 functional postgres 10 php 8.3 max:
   stage: functional
   needs: []
@@ -362,7 +362,7 @@ functional postgres 10 php 8.3 max:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstallMax -p 8.3
-    - Build/Scripts/runTests.sh -s functional -d postgres -k 10 -p 8.3 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d postgres -i 10 -p 8.3 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 functional postgres 10 php 8.3 min:
   stage: functional
   needs: []
@@ -375,7 +375,7 @@ functional postgres 10 php 8.3 min:
   parallel: 6
   script:
     - Build/Scripts/runTests.sh -s composerInstallMin -p 8.3
-    - Build/Scripts/runTests.sh -s functional -d postgres -k 10 -p 8.3 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d postgres -i 10 -p 8.3 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 
 functional sqlite php 7.4 locked:
   stage: functional
diff --git a/Build/gitlab-ci/pre-merge/acceptance-install.yml b/Build/gitlab-ci/pre-merge/acceptance-install.yml
index 6742b5931487..b2ad1db1b1b9 100644
--- a/Build/gitlab-ci/pre-merge/acceptance-install.yml
+++ b/Build/gitlab-ci/pre-merge/acceptance-install.yml
@@ -38,7 +38,7 @@ acceptance install mysql php 8.2 pre-merge:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 8.2
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -j 5.5 -p 8.2
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d mysql -i 5.5 -p 8.2
 
 acceptance install postgres php 7.4 pre-merge:
   stage: main
@@ -52,7 +52,7 @@ acceptance install postgres php 7.4 pre-merge:
       - typo3temp/var/tests/AcceptanceReports
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 7.4
-    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -k 10 -p 7.4
+    - Build/Scripts/runTests.sh -s acceptanceInstall -d postgres -i 10 -p 7.4
 
 acceptance install sqlite php 8.1 pre-merge:
   stage: main
diff --git a/Build/gitlab-ci/pre-merge/functional.yml b/Build/gitlab-ci/pre-merge/functional.yml
index 1cfe6bbb10a0..3f1781538c90 100644
--- a/Build/gitlab-ci/pre-merge/functional.yml
+++ b/Build/gitlab-ci/pre-merge/functional.yml
@@ -16,7 +16,7 @@ functional deprecated postgres 10 php 7.4 pre-merge:
       - "11.5"
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 7.4
-    - Build/Scripts/runTests.sh -s functionalDeprecated -d postgres -k 10 -p 7.4
+    - Build/Scripts/runTests.sh -s functionalDeprecated -d postgres -i 10 -p 7.4
 
 functional mariadb 10.3 php 8.0 pre-merge:
   stage: main
@@ -38,7 +38,7 @@ functional postgres 10 php 8.3 pre-merge:
   parallel: 10
   script:
     - Build/Scripts/runTests.sh -s composerInstall -p 8.3
-    - Build/Scripts/runTests.sh -s functional -d postgres -k 10 -p 8.3 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
+    - Build/Scripts/runTests.sh -s functional -d postgres -i 10 -p 8.3 -c $CI_NODE_INDEX/$CI_NODE_TOTAL
 
 functional sqlite php 7.4 pre-merge:
   stage: main
-- 
GitLab