test: auto-generate the udev rules

We only ever set properties in the devices, so let's make that more explicit
and auto-generate the udev rule. This way we're hopefully better protected
from the various typos that hid in those rules over the years, but also be
prepared for passing the udev property key/value pairs elsewhere.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2019-06-10 22:00:40 +10:00
parent bb66232298
commit 9dbcc68621
36 changed files with 180 additions and 360 deletions

View file

@ -633,6 +633,11 @@ strv_free(char **strv) {
free (strv);
}
struct key_value_str{
char *key;
char *value;
};
struct key_value_double {
double key;
double value;

View file

@ -81,16 +81,6 @@ static struct input_absinfo absinfo[] = {
{ .value = -1 }
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"touchpad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"touchpad_end\"\n"
"ENV{ID_INPUT_TOUCHPAD}==\"\", GOTO=\"touchpad_end\"\n"
"\n"
"ATTRS{name}==\"litest Chicony ACER Hawaii Keyboard Touchpad\","
" ENV{ID_INPUT_TOUCHPAD_INTEGRATION}=\"external\"\n"
"\n"
"LABEL=\"touchpad_end\"";
TEST_DEVICE("hawaii-touchpad",
.type = LITEST_ACER_HAWAII_TOUCHPAD,
.features = LITEST_TOUCHPAD | LITEST_CLICKPAD | LITEST_BUTTON,
@ -100,5 +90,8 @@ TEST_DEVICE("hawaii-touchpad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TOUCHPAD_INTEGRATION", "external" },
{ NULL },
}
)

View file

@ -82,24 +82,6 @@ static struct input_absinfo absinfo[] = {
{ .value = -1 }
};
/* Force MOUSE_DPI to the empty string. As of systemd commit f013e99e160f
* ID_BUS=bluetooth now triggers the hwdb entry for this device. This causes
* test case failures because deltas change. Detecting old vs new systemd is
* hard, and because our rules are 99-prefixed we can't set ID_BUS ourselves
* on older systemd.
* So let's go the easy way and unset MOUSE_DPI so we can continue to use
* the current tests.
*/
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"mouse_end\"\n"
"KERNEL!=\"event*\", GOTO=\"mouse_end\"\n"
"ENV{ID_INPUT_MOUSE}==\"\", GOTO=\"mouse_end\"\n"
"\n"
"ATTRS{name}==\"litest Apple Magic Mouse\","
" ENV{MOUSE_DPI}=\"\""
"\n"
"LABEL=\"mouse_end\"";
TEST_DEVICE("magicmouse",
.type = LITEST_MAGICMOUSE,
.features = LITEST_RELATIVE | LITEST_BUTTON | LITEST_WHEEL,
@ -109,5 +91,17 @@ TEST_DEVICE("magicmouse",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
/* Force MOUSE_DPI to the empty string. As of systemd commit f013e99e160f
* ID_BUS=bluetooth now triggers the hwdb entry for this device. This causes
* test case failures because deltas change. Detecting old vs new systemd is
* hard, and because our rules are 99-prefixed we can't set ID_BUS ourselves
* on older systemd.
* So let's go the easy way and unset MOUSE_DPI so we can continue to use
* the current tests.
*/
.udev_properties = {
{ "MOUSE_DPI", "" },
{ NULL },
},
)

View file

@ -70,16 +70,6 @@ static int events[] = {
-1, -1
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"calibrated_touchscreen_end\"\n"
"KERNEL!=\"event*\", GOTO=\"calibrated_touchscreen_end\"\n"
"\n"
"ATTRS{name}==\"litest Calibrated Touchscreen*\",\\\n"
" ENV{LIBINPUT_CALIBRATION_MATRIX}=\"1.2 3.4 5.6 7.8 9.10 11.12\",\\\n"
" ENV{WL_OUTPUT}=\"myOutput\"\n"
"\n"
"LABEL=\"calibrated_touchscreen_end\"";
TEST_DEVICE("calibrated-touchscreen",
.type = LITEST_CALIBRATED_TOUCHSCREEN,
.features = LITEST_TOUCH,
@ -89,5 +79,9 @@ TEST_DEVICE("calibrated-touchscreen",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_CALIBRATION_MATRIX", "1.2 3.4 5.6 7.8 9.10 11.12" },
{ "WL_OUTPUT", "myOutput" },
{ NULL }
},
)

View file

@ -76,15 +76,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"totem_end\"\n"
"KERNEL!=\"event*\", GOTO=\"totem_end\"\n"
"\n"
"ATTRS{name}==\"litest Advanced Silicon S.A. CoolTouch® System*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"dell-canvas-totem-group\"\n"
"\n"
"LABEL=\"totem_end\"";
TEST_DEVICE("dell-canvas-totem-touch",
.type = LITEST_DELL_CANVAS_TOTEM_TOUCH,
.features = LITEST_TOUCH,
@ -94,5 +85,8 @@ TEST_DEVICE("dell-canvas-totem-touch",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "dell-canvas-totem-group" },
{ NULL },
},
)

View file

@ -107,15 +107,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"totem_end\"\n"
"KERNEL!=\"event*\", GOTO=\"totem_end\"\n"
"\n"
"ATTRS{name}==\"litest Advanced Silicon S.A. CoolTouch® System System Multi Axis*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"dell-canvas-totem-group\"\n"
"\n"
"LABEL=\"totem_end\"";
TEST_DEVICE("dell-canvas-totem",
.type = LITEST_DELL_CANVAS_TOTEM,
.features = LITEST_TOTEM | LITEST_TABLET,
@ -125,5 +116,8 @@ TEST_DEVICE("dell-canvas-totem",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "dell-canvas-totem-group" },
{ NULL },
},
)

View file

@ -42,15 +42,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"switch_end\"\n"
"KERNEL!=\"event*\", GOTO=\"switch_end\"\n"
"\n"
"ATTRS{name}==\"litest gpio-keys*\",\\\n"
" ENV{ID_INPUT_SWITCH}=\"1\"\n"
"\n"
"LABEL=\"switch_end\"";
static const char quirk_file[] =
"[litest gpio quirk]\n"
"MatchName=litest gpio-keys\n"
@ -66,6 +57,9 @@ TEST_DEVICE("gpio-keys",
.events = events,
.absinfo = NULL,
.udev_rule = udev_rule,
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ NULL },
}
)

