diff --git a/.ci/test_blocklist_qt6.txt b/.ci/test_blocklist_qt6_fedora.txt similarity index 100% rename from .ci/test_blocklist_qt6.txt rename to .ci/test_blocklist_qt6_fedora.txt diff --git a/.ci/test_blocklist_qt6_ubuntu.txt b/.ci/test_blocklist_qt6_ubuntu.txt new file mode 100644 index 00000000000..9bb8eecd156 --- /dev/null +++ b/.ci/test_blocklist_qt6_ubuntu.txt @@ -0,0 +1,18 @@ +# block list +test_gui_queryresultwidget + +# code layout tests are run on separate build +qgis_spelling +qgis_sipify +qgis_sip_include +qgis_sip_uptodate + +# Need a local postgres installation +PyQgsAuthManagerOgrPostgresTest +PyQgsDbManagerPostgis + +# Needs an OpenCL device, the library is not enough +test_core_openclutils + +# Relies on a broken/unreliable 3rd party service +test_core_layerdefinition diff --git a/.docker/docker-qgis-test.sh b/.docker/docker-qgis-test.sh index 9bd72019bcc..145d647cc9b 100755 --- a/.docker/docker-qgis-test.sh +++ b/.docker/docker-qgis-test.sh @@ -10,7 +10,7 @@ cd ${SRCDIR} git config --global --add safe.directory ${SRCDIR} usage() { - echo "Usage; $(basename $0) []" + echo "Usage; $(basename $0) [] []" echo "TEST_BATCHNAME can be any of:" echo " HANA Test the HANA provider" echo " POSTGRES Test the PostgreSQL provider" @@ -20,23 +20,23 @@ usage() { echo " ALL (default) Run all tests" } -if [ $# -eq 1 ] && [ $1 = "HANA" ]; then +if [ $# -ge 1 ] && [ $1 = "HANA" ]; then LABELS_TO_RUN="HANA" RUN_HANA=YES -elif [ $# -eq 1 ] && [ $1 = "POSTGRES" ]; then +elif [ $# -ge 1 ] && [ $1 = "POSTGRES" ]; then LABELS_TO_RUN="POSTGRES" RUN_POSTGRES=YES -elif [ $# -eq 1 ] && [ $1 = "ORACLE" ]; then +elif [ $# -ge 1 ] && [ $1 = "ORACLE" ]; then LABELS_TO_RUN="ORACLE" RUN_ORACLE=YES -elif [ $# -eq 1 ] && [ $1 = "SQLSERVER" ]; then +elif [ $# -ge 1 ] && [ $1 = "SQLSERVER" ]; then LABELS_TO_RUN="SQLSERVER" RUN_SQLSERVER=YES -elif [ $# -eq 1 ] && [ $1 = "ALL_BUT_PROVIDERS" ]; then +elif [ $# -ge 1 ] && [ $1 = "ALL_BUT_PROVIDERS" ]; then LABELS_TO_EXCLUDE="HANA|POSTGRES|ORACLE|SQLSERVER" elif [ $# -gt 0 ] && [ $1 != "ALL" ]; then @@ -51,6 +51,10 @@ else RUN_SQLSERVER=YES fi +if [ $# -ge 2 ]; then + BLOCKLIST=${SRCDIR}/$2 +fi + # Debug env echo "::group::Print env" env @@ -270,10 +274,15 @@ fi ########### # Run tests ########### -EXCLUDE_TESTS="^$(cat ${SRCDIR}/.ci/test_blocklist_qt${QT_VERSION}.txt | sed -r '/^(#.*?)?$/d' | paste -sd '~' | sed -r 's/~/\$|^/g' -)\$" +if [[ -n ${BLOCKLIST} ]]; then + EXCLUDE_TESTS="^$(cat ${BLOCKLIST} | sed -r '/^(#.*?)?$/d' | paste -sd '~' | sed -r 's/~/\$|^/g' -)\$" +fi if ! [[ ${RUN_FLAKY_TESTS} == true ]]; then echo "Flaky tests are skipped!" - EXCLUDE_TESTS=${EXCLUDE_TESTS}"|^"$(cat ${SRCDIR}/.ci/test_flaky.txt | sed -r '/^(#.*?)?$/d' | paste -sd '~' | sed -r 's/~/\$|^/g' -)"$" + if [[ -n ${EXCLUDE_TESTS} ]]; then + EXCLUDE_TESTS=${EXCLUDE_TESTS}"|" + fi + EXCLUDE_TESTS=${EXCLUDE_TESTS}"^"$(cat ${SRCDIR}/.ci/test_flaky.txt | sed -r '/^(#.*?)?$/d' | paste -sd '~' | sed -r 's/~/\$|^/g' -)"$" else echo "Flaky tests are run!" fi diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index a1224a1bece..1b9654fc3d6 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -90,7 +90,6 @@ jobs: experimental: false unity-builds: ON - fail-fast: false outputs: @@ -263,17 +262,42 @@ jobs: strategy: matrix: - qt-version: [6] - test-batch: [ALL_BUT_PROVIDERS, POSTGRES, HANA, SQLSERVER] include: - qt-version: 6 distro-version: '24.10' docker-target: binary-only + test-blocklist-file: .ci/test_blocklist_qt6_ubuntu.txt + test-batch: ALL_BUT_PROVIDERS + + - qt-version: 6 + distro-version: '39' + docker-target: binary-only + test-blocklist-file: .ci/test_blocklist_qt6_fedora.txt + test-batch: ALL_BUT_PROVIDERS + + - qt-version: 6 + distro-version: '24.10' + test-batch: POSTGRES + test-blocklist-file: .ci/test_blocklist_qt6_ubuntu.txt + docker-target: binary-only + + - qt-version: 6 + distro-version: '24.10' + test-batch: HANA + test-blocklist-file: .ci/test_blocklist_qt6_ubuntu.txt + docker-target: binary-only + + - qt-version: 6 + distro-version: '24.10' + test-batch: SQLSERVER + test-blocklist-file: .ci/test_blocklist_qt6_ubuntu.txt + docker-target: binary-only - qt-version: 6 distro-version: '24.10' test-batch: ORACLE + test-blocklist-file: .ci/test_blocklist_qt6_ubuntu.txt docker-target: binary-for-oracle fail-fast: false @@ -358,6 +382,7 @@ jobs: TEST_BATCH: ${{matrix.test-batch}} QGIS_COMMON_GIT_DIR: ${{ github.workspace }} GITHUB_SHA: ${{ github.sha }} + TEST_BLOCKLIST_FILE: ${{matrix.test-blocklist-file}} run: | DOCKERFILE=$( ( [[ ${{ matrix.test-batch }} == "ORACLE" ]] && echo "docker-compose-testing-oracle.yml" ) \ || ( [[ ${{ matrix.test-batch }} == "POSTGRES" ]] && echo "docker-compose-testing-postgres.yml" ) \ @@ -366,9 +391,10 @@ jobs: [[ ${{ matrix.test-batch }} == "ORACLE" ]] && sudo rm -rf /usr/share/dotnet/sdk echo "TEST_BATCH=$TEST_BATCH" echo "DOCKERFILE=$DOCKERFILE" + echo "TEST_BLOCKLIST_FILE=$TEST_BLOCKLIST_FILE" mkdir -p /tmp/webdav_tests && chmod 777 /tmp/webdav_tests mkdir -p /tmp/minio_tests/test-bucket && chmod -R 777 /tmp/minio_tests - docker compose -f .docker/$DOCKERFILE run -e GITHUB_SHA=$GITHUB_SHA qgis-deps /root/QGIS/.docker/docker-qgis-test.sh $TEST_BATCH + docker compose -f .docker/$DOCKERFILE run -e GITHUB_SHA=$GITHUB_SHA qgis-deps /root/QGIS/.docker/docker-qgis-test.sh $TEST_BATCH $TEST_BLOCKLIST_FILE - name: Fix permissions on test report if: ${{ failure() }}