Lines Matching +full:self +full:- +full:test
2 # SPDX-License-Identifier: GPL-2.0
3 # -*- coding: utf-8 -*-
19 logger = logging.getLogger("hidtools.test.base")
136 def __init__(self, name, application, rdesc_str=None, rdesc=None, input_info=None): argument
138 self.application_matches = application_matches
140 name = f"uhid test {self.__class__.__name__}"
141 if not name.startswith("uhid test "):
142 name = "uhid test " + self.name
143 self.name = name
154 # List of kernel modules to load before starting the test
155 # if any module is not available (not compiled), the test will skip.
157 # for example ("playstation", "hid-playstation")
160 def assertInputEventsIn(self, expected_events, effective_events): argument
167 def assertInputEvents(self, expected_events, effective_events): argument
168 remaining = self.assertInputEventsIn(expected_events, effective_events)
202 def create_device(self): argument
205 def _load_kernel_module(self, kernel_driver, kernel_module): argument
212 sysfs_path = Path("/sys/module") / kernel_module.replace("-", "_")
219 f"module {kernel_module} could not be loaded, skipping the test"
223 def load_kernel_module(self): argument
224 for kernel_driver, kernel_module in self.kernel_modules:
225 self._load_kernel_module(kernel_driver, kernel_module)
229 def new_uhdev(self, load_kernel_module): argument
230 return self.create_device()
232 def assertName(self, uhdev): argument
237 def context(self, new_uhdev, request): argument
240 with new_uhdev as self.uhdev:
242 test, message, *rest = skip_cond.args
244 if test(self.uhdev):
247 self.uhdev.create_kernel_device()
249 while not self.uhdev.is_ready() and time.time() - now < 5:
250 self.uhdev.dispatch(1)
251 if self.uhdev.get_evdev() is None:
253 … f"available list of input nodes: (default application is '{self.uhdev.application}')"
255 logger.warning(self.uhdev.input_nodes)
257 self.uhdev = None
262 def check_taint(self): argument
271 def test_creation(self): argument
277 uhdev = self.uhdev
280 self.assertName(uhdev)
288 A context-manager compatible class that sets up our udev rules file and
291 This class is tailored to our test setup: it only sets up the udev rule
294 the session once, then once for each test (the first of which will
295 trigger the udev rule) and once the last test exited and the session
299 def __init__(self): argument
300 self.refs = 0
301 self.rulesfile = None
303 def __enter__(self): argument
304 self.refs += 1
305 if self.refs == 2 and self.rulesfile is None:
306 self.create_udev_rule()
307 self.reload_udev_rules()
309 def __exit__(self, exc_type, exc_value, traceback): argument
310 self.refs -= 1
311 if self.refs == 0 and self.rulesfile:
312 os.remove(self.rulesfile.name)
313 self.reload_udev_rules()
315 def reload_udev_rules(self): argument
318 subprocess.run("udevadm control --reload-rules".split())
319 subprocess.run("systemd-hwdb update".split())
321 def create_udev_rule(self): argument
326 prefix="91-uhid-test-device-REMOVEME-",
333 'KERNELS=="*input*", ATTRS{name}=="*uhid test *", ENV{LIBINPUT_IGNORE_DEVICE}="1"\n'
336 …'KERNELS=="*input*", ATTRS{name}=="*uhid test * System Multi Axis", ENV{ID_INPUT_TOUCHSCREEN}="", …
338 self.rulesfile = f