View file

@ -47,15 +47,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"switch_end\"\n"
"KERNEL!=\"event*\", GOTO=\"switch_end\"\n"
"\n"
"ATTRS{name}==\"litest HP WMI hotkeys*\",\\\n"
" ENV{ID_INPUT_SWITCH}=\"1\"\n"
"\n"
"LABEL=\"switch_end\"";
TEST_DEVICE("wmi-hotkeys",
.type = LITEST_HP_WMI_HOTKEYS,
.features = LITEST_SWITCH,
@ -66,5 +57,8 @@ TEST_DEVICE("wmi-hotkeys",
.events = events,
.absinfo = NULL,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ NULL },
}
)

View file

@ -42,16 +42,6 @@ static int events[] = {
-1 , -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"mouse_end\"\n"
"KERNEL!=\"event*\", GOTO=\"mouse_end\"\n"
"ENV{ID_INPUT_MOUSE}==\"\", GOTO=\"mouse_end\"\n"
"\n"
"ATTRS{name}==\"litest Ignored Mouse*\",\\\n"
" ENV{LIBINPUT_IGNORE_DEVICE}=\"1\"\n"
"\n"
"LABEL=\"mouse_end\"";
TEST_DEVICE("ignored-mouse",
.type = LITEST_IGNORED_MOUSE,
.features = LITEST_IGNORED | LITEST_BUTTON | LITEST_RELATIVE,
@ -61,5 +51,8 @@ TEST_DEVICE("ignored-mouse",
.id = &input_id,
.absinfo = NULL,
.events = events,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_IGNORE_DEVICE", "1" },
{ NULL },
},
)

View file

@ -38,15 +38,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"switch_end\"\n"
"KERNEL!=\"event*\", GOTO=\"switch_end\"\n"
"\n"
"ATTRS{name}==\"litest Lid Switch Surface3*\",\\\n"
" ENV{ID_INPUT_SWITCH}=\"1\"\n"
"\n"
"LABEL=\"switch_end\"";
static const char quirk_file[] =
"[litest Surface Lid]\n"
"MatchName=litest Lid Switch Surface3\n"
@ -62,6 +53,9 @@ TEST_DEVICE("lid-switch-surface3",
.events = events,
.absinfo = NULL,
.udev_rule = udev_rule,
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ NULL },
},
)

