This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch wl/tests-wlcs
in repository enlightenment.
View the commit online.
commit 7d85c4f39b1e46b7795281e8f5c48a7db27ff671
Author: Cedric BAIL <[email protected]>
AuthorDate: Sat Aug 8 19:49:14 2026 -0600
tests - correct what the wlcs extension descriptor actually does
The earlier comment - and wlcs's own header - say the descriptor makes wlcs
skip tests for extensions the integration does not declare. Checked against
wlcs 1.7.0's source, it does not: bind_if_supported() carries a TODO
proposing exactly that, unimplemented. It showed up here as the
PointerConstraints tests running in full against a descriptor that never
mentioned zwp_pointer_constraints_v1.
What the list really drives is version negotiation - a global gets bound at
the version declared here - and shell selection in the_wl_shell() and
the_xdg_shell_v6().
That makes a stale entry worse than "some tests do not run": it does not
skip anything, it quietly makes tests exercise an older protocol than E
speaks, and they pass. Which is the argument for e_wlcs_driver checking the
list against the real registry rather than trusting it.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01FtoiXoSKUmZb6Aix6U3GZS
---
src/tests/wlcs/README.md | 20 +++++++++++++-------
src/tests/wlcs/e_wlcs.c | 22 ++++++++++++++++------
2 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/src/tests/wlcs/README.md b/src/tests/wlcs/README.md
index ca286d992..2540df238 100644
--- a/src/tests/wlcs/README.md
+++ b/src/tests/wlcs/README.md
@@ -49,12 +49,18 @@ cmake --build build -j
libstdc++'s own `char_traits.h`, and wlcs builds with `-Werror`. Nothing to
do with wlcs or with us.
-## Turning more of the suite on
+## Keeping the declared extension list honest
-wlcs skips every test for an extension the integration does not declare, so
-`_extensions[]` in `e_wlcs.c` is the switch. Adding a protocol to E means
-adding it there too, or its tests silently never run.
+`_extensions[]` in `e_wlcs.c` is what the integration tells wlcs it supports.
-That list is checked rather than trusted: `e_wlcs_driver` walks the compositor's
-real registry and fails if the two disagree, in either direction — claiming a
-version E does not have, or claiming an interface it does not advertise.
+The wlcs header implies this skips whole groups of tests. It does not — wlcs
+1.7.0's `bind_if_supported()` carries a TODO proposing exactly that, unimplemented.
+What the list really drives is **version negotiation** (a global is bound at the
+version declared here) and **shell selection** (`the_wl_shell()` /
+`the_xdg_shell_v6()`). Everything else runs whatever you declare.
+
+That makes an out-of-date entry worse than it sounds: it does not skip tests,
+it quietly makes them exercise an older protocol than E actually speaks, and
+they pass. So the list is checked rather than trusted — `e_wlcs_driver` walks
+the compositor's real registry and fails if the two disagree in either
+direction: a version E does not have, or an interface it does not advertise.
diff --git a/src/tests/wlcs/e_wlcs.c b/src/tests/wlcs/e_wlcs.c
index 5a9330b9d..c81f30761 100644
--- a/src/tests/wlcs/e_wlcs.c
+++ b/src/tests/wlcs/e_wlcs.c
@@ -544,13 +544,23 @@ _server_create_touch(WlcsDisplayServer *server)
/* ------------------------------------------------------------- descriptor */
-/* What we tell wlcs we support. wlcs *skips* every test for an extension not
- * listed here, so this is the switch that turns parts of the suite on: as
- * Track A lands protocols, they get added and more of the suite runs.
+/* What we tell wlcs we support.
*
- * It has to be kept in step with what E actually advertises. That is checked,
- * not trusted: test_descriptor.c walks the real registry and fails if the two
- * disagree, the same discipline as globals.expected.
+ * The header suggests this makes wlcs skip whole groups of tests. Checked
+ * against wlcs 1.7.0's own source, that is not what happens - there is even a
+ * TODO in bind_if_supported() proposing it. What the list actually drives is:
+ *
+ * - version negotiation. bind_if_supported() takes the version from here
+ * when binding a global, so declaring a version *lower* than E advertises
+ * silently makes every test exercise the older protocol;
+ * - shell selection: the_wl_shell() and the_xdg_shell_v6() consult it, and
+ * tests needing a shell we do not declare raise
+ * ExtensionExpectedlyNotSupported rather than a hard failure.
+ *
+ * Everything else runs regardless of what is listed. So an under-declared
+ * entry does not skip tests, it quietly weakens them - which is worse, and is
+ * why e_wlcs_driver checks this list against the compositor's real registry
+ * instead of trusting it.
*/
static const WlcsExtensionDescriptor _extensions[] =
{
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.