diff --git a/doc/test-suite.dox b/doc/test-suite.dox index e6fbe629..d9396890 100644 --- a/doc/test-suite.dox +++ b/doc/test-suite.dox @@ -1,18 +1,21 @@ /** @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 main test -suite is `libinput-test-suite-runner`. +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 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. +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 @@ -28,35 +31,67 @@ with your desktop. 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. +This usually requires the tests to be run as root. 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 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. +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 -device:wheel: - wheel only - blackwidow -device:invalid devices: - no device -device:group: - no device - logitech trackball - MS surface cover - mouse_roccat - wheel only - blackwidow +... +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 "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 +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 @@ -93,7 +128,7 @@ environment variable, if set, also enables verbose mode. @code $ ./test/libinput-test-suite-runner --verbose -$ LITEST_VERBOSE=1 make check +$ LITEST_VERBOSE=1 ninja test @endcode */