eis: send missing ei_text interface version

The protocol test we had was broken, it would assume that any interface
we send was present instead of only taking the ones the server replied
with. Fix this so this triggers next time.

Fixes: 1f9be0fd0a ("Add a new text interface for sending keysyms and utf8 text")
Part-of: <https://gitlab.freedesktop.org/libinput/libei/-/merge_requests/387>
This commit is contained in:
Peter Hutterer 2026-04-23 21:17:07 +10:00
parent 428984ce75
commit cea415fc40
2 changed files with 14 additions and 2 deletions

View file

@ -136,6 +136,7 @@ client_msg_finish(struct eis_handshake *setup)
SEND_INTERFACE_VERSION(EIS_SCROLL, ei_scroll);
SEND_INTERFACE_VERSION(EIS_KEYBOARD, ei_keyboard);
SEND_INTERFACE_VERSION(EIS_TOUCHSCREEN, ei_touchscreen);
SEND_INTERFACE_VERSION(EIS_TEXT, ei_text);
#undef SEND_INTERFACE_VERSION

View file

@ -171,16 +171,18 @@ class Ei:
self.send(setup.ContextType(EiHandshake.EiContextType.SENDER))
self.send(setup.Name("test client"))
requested_versions = {}
def on_interface_version(_, name, version):
logger.debug(f"Interface {name} v{version}")
assert version <= self.interface_versions[name]
assert version <= requested_versions[name]
self.interface_versions[name] = version
self.handshake.connect("InterfaceVersion", on_interface_version)
for iname in filter(lambda i: i != InterfaceName.EI_HANDSHAKE, InterfaceName):
version = interface_versions.get(iname, VERSION_V(1))
self.interface_versions[iname] = version
requested_versions[iname] = version
self.send(setup.InterfaceVersion(iname, version))
self.send(setup.Finish())
@ -419,6 +421,12 @@ class TestEiProtocol:
assert ei.interface_versions[InterfaceName.EI_CALLBACK] == VERSION_V(1)
# Make sure we get all interfaces
for iname in filter(
lambda iname: iname != InterfaceName.EI_HANDSHAKE, InterfaceName
):
assert iname in ei.interface_versions
# Right now all our versions are 1, so let's ensure that's true
for name, version in ei.interface_versions.items():
print(name, version)
@ -445,6 +453,7 @@ class TestEiProtocol:
# Right now all our EIS versions are 1, despite whatever we announce
for name, version in ei.interface_versions.items():
print(name, version)
assert version == VERSION_V(1), f"For interface {name}"
eis.terminate()
@ -573,6 +582,7 @@ class TestEiProtocol:
InterfaceName.EI_TOUCHSCREEN,
InterfaceName.EI_SCROLL,
InterfaceName.EI_BUTTON,
InterfaceName.EI_TEXT,
]:
ei.send(
setup.InterfaceVersion(interface, VERSION_V(1))
@ -614,6 +624,7 @@ class TestEiProtocol:
InterfaceName.EI_SCROLL,
InterfaceName.EI_KEYBOARD,
InterfaceName.EI_TOUCHSCREEN,
InterfaceName.EI_TEXT,
)
]
)