View file

@ -37,15 +37,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"switch_end\"\n"
"KERNEL!=\"event*\", GOTO=\"switch_end\"\n"
"\n"
"ATTRS{name}==\"litest Lid Switch\",\\\n"
" ENV{ID_INPUT_SWITCH}=\"1\"\n"
"\n"
"LABEL=\"switch_end\"";
static const char quirk_file[] =
"[litest Lid Switch]\n"
"MatchName=litest Lid Switch\n"
@ -61,6 +52,9 @@ TEST_DEVICE("lid-switch",
.events = events,
.absinfo = NULL,
.udev_rule = udev_rule,
.quirk_file = quirk_file,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ NULL },
},
)

View file

@ -105,16 +105,6 @@ static int events[] = {
-1, -1
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"touchpad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"touchpad_end\"\n"
"ENV{ID_INPUT_TOUCHPAD}==\"\", GOTO=\"touchpad_end\"\n"
"\n"
"ATTRS{name}==\"litest Apple Wireless Trackpad\","
" ENV{ID_INPUT_TOUCHPAD_INTEGRATION}=\"external\"\n"
"\n"
"LABEL=\"touchpad_end\"";
TEST_DEVICE("magic-trackpad",
.type = LITEST_MAGIC_TRACKPAD,
.features = LITEST_TOUCHPAD | LITEST_CLICKPAD |
@ -125,5 +115,9 @@ TEST_DEVICE("magic-trackpad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TOUCHPAD_INTEGRATION", "external" },
{ NULL },
},
)

View file

