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.