This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 35b6e857c19 Make the CI test segfault fallback find the JUnit XML 
report (#74280)
35b6e857c19 is described below

commit 35b6e857c19c0efaedcd7410bc88fde35c14fbbe
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sat Oct 31 18:08:04 2026 +0100

    Make the CI test segfault fallback find the JUnit XML report (#74280)
    
    When pytest exits with a segfault, run_ci_tests.sh is meant to check the
    JUnit XML report and pass the job if every test actually passed. The
    report path was read from RESULT_LOG_FILE, which nothing sets; under
    `set -u` the script aborted with "unbound variable" instead, so the
    fallback never ran and every segfault failed the job with exit code 1.
    
    The checker also treated a <testsuite> element without child elements
    as missing, because an ElementTree element with no children is falsy.
    
    Generated-by: Claude Opus 5
---
 scripts/in_container/check_junitxml_result.py |  2 +-
 scripts/in_container/run_ci_tests.sh          | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/scripts/in_container/check_junitxml_result.py 
b/scripts/in_container/check_junitxml_result.py
index eecb401e698..e35d840a2ac 100755
--- a/scripts/in_container/check_junitxml_result.py
+++ b/scripts/in_container/check_junitxml_result.py
@@ -30,7 +30,7 @@ if __name__ == "__main__":
         with open(fname) as fh:
             root = ET.parse(fh)
         testsuite = root.find(".//testsuite")
-        if testsuite:
+        if testsuite is not None:
             num_failures = testsuite.get("failures")
             num_errors = testsuite.get("errors")
             if num_failures == "0" and num_errors == "0":
diff --git a/scripts/in_container/run_ci_tests.sh 
b/scripts/in_container/run_ci_tests.sh
index 77f5e69abb7..d49f49aecc5 100755
--- a/scripts/in_container/run_ci_tests.sh
+++ b/scripts/in_container/run_ci_tests.sh
@@ -28,6 +28,18 @@ set +e
 export PYTHONFAULTHANDLER="1"
 export PYTHONUNBUFFERED="1"
 
+# Breeze passes the JUnit XML path only as a pytest argument.
+RESULT_LOG_FILE=""
+for arg in "${@}"; do
+    if [[ ${arg} == --junitxml=* ]]; then
+        RESULT_LOG_FILE="${arg#--junitxml=}"
+    fi
+done
+# A report left by an earlier run would let a segfault pass the check below.
+if [[ -n ${RESULT_LOG_FILE} ]]; then
+    rm -f "${RESULT_LOG_FILE}"
+fi
+
 pytest "${@}"
 RES=$?
 

Reply via email to