@ -42,15 +42,6 @@ static int events[] = {
-1 , -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"touchpad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"touchpad_end\"\n"
"\n"
"ATTRS{name}==\"litest Low DPI Mouse*\",\\\n"
" ENV{MOUSE_DPI}=\"400@125\"\n"
"\n"
"LABEL=\"touchpad_end\"";
TEST_DEVICE("low-dpi-mouse",
.type = LITEST_MOUSE_LOW_DPI,
.features = LITEST_RELATIVE | LITEST_BUTTON | LITEST_WHEEL,
@ -60,5 +51,8 @@ TEST_DEVICE("low-dpi-mouse",
.id = &input_id,
.absinfo = NULL,
.events = events,
.udev_rule = udev_rule,
.udev_properties = {
{ "MOUSE_DPI", "400@125" },
{ NULL },
},
)

View file

@ -42,16 +42,6 @@ static int events[] = {
-1 , -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"wheel_click_angle_end\"\n"
"KERNEL!=\"event*\", GOTO=\"wheel_click_angle_end\"\n"
"\n"
"ATTRS{name}==\"litest Wheel Click Angle Mouse*\",\\\n"
" ENV{MOUSE_WHEEL_CLICK_ANGLE}=\"-7\",\\\n"
" ENV{MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL}=\"13\"\n"
"\n"
"LABEL=\"wheel_click_angle_end\"";
TEST_DEVICE("mouse-wheelclickangle",
.type = LITEST_MOUSE_WHEEL_CLICK_ANGLE,
.features = LITEST_RELATIVE | LITEST_BUTTON | LITEST_WHEEL,
@ -61,5 +51,10 @@ TEST_DEVICE("mouse-wheelclickangle",
.id = &input_id,
.absinfo = NULL,
.events = events,
.udev_rule = udev_rule,
.udev_properties = {
{ "MOUSE_WHEEL_CLICK_ANGLE", "-7" },
{ "MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL", "13" },
{ NULL },
}
)

View file

@ -42,18 +42,6 @@ static int events[] = {
-1 , -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"wheel_click_count_end\"\n"
"KERNEL!=\"event*\", GOTO=\"wheel_click_count_end\"\n"
"\n"
"ATTRS{name}==\"litest Wheel Click Count Mouse*\",\\\n"
" ENV{MOUSE_WHEEL_CLICK_ANGLE}=\"-15\",\\\n"
" ENV{MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL}=\"13\",\\\n"
" ENV{MOUSE_WHEEL_CLICK_COUNT}=\"-14\",\\\n"
" ENV{MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL}=\"27\"\\\n"
"\n"
"LABEL=\"wheel_click_count_end\"";
TEST_DEVICE("mouse-wheelclickcount",
.type = LITEST_MOUSE_WHEEL_CLICK_COUNT,
.features = LITEST_RELATIVE | LITEST_BUTTON | LITEST_WHEEL,
@ -63,5 +51,11 @@ TEST_DEVICE("mouse-wheelclickcount",
.id = &input_id,
.absinfo = NULL,
.events = events,
.udev_rule = udev_rule,
.udev_properties = {
{ "MOUSE_WHEEL_CLICK_ANGLE", "-15" },
{ "MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL", "13" },
{ "MOUSE_WHEEL_CLICK_COUNT", "-14" },
{ "MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL", "27" },
{ NULL },
}
)

View file

@ -43,16 +43,6 @@ static int events[] = {
-1 , -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"wheel_wheel_tilt_end\"\n"
"KERNEL!=\"event*\", GOTO=\"wheel_wheel_tilt_end\"\n"
"\n"
"ATTRS{name}==\"litest Wheel Tilt Mouse*\",\\\n"
" ENV{MOUSE_WHEEL_TILT_HORIZONTAL}=\"1\",\\\n"
" ENV{MOUSE_WHEEL_TILT_VERTICAL}=\"1\"\n"
"\n"
"LABEL=\"wheel_wheel_tilt_end\"";
TEST_DEVICE("mouse-wheel-tilt",
.type = LITEST_MOUSE_WHEEL_TILT,
.features = LITEST_RELATIVE | LITEST_BUTTON | LITEST_WHEEL,
@ -62,5 +52,9 @@ TEST_DEVICE("mouse-wheel-tilt",
.id = &input_id,
.absinfo = NULL,
.events = events,
.udev_rule = udev_rule,
.udev_properties = {
{ "MOUSE_WHEEL_TILT_HORIZONTAL", "1" },
{ "MOUSE_WHEEL_TILT_VERTICAL", "1" },
{ NULL },
}
)

View file

@ -70,15 +70,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"switch_end\"\n"
"KERNEL!=\"event*\", GOTO=\"switch_end\"\n"
"\n"
"ATTRS{name}==\"litest ThinkPad Extra Buttons*\",\\\n"
" ENV{ID_INPUT_SWITCH}=\"1\"\n"
"\n"
"LABEL=\"switch_end\"";
TEST_DEVICE("thinkpad-extrabuttons",
.type = LITEST_THINKPAD_EXTRABUTTONS,
.features = LITEST_KEYS | LITEST_SWITCH,
@ -88,5 +79,8 @@ TEST_DEVICE("thinkpad-extrabuttons",
.id = &input_id,
.events = events,
.absinfo = NULL,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_SWITCH", "1" },
{ NULL },
},
)

View file

@ -78,17 +78,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"rule_end\"\n"
"KERNEL!=\"event*\", GOTO=\"rule_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Bamboo 2FG 4x5 Finger*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-bamboo-2fg-group\",\\\n"
" ENV{ID_INPUT_TABLET}=\"1\",\\\n"
" ENV{ID_INPUT_TOUCHPAD}=\"1\"\n"
"\n"
"LABEL=\"rule_end\"";
TEST_DEVICE("wacom-bamboo-2fg-finger",
.type = LITEST_WACOM_BAMBOO_2FG_FINGER,
.features = LITEST_TOUCHPAD,
@ -98,5 +87,9 @@ TEST_DEVICE("wacom-bamboo-2fg-finger",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-bamboo-2fg-group" },
{ "ID_INPUT_TABLET", "1" },
{ "ID_INPUT_TOUCHPAD", "1" },
}
)

View file

@ -61,16 +61,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Bamboo 2FG 4x5 Pad*\",\\\n"
" ENV{ID_INPUT_TABLET_PAD}=\"1\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-bamboo-2fg-group\"\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-bamboo-2fg-pad",
.type = LITEST_WACOM_BAMBOO_2FG_PAD,
.features = LITEST_TABLET_PAD,
@ -80,5 +70,9 @@ TEST_DEVICE("wacom-bamboo-2fg-pad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ .key = "ID_INPUT_TABLET_PAD", .value = "1" },
{ .key = "LIBINPUT_DEVICE_GROUP", .value = "1" },
{ NULL }
}
)

View file

@ -101,15 +101,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Bamboo 2FG 4x5 Pen*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-bamboo-2fg-group\"\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-bamboo-2fg-pen",
.type = LITEST_WACOM_BAMBOO_2FG_PEN,
.features = LITEST_TABLET | LITEST_DISTANCE | LITEST_HOVER,
@ -119,5 +110,8 @@ TEST_DEVICE("wacom-bamboo-2fg-pen",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-bamboo-2fg-group" },
{ NULL },
},
)

View file

@ -81,15 +81,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"rule_end\"\n"
"KERNEL!=\"event*\", GOTO=\"rule_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Cintiq 13 HD touch Finger*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-13hdt-group\"\n"
"\n"
"LABEL=\"rule_end\"";
TEST_DEVICE("wacom-cintiq-13hdt-finger",
.type = LITEST_WACOM_CINTIQ_13HDT_FINGER,
.features = LITEST_TOUCH,
@ -99,5 +90,8 @@ TEST_DEVICE("wacom-cintiq-13hdt-finger",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-13hdt-group" },
{ NULL },
},
)

View file

@ -90,16 +90,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Cintiq 13 HD touch Pad*\",\\\n"
" ENV{ID_INPUT_TABLET_PAD}=\"1\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-13hdt-group\"\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-cintiq-13hdt-pad",
.type = LITEST_WACOM_CINTIQ_13HDT_PAD,
.features = LITEST_TABLET_PAD | LITEST_RING,
@ -109,5 +99,9 @@ TEST_DEVICE("wacom-cintiq-13hdt-pad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "LIBINPUT_DEVICE_GROUP", "wacom-13hdt-group" },
{ NULL },
},
)

View file

@ -126,15 +126,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"rule_end\"\n"
"KERNEL!=\"event*\", GOTO=\"rule_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Cintiq 13 HD touch Pen*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-13hdt-group\"\n"
"\n"
"LABEL=\"rule_end\"";
TEST_DEVICE("wacom-cintiq-13hdt-pen-tablet",
.type = LITEST_WACOM_CINTIQ_13HDT_PEN,
.features = LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_SERIAL | LITEST_TILT | LITEST_DIRECT | LITEST_HOVER,
@ -144,5 +135,8 @@ TEST_DEVICE("wacom-cintiq-13hdt-pen-tablet",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-13hdt-group" },
{ NULL },
},
)

View file

@ -113,16 +113,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Cintiq 24 HD touch Pad*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-24hdt-group\",\\\n"
" ENV{ID_INPUT_TABLET_PAD}=\"1\"\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-cintiq-24hdt-pad",
.type = LITEST_WACOM_CINTIQ_24HDT_PAD,
.features = LITEST_TABLET_PAD | LITEST_RING,
@ -133,5 +123,9 @@ TEST_DEVICE("wacom-cintiq-24hdt-pad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "LIBINPUT_DEVICE_GROUP", "wacom-24hdt-group" },
{ NULL },
},
)

View file

@ -80,15 +80,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"rule_end\"\n"
"KERNEL!=\"event*\", GOTO=\"rule_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Cintiq Pro 16 Finger*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-pro16-group\"\n"
"\n"
"LABEL=\"rule_end\"";
TEST_DEVICE("wacom-cintiq-pro16-finger",
.type = LITEST_WACOM_CINTIQ_PRO16_FINGER,
.features = LITEST_TOUCH,
@ -98,5 +89,8 @@ TEST_DEVICE("wacom-cintiq-pro16-finger",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-pro16-group" },
{ NULL },
},
)

View file

@ -60,16 +60,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Cintiq Pro 16 Pad*\",\\\n"
" ENV{ID_INPUT_TABLET_PAD}=\"1\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-pro16-group\"\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-cintiq-pro16-pad",
.type = LITEST_WACOM_CINTIQ_PRO16_PAD,
.features = LITEST_TABLET_PAD,
@ -79,5 +69,9 @@ TEST_DEVICE("wacom-cintiq-pro16-pad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "LIBINPUT_DEVICE_GROUP", "wacom-pro16-group" },
{ NULL },
},
)

View file

@ -133,15 +133,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"rule_end\"\n"
"KERNEL!=\"event*\", GOTO=\"rule_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Cintiq Pro 16 Pen*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-pro16-group\"\n"
"\n"
"LABEL=\"rule_end\"";
TEST_DEVICE("wacom-cintiq-pro16-pen",
.type = LITEST_WACOM_CINTIQ_PRO16_PEN,
.features = LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_SERIAL | LITEST_TILT | LITEST_DIRECT | LITEST_HOVER,
@ -151,5 +142,8 @@ TEST_DEVICE("wacom-cintiq-pro16-pen",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-pro16-group" },
{ NULL },
},
)

View file

@ -100,15 +100,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Express Key Remote Pad*\",\\\n"
" ENV{ID_INPUT_TABLET_PAD}=\"1\"\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-ekr",
.type = LITEST_WACOM_EKR,
.features = LITEST_TABLET_PAD | LITEST_RING,
@ -118,5 +109,8 @@ TEST_DEVICE("wacom-ekr",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ NULL },
},
)

View file

@ -85,15 +85,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Intuos3 4x6 Pad*\",\\\n"
" ENV{ID_INPUT_TABLET_PAD}=\"1\"\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-intuos3-pad",
.type = LITEST_WACOM_INTUOS3_PAD,
.features = LITEST_TABLET_PAD | LITEST_STRIP,
@ -103,5 +94,8 @@ TEST_DEVICE("wacom-intuos3-pad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ NULL },
},
)

