/** @page test-suite libinput test suite The libinput test suite is based on [Check](http://check.sourceforge.net/doc/check_html/) and runs automatically during `make check`. Check itself is wrapped into a libinput-specific test suite called *litest*. Tests are found in `$srcdir/test/`, the test binaries are prefixed with `test-` and can be run individually. @section test-config X.Org config to avoid interference uinput devices created by the test suite are usually recognised by X as input devices. All events sent through these devices will generate X events and interfere with your desktop. Copy the file `$srcdir/test/50-litest.conf` into your `/etc/X11/xorg.conf.d` and restart X. This will ignore any litest devices and thus not interfere with your desktop. @section test-root Permissions required to run tests Most tests require the creation of uinput devices and access to the resulting `/dev/input/eventX` nodes. Some tests require temporary udev rules. This usually requires the tests to be run as root. @section test-filtering Selective running of tests litest's tests are grouped by test groups and devices. A test group is e.g. "touchpad:tap" and incorporates all tapping-related tests for touchpads. Each test function is (usually) run with one or more specific devices. The `--list` commandline argument shows the list of suites and tests. @code $ ./test/test-device --list device:wheel: wheel only blackwidow device:invalid devices: no device device:group: no device logitech trackball MS surface cover mouse_roccat wheel only blackwidow ... @endcode In the above example, the "device:wheel" suite is run for the "wheel only" and the "blackwidow" device. Both devices are automatically instantiated through uinput by litest. The "no device" entry signals that litest does not instantiate a uinput device for a specific test (though the test itself may instantiate one). The `--filter-test` argument enables selective running of tests through basic shell-style function name matching. For example: @code $ ./test/test-touchpad --filter-test="*1fg_tap*" @endcode The `--filter-device` argument enables selective running of tests through basic shell-style device name matching. The device names matched are the litest-specific shortnames, see the output of `--list`. For example: @code $ ./test/test-touchpad --filter-device="synaptics*" @endcode The `--filter-group` argument enables selective running of test groups through basic shell-style test group matching. The test groups matched are litest-specific test groups, see the output of `--list`. For example: @code $ ./test/test-touchpad --filter-group="touchpad:*hover*" @endcode The `--filter-device` and `--filter-group` arguments can be combined with `--list` to show which groups and devices will be affected. @section test-verbosity Controlling test output Each test supports the `--verbose` commandline option to enable debugging output, see libinput_log_set_priority() for details. The `LITEST_VERBOSE` environment variable, if set, also enables verbose mode. @code $ ./test/test-device --verbose $ LITEST_VERBOSE=1 make check @endcode */