started working on injection tests

This commit is contained in:
sezanzeb 2020-11-18 23:00:18 +01:00
parent 7eb2e9c9d4
commit 2a2db8fbd0

View File

@ -23,11 +23,48 @@
import sys import sys
import time
import unittest import unittest
from keymapper.logger import update_verbosity from keymapper.logger import update_verbosity
tmp = '/tmp/key-mapper-test' tmp = '/tmp/key-mapper-test'
uinput_write_history = []
fake_event_queue = []
input_device_events = {}
def push_event(device, event):
"""Emit a fake event for the device.
Parameters
----------
device : string
event : Event
"""
if input_device_events.get(device) is None:
input_device_events[device] = []
input_device_events[device].append(event)
class Event:
"""Event to put into the injector for tests."""
def __init__(self, type, code, value):
"""
Paramaters
----------
type : int
one of evdev.ecodes.EV_*
code : int
keyboard event code as known to linux. E.g. 2 for the '1' button
value : int
1 for down, 0 for up, 2 for hold
"""
self.type = type
self.code = code
self.value = value
def patch_paths(): def patch_paths():
@ -93,11 +130,29 @@ def patch_evdev():
self.phys = fixtures[path]['phys'] self.phys = fixtures[path]['phys']
self.name = fixtures[path]['name'] self.name = fixtures[path]['name']
def grab(self):
pass
def read_loop(self):
while True:
pending_events = input_device_events.get(self.name)
if pending_events is not None and len(pending_events) > 0:
yield pending_events.pop(0)
time.sleep(0.01)
def capabilities(self): def capabilities(self):
return fixtures[self.path]['capabilities'] return fixtures[self.path]['capabilities']
class UInput:
def write(self, *args):
uinput_write_history.append(args)
def syn(self):
pass
evdev.list_devices = list_devices evdev.list_devices = list_devices
evdev.InputDevice = InputDevice evdev.InputDevice = InputDevice
evdev.UInput = UInput
def patch_unsaved(): def patch_unsaved():