diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 243a98c88f..5a6ac3dc69 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -542,10 +542,10 @@ stages: # This should be fixed before pytest 9.1, when it becomes ineffective. - if pytest --version | grep -F "pytest 9.0" >/dev/null; then echo "filterwarnings = ignore::pytest.PytestRemovedIn9Warning" >> pytest.ini; fi - > - ("$PYTEST" --junit-xml="$CI_PROJECT_DIR"/junit.xml -n "$TEST_PARALLEL_JOBS" | tee pytest.out.txt) || RET=1 - - git clone --depth 1 https://gitlab.isc.org/isc-projects/bind9-qa.git + ("$PYTEST" --junit-xml="$CI_PROJECT_DIR"/junit_pytest.xml -n "$TEST_PARALLEL_JOBS" | tee pytest.out.txt) || RET=1 + - *git_clone_bind9-qa - > - "$PYTHON" bind9-qa/ci/postprocess_junit_files.py "$CI_PROJECT_DIR"/junit.xml --output "$CI_PROJECT_DIR"/junit.xml + "$PYTHON" bind9-qa/ci/postprocess_junit_files.py "$CI_PROJECT_DIR"/junit_pytest.xml --output "$CI_PROJECT_DIR"/junit.xml - (exit $RET) - '( ! grep -F "grep: warning:" pytest.out.txt )' - test "$CLEAN_BUILD_ARTIFACTS_ON_SUCCESS" -eq 0 || ( cd ../../.. && ninja -C build clean >/dev/null 2>&1 ) @@ -771,13 +771,29 @@ meson-format: doctest: <<: *precheck_job needs: [] + # This script needs to: 1) fail if the doctest fails, 2) fail if + # the junit.xml file is broken, 3) produce the junit.xml file even if + # the doctest fails. Therefore, $RET is used to "cache" the + # result of running pytest as interrupting the script immediately when + # a doctest fails would make checking the contents of the junit.xml + # file impossible (GitLab Runner uses "set -o pipefail"). script: - *configure - meson compile -C build system-test-init + - *find_python - *find_pytest - cd bin/tests/system/isctest + - RET=0 - > - "$PYTEST" --noconftest --doctest-modules + "$PYTEST" --noconftest --doctest-modules --junit-xml="$CI_PROJECT_DIR/junit_doctest.xml" || RET=1 + - *git_clone_bind9-qa + - > + "$PYTHON" bind9-qa/ci/postprocess_junit_files.py "$CI_PROJECT_DIR/junit_doctest.xml" --output "$CI_PROJECT_DIR/junit.xml" + - (exit $RET) + artifacts: + reports: + junit: + - junit.xml pylint: <<: *precheck_job @@ -949,10 +965,10 @@ cross-version-config-tests: # file impossible (GitLab Runner uses "set -o pipefail"). - RET=0 - > - "$PYTEST" --setup-only --junit-xml="$CI_PROJECT_DIR"/junit.xml -n "${TEST_PARALLEL_JOBS:-1}" || RET=1 + "$PYTEST" --setup-only --junit-xml="$CI_PROJECT_DIR"/junit_pytest.xml -n "${TEST_PARALLEL_JOBS:-1}" || RET=1 - *git_clone_bind9-qa - > - "$PYTHON" bind9-qa/ci/postprocess_junit_files.py "$CI_PROJECT_DIR"/junit.xml --output "$CI_PROJECT_DIR"/junit.xml + "$PYTHON" bind9-qa/ci/postprocess_junit_files.py "$CI_PROJECT_DIR"/junit_pytest.xml --output "$CI_PROJECT_DIR"/junit.xml - (exit $RET) needs: - job: ci-variables