libinput/test
Peter Hutterer 86f19a0978 lua: install a timeout hook before any pcalls to prevent infinite loops
If a lua pcall takes longer than one second, kill the plugin.

How often to call the timeout handler is a trade-off but we err on the
side of "possibly too high" since the overwhelmingly vast majority of
plugins will never trigger it anyway.

Gemini suggests that Lua 5.4 can do ~500k ops per second for string
concat (the slowest listed), Claude suggests 1 to 10 million ops per
second. The test in this patch on my 4y old cheap desktop runs the
timeout hook roughly every 37ms. Any normal plugin will be well and
truly done with its work by then.

Closes: #1245
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1416>
2026-01-27 00:02:15 +00:00
..
.clang-tidy Add a clang-tidy file 2025-04-07 08:43:36 +00:00
50-litest.conf test: rename the identifier in the 50-litest.conf 2020-07-15 09:36:48 +10:00
build-cxx.cc meson.build: drop the separate cpp flags 2020-09-09 13:57:39 +10:00
build-pedantic.c Fix a couple of coding style issues 2015-05-01 12:09:57 +10:00
check-leftover-udev-rules.sh test: add a script to check for leftover litest rules 2018-03-23 12:41:23 +10:00
generate-gcov-report.sh Hook up gcov for coverage reports 2017-01-20 10:35:37 +10:00
helper-copy-and-exec-from-tmp.sh tools: move the builddir lookup function out to a separate file 2019-03-14 11:28:05 +10:00
libinput-test-suite.man test: rename the identifier in the 50-litest.conf 2020-07-15 09:36:48 +10:00
litest-device-absinfo-override.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-acer-hawaii-keyboard.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-acer-hawaii-touchpad.c test: add missing BTN_TOOL_QUINTTAP to the acer hawaii test device 2026-01-20 11:49:58 +10:00
litest-device-aiptek-tablet.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-alps-3fg.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-alps-dualpoint.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-alps-semi-mt.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-anker-mouse-kbd.c test: update a test for current kernels 2025-07-01 09:20:57 +00:00
litest-device-apple-appletouch.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-apple-internal-keyboard.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-apple-magicmouse.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-asus-rog-gladius.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-atmel-hover.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-bcm5974.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-calibrated-touchscreen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-cyborg-rat-5.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-dell-canvas-totem-touch.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-dell-canvas-totem.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-elan-tablet.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-elantech-touchpad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-format-string.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-generic-pressurepad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-generic-singletouch.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-gpio-keys.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-hp-wmi-hotkeys.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-huion-pentablet.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-huion-q620m-dial.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-ignored-mouse.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-keyboard-all-codes.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-keyboard-quirked.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-keyboard-razer-blackwidow.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-keyboard-razer-blade-stealth-videoswitch.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-keyboard-razer-blade-stealth.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-keyboard.c evdev: move the SYN_REPORT 1 filtering to the touchpad backend 2025-07-31 00:50:30 +00:00
litest-device-keypad-slide-switch.c evdev: add support for SW_KEYPAD_SLIDE 2025-12-11 13:28:41 +02:00
litest-device-lenovo-scrollpoint.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-lid-switch-surface3.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-lid-switch.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-logitech-media-keyboard-elite.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-logitech-trackball.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-magic-trackpad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-mouse-low-dpi.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-mouse-ps2.c test: add a typical PS/2 wheel mouse 2025-07-17 00:36:52 +00:00
litest-device-mouse-roccat.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-mouse-virtual.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-mouse-wheel-click-angle.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-mouse-wheel-click-count.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-mouse-wheel-hires-disabled.c plugin: ignore high-resolution wheel events from disabled wheels 2025-07-24 09:13:12 +10:00
litest-device-mouse-wheel-tilt.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-mouse.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-ms-nano-transceiver-mouse.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-ms-surface-cover.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-nexus4-touch-screen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-ploopy-pavonis-stylus.c test: add a test device for a pressureless tablet 2025-07-09 21:21:32 +00:00
litest-device-protocol-a-touch-screen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-qemu-usb-tablet.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-sony-vaio-keys.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-hover.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-i2c.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-phantomclicks.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-pressurepad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-rmi4.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-st.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-t440.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-x1-carbon-3rd.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-synaptics-x220.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-tablet-doubledial.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-tablet-mode-switch.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-tablet-rel-dial.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-thinkpad-extrabuttons.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-touch-screen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-touchpad-palm-threshold-zero.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-touchscreen-fuzz.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-touchscreen-invalid-range.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-touchscreen-mt-tool.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-trackpoint.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-uclogic-tablet.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-vmware-virtual-usb-mouse.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-bamboo-2fg-finger.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-bamboo-2fg-pad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-bamboo-2fg-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-bamboo-16fg-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-calibrated-tablet.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-12wx-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-13hdt-finger.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-13hdt-pad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-13hdt-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-24hd-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-24hdt-pad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-pro-16-finger.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-pro-16-pad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-cintiq-pro-16-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-ekr.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-hid4800-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-intuos3-pad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-intuos5-finger.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-intuos5-pad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-intuos5-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-isdv4-524c-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-isdv4-4200-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-isdv4-e6-finger.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-isdv4-e6-pen.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wacom-mobilestudio-pro-pad.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-waltop-tablet.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-wheel-only.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-xen-virtual-pointer.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-device-yubikey.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-int.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-main.c Fix clang-tidy false positives 2025-11-06 23:31:27 +00:00
litest-runner.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
litest-runner.h Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest-selftest.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
litest.c test: change the gesture state color to normal yellow 2026-01-20 14:59:02 +10:00
litest.h evdev: add support for SW_KEYPAD_SLIDE 2025-12-11 13:28:41 +02:00
symbols-leak-test test: print the usage from the symbols-leak-test 2022-11-22 19:02:03 +00:00
test-builddir-lookup.c meson: revamp the debug build detection for the builddir lookup 2026-01-10 10:39:21 +00:00
test-device.c evdev: move the SYN_REPORT 1 filtering to the touchpad backend 2025-07-31 00:50:30 +00:00
test-gestures.c test: fix some comments for accuracy 2026-01-20 14:59:02 +10:00
test-keyboard.c test: fix the keycode obfuscation test 2025-08-01 04:02:57 +00:00
test-library-version.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
test-log.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
test-misc.c evdev: add support for SW_KEYPAD_SLIDE 2025-12-11 13:28:41 +02:00
test-pad.c meson.build: change from config.set10() and #if to config.set() and #ifdef 2025-07-28 12:04:09 +10:00
test-path.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
test-plugins-lua.c lua: install a timeout hook before any pcalls to prevent infinite loops 2026-01-27 00:02:15 +00:00
test-pointer.c test: switch another test to use logcapture 2025-08-01 04:02:57 +00:00
test-quirks.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
test-switch.c evdev: add support for SW_KEYPAD_SLIDE 2025-12-11 13:28:41 +02:00
test-tablet.c Add libinput_tablet_tool_get_name() for the tool's specific name 2026-01-14 16:44:01 +10:00
test-totem.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
test-touch.c meson.build: change from config.set10() and #if to config.set() and #ifdef 2025-07-28 12:04:09 +10:00
test-touchpad-buttons.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
test-touchpad-tap.c test: correct a copy/pasted comment 2026-01-20 13:14:24 +10:00
test-touchpad.c test: set usb touchpad as internal 2026-01-10 23:33:41 +01:00
test-trackball.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
test-trackpoint.c touchpad: add configurable timeouts to disable-while-trackpointing 2025-12-02 09:24:15 +10:00
test-udev.c Run clang-format over the code 2025-07-01 16:42:44 +10:00
test-util-includes.c.in test: rename test-util-includes.c to .c.in 2025-04-04 15:47:23 +00:00
test-utils.c Use a newtype usec_t for timestamps for better type-safety 2025-12-12 04:15:15 +00:00
test_quirks_files.py pre-commit: bump to latest ruff-format 2025-07-09 00:13:00 +00:00
valgrind.suppressions test: grab the device before any lid or tablet mode switches 2020-07-07 18:51:33 +10:00