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 66479311008314a4e0c4972b01b41f9bfacfb25c
Author: Cedric BAIL <[email protected]>
AuthorDate: Sat Aug 8 22:23:53 2026 -0600

    tests - map Track A tasks to the wlcs tests that should go green
    
    A conformance run produces 1163 results and no opinion about which of them
    any particular piece of work is supposed to fix. This turns the plan's task
    ids into runnable acceptance criteria:
    
      ./wlcs-task.sh E-20     run the tests E-20 should fix
      ./wlcs-task.sh --list   show the map
      ./wlcs-task.sh --all    table of every mapped task
    
    so a branch can claim "done" in terms someone else can re-check rather than
    in terms of what its author believed.
    
    Three things it takes care to report honestly:
    
      - a filter matching nothing at all is an error, not a pass. wlcs can
        rename suites between releases and a vacuous green is worse than a red.
    
      - all-skipped is reported as "not implemented", not as success. wlcs skips
        a test when the global it needs is not advertised - that is E-05, E-08
        and E-13 today, and it is a meaningful state distinct from failing.
    
      - a green filter is not automatically a finished task. E-01 is the
        example: WlOutputTest passes at wl_output v2, so it says nothing about
        the v4 work, and tasks.txt says so at the entry. Where wlcs is weak or
        absent the in-tree tests and the third-party clients are the criterion,
        and the tasks with no coverage at all are listed explicitly so their
        absence is deliberate rather than an oversight.
    
    Filters were taken from the real --gtest_list_tests output, not guessed, and
    the file records the measured baseline so progress is visible rather than
    asserted.
    
    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    Claude-Session: https://claude.ai/code/session_01FtoiXoSKUmZb6Aix6U3GZS
---
 src/tests/wlcs/tasks.txt    | 77 ++++++++++++++++++++++++++++++++++++++
 src/tests/wlcs/wlcs-task.sh | 90 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 167 insertions(+)

