Wayland Conformance Test Suite
Branch: master
Clone or download
bors and wmww Merge #80
80: Add struct typedefs for C compatibility r=RAOF a=wmww

Co-authored-by: William Wold <wm@wmww.sh>
Latest commit d4d99e6 Feb 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmake Fix FindGtestGmock.cmake for 18.10 Jun 6, 2018
example improved fake event sending code Jul 13, 2018
include Add compiled C object to make sure C compatibility works Feb 19, 2019
spread/build Run wlcs against the Mir compositor integration on build in CI Feb 7, 2019
tests Skip tests of known-unsupported protocols. Feb 12, 2019
tools TravisCI: Build and publish Debian packages to ppa:mir-team Jan 22, 2019
.gitignore Anchor .gitignore paths to ensure we only ignore what we expect Nov 13, 2017
.travis.yml Re-add lxd init to Travis. Jan 30, 2019
CMakeLists.txt Add compiled C object to make sure C compatibility works Feb 19, 2019
COPYING.GPL3 Initial tests and framework Nov 6, 2017
README.rst Initial tests and framework Nov 6, 2017
bors.toml bors: Clean up branches on merge Jan 16, 2018
wlcs.pc.in Build wlcs.{asan,tsan,ubsan} variants Jan 22, 2019


Wayland Conformance Test Suite

wlcs aspires to be a protocol-conformance-verifying test suite usable by Wayland compositor implementors.

It is growing out of porting the existing Weston test suite to be run in Mir's test suite, but it is designed to be usable by any compositor.

There have been a number of previous attempts at a Wayland compositor test suite - the Wayland Functional Integration Test Suite, and the Weston test suite are a couple of examples.

What sets libwlcs apart from the graveyard of existing test suites is its integration method.

Previous test suites have used a Wayland protocol extension to interrogate the compositor state. This obviously requires that compositors implement that protocol, means that tests only have access to information provided by that protocol, and the IPC means that there isn't a canonical happens-before ordering available.

Instead, libwlcs, as its name suggets, is a library for building your test suite. This makes both writing and debugging tests easier - the tests are (generally) in the same address space as the compositor, so there is a consistent global clock available, it's easier to poke around in compositor internals, and standard debugging tools can follow control flow from the test client to the compositor and back again.


libwlcs provides the tests and a main() function. All that a compositor needs to do is to provide implementations of the weak symbols found in display_server.h that are used to drive the compositor.

The Mir integration is provided as an example in examples/mir_integration.cpp.