mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2025-12-20 05:40:04 +01:00
134 lines
4.4 KiB
Text
134 lines
4.4 KiB
Text
/**
|
|
@page test-suite libinput test suite
|
|
|
|
libinput ships with a number of tests all run automatically on `ninja test`.
|
|
The primary test suite is the `libinput-test-suite-runner`. When testing,
|
|
the `libinput-test-suite-runner` should always be invoked to check for
|
|
behavior changes.
|
|
|
|
The test suite runner uses
|
|
[Check](http://check.sourceforge.net/doc/check_html/) underneath the hood
|
|
but most of the functionality is abstracted into *litest* wrappers.
|
|
|
|
The test suite runner has a make-like job control enabled by the `-j` or
|
|
`--jobs` flag and will fork off as many parallel processes as given by this
|
|
flag. The default if unspecified is 8. When debugging a specific test case
|
|
failure it is recommended to employ test filtures (see @ref test-filtering)
|
|
and disable parallel tests. The test suite automatically disables parallel
|
|
make when run in gdb.
|
|
|
|
@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.
|
|
<b>This usually requires the tests to be run as root</b>. If not run as
|
|
root, the test suite runner will exit with status 77, interpreted as
|
|
"skipped" by ninja.
|
|
|
|
@section test-filtering Selective running of tests
|
|
|
|
litest's tests are grouped into test groups, test names 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. This is useful when trying to figure out if a specific test is
|
|
run for a device.
|
|
|
|
@code
|
|
$ ./test/libinput-test-suite-runner --list
|
|
...
|
|
pointer:left-handed:
|
|
pointer_left_handed_during_click_multiple_buttons:
|
|
trackpoint
|
|
ms-surface-cover
|
|
mouse-wheelclickcount
|
|
mouse-wheelclickangle
|
|
low-dpi-mouse
|
|
mouse-roccat
|
|
mouse-wheel-tilt
|
|
mouse
|
|
logitech-trackball
|
|
cyborg-rat
|
|
magicmouse
|
|
pointer_left_handed_during_click:
|
|
trackpoint
|
|
ms-surface-cover
|
|
mouse-wheelclickcount
|
|
mouse-wheelclickangle
|
|
low-dpi-mouse
|
|
mouse-roccat
|
|
mouse-wheel-tilt
|
|
mouse
|
|
logitech-trackball
|
|
cyborg-rat
|
|
litest-magicmouse-device
|
|
pointer_left_handed:
|
|
trackpoint
|
|
ms-surface-cover
|
|
mouse-wheelclickcount
|
|
mouse-wheelclickangle
|
|
low-dpi-mouse
|
|
mouse-roccat
|
|
mouse-wheel-tilt
|
|
mouse
|
|
...
|
|
@endcode
|
|
|
|
In the above example, the "pointer:left-handed" suite contains multiple
|
|
tests, e.g. "pointer_left_handed_during_click" (this is also the function
|
|
name of the test, making it easy to grep for). This particular test is run
|
|
for various devices including the trackpoint device and the magic mouse
|
|
device.
|
|
|
|
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/libinput-test-suite-runner --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/libinput-test-suite-runner --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/libinput-test-suite-runner --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/libinput-test-suite-runner --verbose
|
|
$ LITEST_VERBOSE=1 ninja test
|
|
@endcode
|
|
|
|
*/
|