This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch wl/browser-all
in repository enlightenment.

View the commit online.

commit f966904674de038b36a378a33091167c65615626
Author: Cedric BAIL <[email protected]>
AuthorDate: Sun Aug 9 08:38:25 2026 -0600

    tests - record expected failures, and notice when they stop failing
    
    The libwayland stride bug is not going to be fixed and rolled out quickly,
    so BadBufferTest.client_lies_about_buffer_size will fail for a long time
    whatever we do. Leaving E-21 permanently red is the worst option: a filter
    that is always red gets ignored, and then a real regression hides behind it.
    
    expected-failures.txt records such tests with the reason and, more usefully,
    the condition under which the entry should go. wlcs-task.sh subtracts them
    from the failure count and reports them as "xfail", so E-21 now reads
    "failed 1 xfail 1" - the one remaining failure being the SIGBUS case, which
    really is ours.
    
    The half that earns its keep is the other direction: if a test listed here
    starts passing, that is an error, not a quiet success. It means the external
    fix has landed and our workaround may no longer be needed. Without that, a
    workaround outlives its reason and nobody finds out for years - so an
    unexpected pass exits 4 and says what to do about it.
    
    Verified both ways: the known failure is absorbed, and deliberately listing
    a passing test is reported as UNEXPECTED PASS rather than ignored.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    Claude-Session: https://claude.ai/code/session_01FtoiXoSKUmZb6Aix6U3GZS
---
 src/tests/wlcs/expected-failures.txt | 14 ++++++++++++++
 src/tests/wlcs/wlcs-task.sh          | 26 ++++++++++++++++++++++++--
 2 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/src/tests/wlcs/expected-failures.txt b/src/tests/wlcs/expected-failures.txt
new file mode 100644
index 000000000..72d5c9c97
--- /dev/null
+++ b/src/tests/wlcs/expected-failures.txt
@@ -0,0 +1,14 @@
+# Tests that fail for reasons outside this tree.
+#
+#   <full gtest test name>   <one-line reason>
+#
+# wlcs-task.sh subtracts these from the failure count and reports them as
+# "xfail". Crucially it also fails if one of them *passes*: an expected failure
+# that starts working is the signal that the external fix has landed and our
+# workaround can go. Without that, a workaround outlives its reason and nobody
+# finds out for years.
+#
+# Keep the reason specific enough that someone can check whether it still
+# holds, and delete the line rather than the check when it stops holding.
+
+BadBufferTest.client_lies_about_buffer_size  libwayland wl_shm accepts a stride too small for the format; see libwayland-shm-stride-bug.md. E rejects the buffer at attach so the out-of-bounds read is closed, but the test asserts the error on wl_shm_pool from create_buffer, which is libwayland's request and not ours. Remove when libwayland validates stride against bytes-per-pixel.
diff --git a/src/tests/wlcs/wlcs-task.sh b/src/tests/wlcs/wlcs-task.sh
index 115995757..e99a6c5a2 100755
--- a/src/tests/wlcs/wlcs-task.sh
+++ b/src/tests/wlcs/wlcs-task.sh
@@ -22,6 +22,7 @@ set -eu
 
 here=$(cd "$(dirname "$0")" && pwd)
 tasks="$here/tasks.txt"
+xfails="$here/expected-failures.txt"
 
 WLCS=${WLCS:-}
 if [ -z "$WLCS" ]; then
@@ -60,6 +61,27 @@ run_one() {
         return 3
     fi
 
+    # Split the failures into "ours" and "known to be someone else's".
+    xfail=0; xpass=0
+    if [ -f "$xfails" ]; then
+        while read -r name _rest; do
+            case "$name" in ''|\#*) continue ;; esac
+            if printf '%s\n' "$out" | grep -qE "^\[  FAILED  \] $(echo "$name" | sed 's/[.[\*^$]/\\&/g') "; then
+                xfail=$((xfail + 1)); bad=$((bad - 1))
+            elif printf '%s\n' "$out" | grep -qE "^\[       OK \] $(echo "$name" | sed 's/[.[\*^$]/\\&/g') "; then
+                xpass=$((xpass + 1))
+                echo "$task: $name now PASSES but is listed as an expected failure." >&2
+                echo "wlcs-task: the external reason has gone away - drop the entry, and check whether our workaround is still needed." >&2
+            fi
+        done < "$xfails"
+    fi
+
+    if [ "$xpass" -gt 0 ]; then
+        printf '%-8s passed %-5s failed %-5s skipped %-5s xfail %-5s  UNEXPECTED PASS\n' \
+            "$task" "$ok" "$bad" "$skip" "$xfail"
+        return 4
+    fi
+
     if [ "$bad" -eq 0 ] && [ "$ok" -eq 0 ]; then
         state='not implemented'
     elif [ "$bad" -eq 0 ]; then
@@ -68,8 +90,8 @@ run_one() {
         state='not yet'
     fi
 
-    printf '%-8s passed %-5s failed %-5s skipped %-5s  %s\n' \
-        "$task" "$ok" "$bad" "$skip" "$state"
+    printf '%-8s passed %-5s failed %-5s skipped %-5s xfail %-5s  %s\n' \
+        "$task" "$ok" "$bad" "$skip" "$xfail" "$state"
     [ "$bad" -eq 0 ] && [ "$ok" -gt 0 ]
 }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to