diff --git a/src/tests/wlcs/tasks.txt b/src/tests/wlcs/tasks.txt
new file mode 100644
index 000000000..9de6a58b2
--- /dev/null
+++ b/src/tests/wlcs/tasks.txt
@@ -0,0 +1,77 @@
+# Track A task -> wlcs acceptance criteria.
+#
+# Each line is:   <task-id>  <gtest filter>  # note
+#
+# The task ids are the stable ones from WAYLAND-BROWSER-TODO.md. Running
+# ./wlcs-task.sh E-20 runs exactly the tests that task is expected to fix, so a
+# branch can state "done" in terms someone else can re-check rather than in
+# terms of what the author believed.
+#
+# Two things to be honest about when reading a result here:
+#
+#  * These filters are necessary, not sufficient. wlcs covers what wlcs covers.
+#    E-02's high-resolution scroll axes, E-14's dmabuf feedback and E-15's
+#    toplevel drag have no wlcs coverage at all and are marked as such - those
+#    need the in-tree tests and the third-party clients in the plan's matrix.
+#
+#  * Suite names come from the real test list (--gtest_list_tests), not from
+#    guesswork, but wlcs can rename or add suites between releases. If a filter
+#    suddenly matches zero tests, that is a signal to re-check, and
+#    wlcs-task.sh fails rather than reporting a vacuous pass.
+#
+#  * A green result is not automatically a finished task. E-01 is the clearest
+#    case: WlOutputTest passes at wl_output v2, so it says nothing about the
+#    v4 work. Where the filter is weak the in-tree test is the real criterion -
+#    for E-01 that is src/tests/wayland/test_output.c, which does check the
+#    bound version, the name/description events and their ordering.
+#
+# Recorded against wlcs v1.7.0.
+
+E-01  WlOutputTest.*                                          # WEAK: does not check the version; see note
+E-03  XdgPopupPositionerTest.*:XdgPopupTest.*:XdgSurfaceStableTest.*:XdgSurfaceV6Test.*  # positioner, reposition, configure_bounds
+E-05  PrimarySelection.*:GtkPrimarySelection.*                # middle-click paste
+E-08  XdgOutputV1Test.*                                       # xdg-output logical geometry
+E-13  TextInputV3WithInputMethodV2Test.*                      # text-input v3
+E-20  PointerConstraints.*:RelativePointer.*                  # pointer lock/confine + relative motion
+E-21  BadBufferTest.*:SecondBadBufferTest.*                   # buffer validation
+E-22  ClientSurfaceEventsTest.*:SurfacePointerMotionTest.*    # enter/leave bookkeeping
+E-24  XdgToplevelStableTest.*:XdgToplevelV6Test.*:XdgToplevelStableConfigurationTest.*:XdgToplevelV6ConfigurationTest.*  # interactive move/resize, window geometry
+
+# Not a single task - the big input-region and subsurface suites fail for a mix
+# of reasons (focus never arriving, spurious leaves, subsurface input routing).
+# Triage these before assigning them; they are the largest remaining block.
+TRIAGE  RegionSurfaceInputCombinations.*:SurfaceInputCombinations.*:SubsurfaceTest.*:SubsurfaceMultilevelTest.*:ToplevelInputCombinations.*:TouchTest.*
+
+# No wlcs coverage. Listed so their absence is deliberate rather than an
+# oversight: use the in-tree tests and the third-party clients instead.
+#   E-00  advertised scale        - needs a HiDPI zone, not headless
+#   E-02  axis/value120           - wlcs does not exercise scroll axes
+#   E-04  xdg-activation          - no suite
+#   E-06  xdg-decoration          - no suite
+#   E-07  presentation-time       - no suite; use weston-presentation-shm
+#   E-09  idle-inhibit            - no suite
+#   E-10  cursor-shape            - no suite
+#   E-11  pointer-gestures        - no suite
+#   E-12  keyboard-shortcuts-inhibit - no suite
+#   E-14  dmabuf v4               - no suite
+#   E-15  xdg_toplevel_drag       - no suite
+#   E-23  error object/code       - a reporting fix; visible in any xdg failure
+#
+# Deliberately not planned: zwlr_layer_shell_v1 (LayerSurface*, 284 tests),
+# zwlr_foreign_toplevel_manager_v1 (ForeignToplevel*), zwlr_virtual_pointer_v1.
+# No browser uses any of them. See WAYLAND-BROWSER-TODO.md.
+
+# Baseline, measured 2026-08-08 on wl/protocol-errors (wlcs v1.7.0, relaxed
+# mode). "not implemented" means every test skipped because the global is not
+# advertised at all - wlcs skips on the bind failing, not on our descriptor.
+#
+#   E-01     passed 1   failed 0   skipped 1    DONE (but see the WEAK note)
+#   E-05     passed 0   failed 0   skipped 10   not implemented
+#   E-08     passed 0   failed 0   skipped 1    not implemented
+#   E-13     passed 0   failed 0   skipped 11   not implemented
+#   E-20     passed 3   failed 15  skipped 0    not yet
+#   E-21     passed 0   failed 2   skipped 0    not yet
+#   E-22     passed 1   failed 5   skipped 0    not yet
+#   E-24     passed 5   failed 15  skipped 0    not yet   (relaxed mode only)
+#   E-03     not yet baselined - 160 tests, slow
+#   TRIAGE   not yet baselined - the big input/subsurface block
diff --git a/src/tests/wlcs/wlcs-task.sh b/src/tests/wlcs/wlcs-task.sh
new file mode 100755
index 000000000..be0cce46f
--- /dev/null
+++ b/src/tests/wlcs/wlcs-task.sh
@@ -0,0 +1,90 @@
+#!/bin/sh
+# Run the wlcs tests a Track A task is expected to fix.
+#
+#   ./wlcs-task.sh E-20            run one task's tests
+#   ./wlcs-task.sh --list          show the task -> filter map
+#   ./wlcs-task.sh --all           run every mapped task, print a table
+#
+# Environment:
+#   WLCS            path to the wlcs runner (default: looks in PATH, then
+#                   /usr/libexec/wlcs/wlcs)
+#   E_WLCS_SO       path to e_wlcs.so (default: alongside this script's build)
+#   E_WLCS_BIN      installed enlightenment to test
+#   E_WLCS_STRICT   1 to disable the attach-before-configure relaxation
+#
+# Exits non-zero unless at least one test passed and none failed. An
+# all-skipped task reports "not implemented" and is not a pass: wlcs skips when
+# the global a test needs is not advertised at all. A filter matching nothing
+# whatsoever is a broken filter and is reported as such.
+
+set -eu
+
+here=$(cd "$(dirname "$0")" && pwd)
+tasks="$here/tasks.txt"
+
+WLCS=${WLCS:-}
+if [ -z "$WLCS" ]; then
+    if command -v wlcs >/dev/null 2>&1; then WLCS=$(command -v wlcs)
+    elif [ -x /usr/libexec/wlcs/wlcs ]; then WLCS=/usr/libexec/wlcs/wlcs
+    else
+        echo "wlcs-task: no wlcs runner; set \$WLCS (see README.md)" >&2
+        exit 2
+    fi
+fi
+
+E_WLCS_SO=${E_WLCS_SO:-$here/../../../build/src/tests/wlcs/e_wlcs.so}
+
+filter_for() {
+    awk -v want="$1" '!/^#/ && NF >= 2 && $1 == want { print $2; exit }' "$tasks"
+}
+
+run_one() {
+    task=$1
+    filter=$(filter_for "$task")
+    if [ -z "$filter" ]; then
+        echo "wlcs-task: no filter for '$task'; try --list" >&2
+        return 2
+    fi
+
+    out=$("$WLCS" "$E_WLCS_SO" --gtest_filter="$filter" 2>&1) || :
+    ok=$(printf '%s\n' "$out" | grep -cE '^\[       OK \]' || :)
+    bad=$(printf '%s\n' "$out" | grep -cE '^\[  FAILED  \] [A-Za-z].*ms\)' || :)
+    # wlcs skips a test when the global it needs is not advertised at all, so
+    # an all-skipped task means "not implemented yet", not "broken filter".
+    skip=$(printf '%s\n' "$out" | grep -cE '^\[     SKIP \]' || :)
+
+    if [ "$((ok + bad + skip))" -eq 0 ]; then
+        echo "$task: FILTER MATCHED NOTHING -- '$filter'" >&2
+        echo "wlcs-task: wlcs may have renamed a suite; re-check tasks.txt" >&2
+        return 3
+    fi
+
+    if [ "$bad" -eq 0 ] && [ "$ok" -eq 0 ]; then
+        state='not implemented'
+    elif [ "$bad" -eq 0 ]; then
+        state=DONE
+    else
+        state='not yet'
+    fi
+
+    printf '%-8s passed %-5s failed %-5s skipped %-5s  %s\n' \
+        "$task" "$ok" "$bad" "$skip" "$state"
+    [ "$bad" -eq 0 ] && [ "$ok" -gt 0 ]
+}
+
+case "${1:---list}" in
+    --list)
+        printf '%-8s %s\n' TASK FILTER
+        awk '!/^#/ && NF >= 2 { printf "%-8s %s\n", $1, $2 }' "$tasks"
+        ;;
+    --all)
+        rc=0
+        for t in $(awk '!/^#/ && NF >= 2 { print $1 }' "$tasks"); do
+            run_one "$t" || rc=1
+        done
+        exit $rc
+        ;;
+    *)
+        run_one "$1"
+        ;;
+esac

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

Reply via email to