View file

@ -103,17 +103,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"rule_end\"\n"
"KERNEL!=\"event*\", GOTO=\"rule_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Intuos5 touch M Finger*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-i5-group\",\\\n"
" ENV{ID_INPUT_TABLET}=\"1\",\\\n"
" ENV{ID_INPUT_TOUCHPAD}=\"1\"\n"
"\n"
"LABEL=\"rule_end\"";
TEST_DEVICE("wacom-intuos5-finger",
.type = LITEST_WACOM_FINGER,
.features = LITEST_TOUCHPAD,
@ -123,5 +112,10 @@ TEST_DEVICE("wacom-intuos5-finger",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TABLET", "1" },
{ "ID_INPUT_TOUCHPAD", "1" },
{ "LIBINPUT_DEVICE_GROUP", "wacom-i5-group" },
{ NULL },
},
)

View file

@ -90,16 +90,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Intuos5 touch M Pad*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-i5-group\",\\\n"
" ENV{ID_INPUT_TABLET_PAD}=\"1\"\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-intuos5-pad",
.type = LITEST_WACOM_INTUOS5_PAD,
.features = LITEST_TABLET_PAD | LITEST_RING,
@ -109,5 +99,9 @@ TEST_DEVICE("wacom-intuos5-pad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TABLET_PAD", "1" },
{ "LIBINPUT_DEVICE_GROUP", "wacom-i5-group" },
{ NULL },
},
)

View file

@ -142,15 +142,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"rule_end\"\n"
"KERNEL!=\"event*\", GOTO=\"rule_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom Intuos5 touch M Pen*\",\\\n"
" ENV{LIBINPUT_DEVICE_GROUP}=\"wacom-i5-group\"\n"
"\n"
"LABEL=\"rule_end\"";
TEST_DEVICE("wacom-intuos5-tablet",
.type = LITEST_WACOM_INTUOS,
.features = LITEST_TABLET | LITEST_DISTANCE | LITEST_TOOL_SERIAL | LITEST_TILT | LITEST_TOOL_MOUSE | LITEST_HOVER,
@ -160,5 +151,8 @@ TEST_DEVICE("wacom-intuos5-tablet",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "LIBINPUT_DEVICE_GROUP", "wacom-i5-group" },
{ NULL },
},
)

View file

@ -96,16 +96,6 @@ static int events[] = {
-1, -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"pad_end\"\n"
"KERNEL!=\"event*\", GOTO=\"pad_end\"\n"
"\n"
"ATTRS{name}==\"litest Wacom MobileStudio Pro 16 Pad*\",\\\n"
" ENV{ID_INPUT_TABLET}=\"1\",\\\n"
" ENV{ID_INPUT_TABLET_PAD}=\"1\"\\\n"
"\n"
"LABEL=\"pad_end\"";
TEST_DEVICE("wacom-mobilestudio-pro16-pad",
.type = LITEST_WACOM_MOBILESTUDIO_PRO_16_PAD,
.features = LITEST_TABLET_PAD | LITEST_RING,
@ -115,5 +105,9 @@ TEST_DEVICE("wacom-mobilestudio-pro16-pad",
.id = &input_id,
.events = events,
.absinfo = absinfo,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_TABLET", "1" },
{ "ID_INPUT_TABLET_PAD", "1" },
{ NULL },
},
)

View file

@ -37,15 +37,6 @@ static int events[] = {
-1 , -1,
};
static const char udev_rule[] =
"ACTION==\"remove\", GOTO=\"wheel_only_end\"\n"
"KERNEL!=\"event*\", GOTO=\"wheel_only_end\"\n"
"\n"
"ATTRS{name}==\"litest wheel only device*\",\\\n"
" ENV{ID_INPUT_KEY}=\"1\"\n"
"\n"
"LABEL=\"wheel_only_end\"";
TEST_DEVICE("wheel-only",
.type = LITEST_WHEEL_ONLY,
.features = LITEST_WHEEL,
@ -55,5 +46,8 @@ TEST_DEVICE("wheel-only",
.id = &input_id,
.absinfo = NULL,
.events = events,
.udev_rule = udev_rule,
.udev_properties = {
{ "ID_INPUT_KEY", "1" },
{ NULL },
},
)

View file

@ -76,6 +76,8 @@ struct litest_test_device {
const char *udev_rule;
const char *quirk_file;
const struct key_value_str udev_properties[];
};
struct litest_device_interface {

View file

@ -1385,9 +1385,10 @@ litest_init_device_udev_rules(struct litest_test_device *dev)
int fd;
FILE *f;
char *path = NULL;
const struct key_value_str *kv;
static int count;
if (!dev->udev_rule)
if (!dev->udev_properties)
return NULL;
rc = xasprintf(&path,
@ -1406,7 +1407,19 @@ litest_init_device_udev_rules(struct litest_test_device *dev)
litest_assert_int_ne(fd, -1);
f = fdopen(fd, "w");
litest_assert_notnull(f);
litest_assert_int_ge(fputs(dev->udev_rule, f), 0);
fprintf(f, "ACTION==\"remove\", GOTO=\"rule%d_end\"\n", count);
fprintf(f, "KERNEL!=\"event*\", GOTO=\"rule%d_end\"\n", count);
fprintf(f, "ATTRS{name}==\"litest %s*\"", dev->name);
kv = dev->udev_properties;
while (kv->key) {
fprintf(f, ", \\\n\tENV{%s}=\"%s\"", kv->key, kv->value);
kv++;
}
fprintf(f, "\n");
fprintf(f, "LABEL=\"rule%d_end\"", count);;
fclose(f);
return path;