mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-02-03 20:30:27 +01:00
test: expose litest_create() to test cases
And make it init the full litest device minus the libinput device. This enables us to add litest devices that aren't handled by libinput. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
64fcd7bd02
commit
dddcc1f959
2 changed files with 45 additions and 32 deletions
|
|
@ -1262,7 +1262,10 @@ litest_init_device_udev_rules(struct litest_test_device *dev)
|
|||
return path;
|
||||
}
|
||||
|
||||
static struct litest_device *
|
||||
/**
|
||||
* Creates a uinput device but does not add it to a libinput context
|
||||
*/
|
||||
struct litest_device *
|
||||
litest_create(enum litest_device_type which,
|
||||
const char *name_override,
|
||||
struct input_id *id_override,
|
||||
|
|
@ -1275,6 +1278,8 @@ litest_create(enum litest_device_type which,
|
|||
const struct input_id *id;
|
||||
struct input_absinfo *abs;
|
||||
int *events, *e;
|
||||
const char *path;
|
||||
int fd, rc;
|
||||
|
||||
dev = devices;
|
||||
while (*dev) {
|
||||
|
|
@ -1294,34 +1299,40 @@ litest_create(enum litest_device_type which,
|
|||
if (abs_override || events_override) {
|
||||
litest_abort_msg("Custom create cannot be overridden");
|
||||
}
|
||||
} else {
|
||||
abs = merge_absinfo((*dev)->absinfo, abs_override);
|
||||
events = merge_events((*dev)->events, events_override);
|
||||
name = name_override ? name_override : (*dev)->name;
|
||||
id = id_override ? id_override : (*dev)->id;
|
||||
|
||||
return d;
|
||||
}
|
||||
d->uinput = litest_create_uinput_device_from_description(name,
|
||||
id,
|
||||
abs,
|
||||
events);
|
||||
d->interface = (*dev)->interface;
|
||||
|
||||
abs = merge_absinfo((*dev)->absinfo, abs_override);
|
||||
events = merge_events((*dev)->events, events_override);
|
||||
name = name_override ? name_override : (*dev)->name;
|
||||
id = id_override ? id_override : (*dev)->id;
|
||||
for (e = events; *e != -1; e += 2) {
|
||||
unsigned int type = *e,
|
||||
code = *(e + 1);
|
||||
|
||||
d->uinput = litest_create_uinput_device_from_description(name,
|
||||
id,
|
||||
abs,
|
||||
events);
|
||||
d->interface = (*dev)->interface;
|
||||
|
||||
for (e = events; *e != -1; e += 2) {
|
||||
unsigned int type = *e,
|
||||
code = *(e + 1);
|
||||
|
||||
if (type == INPUT_PROP_MAX &&
|
||||
code == INPUT_PROP_SEMI_MT) {
|
||||
d->semi_mt.is_semi_mt = true;
|
||||
break;
|
||||
if (type == INPUT_PROP_MAX &&
|
||||
code == INPUT_PROP_SEMI_MT) {
|
||||
d->semi_mt.is_semi_mt = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
free(abs);
|
||||
free(events);
|
||||
}
|
||||
|
||||
free(abs);
|
||||
free(events);
|
||||
path = libevdev_uinput_get_devnode(d->uinput);
|
||||
litest_assert(path != NULL);
|
||||
fd = open(path, O_RDWR|O_NONBLOCK);
|
||||
litest_assert_int_ne(fd, -1);
|
||||
|
||||
rc = libevdev_new_from_fd(fd, &d->evdev);
|
||||
litest_assert_int_eq(rc, 0);
|
||||
|
||||
return d;
|
||||
|
||||
|
|
@ -1384,8 +1395,6 @@ litest_add_device_with_overrides(struct libinput *libinput,
|
|||
const int *events_override)
|
||||
{
|
||||
struct litest_device *d;
|
||||
int fd;
|
||||
int rc;
|
||||
const char *path;
|
||||
|
||||
d = litest_create(which,
|
||||
|
|
@ -1396,11 +1405,6 @@ litest_add_device_with_overrides(struct libinput *libinput,
|
|||
|
||||
path = libevdev_uinput_get_devnode(d->uinput);
|
||||
litest_assert(path != NULL);
|
||||
fd = open(path, O_RDWR|O_NONBLOCK);
|
||||
litest_assert_int_ne(fd, -1);
|
||||
|
||||
rc = libevdev_new_from_fd(fd, &d->evdev);
|
||||
litest_assert_int_eq(rc, 0);
|
||||
|
||||
d->libinput = libinput;
|
||||
d->libinput_device = libinput_path_add_device(d->libinput, path);
|
||||
|
|
@ -1460,8 +1464,10 @@ litest_delete_device(struct litest_device *d)
|
|||
|
||||
litest_assert_int_eq(d->skip_ev_syn, 0);
|
||||
|
||||
libinput_device_unref(d->libinput_device);
|
||||
libinput_path_remove_device(d->libinput_device);
|
||||
if (d->libinput_device) {
|
||||
libinput_device_unref(d->libinput_device);
|
||||
libinput_path_remove_device(d->libinput_device);
|
||||
}
|
||||
if (d->owns_context)
|
||||
libinput_unref(d->libinput);
|
||||
close(libevdev_get_fd(d->evdev));
|
||||
|
|
|
|||
|
|
@ -406,6 +406,13 @@ litest_create_uinput_device_from_description(const char *name,
|
|||
const struct input_absinfo *abs,
|
||||
const int *events);
|
||||
struct litest_device *
|
||||
litest_create(enum litest_device_type which,
|
||||
const char *name_override,
|
||||
struct input_id *id_override,
|
||||
const struct input_absinfo *abs_override,
|
||||
const int *events_override);
|
||||
|
||||
struct litest_device *
|
||||
litest_create_device_with_overrides(enum litest_device_type which,
|
||||
const char *name_override,
|
||||
struct input_id *id_override,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue