[PATCH libinput] test: Use only one test device for some udev and path tests

Jonas Ådahl jadahl at gmail.com
Sun Jul 27 14:28:26 PDT 2014


Some tests in test/path.c and test/udev.c are not dependent on
device behaviour but rather managing of device lifetime etc. Run those
tests only once with only one device, resulting more or less the same
code coverage but shorter run time.

Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
---

> hmm, I think instead of litest_add_once which is pretty much unpredictable
> maybe just add a litest_add_for_device() call where you can pass the enum
> litest_device_type in. That way you get the same benefits as your patch
> here, with the benefit of knowing which device the test runs for on any
> given system.
> 
> so instad of
>     litest_add_once("udev:suspend", udev_double_suspend, LITEST_ANY, LITEST_ANY);
> you have
>     litest_add_for_device("udev:suspend", udev_double_suspend, LITEST_SYNAPTICS_CLICKPAD);
> 

Sure, works for me. Updated version of the patch:


 test/litest.c | 45 +++++++++++++++++++++++++++++++++++----------
 test/litest.h |  4 ++++
 test/path.c   | 13 +++++++------
 test/udev.c   | 15 ++++++++-------
 4 files changed, 54 insertions(+), 23 deletions(-)

diff --git a/test/litest.c b/test/litest.c
index deab0cf..946a0d7 100644
--- a/test/litest.c
+++ b/test/litest.c
@@ -179,11 +179,8 @@ litest_add_no_device(const char *name, void *func)
 	litest_add(name, func, LITEST_DISABLE_DEVICE, LITEST_DISABLE_DEVICE);
 }
 
-void
-litest_add(const char *name,
-	   void *func,
-	   enum litest_device_feature required,
-	   enum litest_device_feature excluded)
+static struct suite *
+get_suite(const char *name)
 {
 	struct suite *s;
 
@@ -191,10 +188,8 @@ litest_add(const char *name,
 		list_init(&all_tests);
 
 	list_for_each(s, &all_tests, node) {
-		if (strcmp(s->name, name) == 0) {
-			litest_add_tcase(s, func, required, excluded);
-			return;
-		}
+		if (strcmp(s->name, name) == 0)
+			return s;
 	}
 
 	s = zalloc(sizeof(*s));
@@ -203,7 +198,37 @@ litest_add(const char *name,
 
 	list_init(&s->tests);
 	list_insert(&all_tests, &s->node);
-	litest_add_tcase(s, func, required, excluded);
+
+	return s;
+}
+
+void
+litest_add(const char *name,
+	   void *func,
+	   enum litest_device_feature required,
+	   enum litest_device_feature excluded)
+{
+	litest_add_tcase(get_suite(name), func, required, excluded);
+}
+
+void
+litest_add_for_device(const char *name,
+		      void *func,
+		      enum litest_device_type type)
+{
+	struct suite *s;
+	struct litest_test_device **dev = devices;
+
+	s = get_suite(name);
+	while (*dev) {
+		if ((*dev)->type == type) {
+			litest_add_tcase_for_device(s, func, *dev);
+			return;
+		}
+		dev++;
+	}
+
+	ck_abort_msg("Invalid test device type");
 }
 
 static int
diff --git a/test/litest.h b/test/litest.h
index 9a9d10a..c0035d3 100644
--- a/test/litest.h
+++ b/test/litest.h
@@ -76,6 +76,10 @@ struct libinput *litest_create_context(void);
 void litest_add(const char *name, void *func,
 		enum litest_device_feature required_feature,
 		enum litest_device_feature excluded_feature);
+void
+litest_add_for_device(const char *name,
+		      void *func,
+		      enum litest_device_type type);
 void litest_add_no_device(const char *name, void *func);
 
 int litest_run(int argc, char **argv);
diff --git a/test/path.c b/test/path.c
index 475e125..f6f6b84 100644
--- a/test/path.c
+++ b/test/path.c
@@ -793,8 +793,9 @@ START_TEST(path_seat_recycle)
 }
 END_TEST
 
-int main (int argc, char **argv) {
-
+int
+main(int argc, char **argv)
+{
 	litest_add_no_device("path:create", path_create_NULL);
 	litest_add_no_device("path:create", path_create_invalid);
 	litest_add_no_device("path:create", path_create_destroy);
@@ -804,13 +805,13 @@ int main (int argc, char **argv) {
 	litest_add_no_device("path:suspend", path_add_device_suspend_resume);
 	litest_add_no_device("path:suspend", path_add_device_suspend_resume_fail);
 	litest_add_no_device("path:suspend", path_add_device_suspend_resume_remove_device);
-	litest_add("path:seat events", path_added_seat, LITEST_ANY, LITEST_ANY);
+	litest_add_for_device("path:seat events", path_added_seat, LITEST_CLICKPAD);
 	litest_add("path:device events", path_added_device, LITEST_ANY, LITEST_ANY);
 	litest_add("path:device events", path_device_sysname, LITEST_ANY, LITEST_ANY);
-	litest_add("path:device events", path_add_device, LITEST_ANY, LITEST_ANY);
+	litest_add_for_device("path:device events", path_add_device, LITEST_CLICKPAD);
 	litest_add_no_device("path:device events", path_add_invalid_path);
-	litest_add("path:device events", path_remove_device, LITEST_ANY, LITEST_ANY);
-	litest_add("path:device events", path_double_remove_device, LITEST_ANY, LITEST_ANY);
+	litest_add_for_device("path:device events", path_remove_device, LITEST_CLICKPAD);
+	litest_add_for_device("path:device events", path_double_remove_device, LITEST_CLICKPAD);
 	litest_add_no_device("path:seat", path_seat_recycle);
 
 	return litest_run(argc, argv);
diff --git a/test/udev.c b/test/udev.c
index 9a59eb5..f5067c9 100644
--- a/test/udev.c
+++ b/test/udev.c
@@ -407,19 +407,20 @@ START_TEST(udev_seat_recycle)
 }
 END_TEST
 
-int main (int argc, char **argv) {
-
+int
+main(int argc, char **argv)
+{
 	litest_add_no_device("udev:create", udev_create_NULL);
 	litest_add_no_device("udev:create", udev_create_seat0);
 	litest_add_no_device("udev:create", udev_create_empty_seat);
 
 	litest_add_no_device("udev:seat events", udev_added_seat_default);
 
-	litest_add("udev:suspend", udev_double_suspend, LITEST_ANY, LITEST_ANY);
-	litest_add("udev:suspend", udev_double_resume, LITEST_ANY, LITEST_ANY);
-	litest_add("udev:suspend", udev_suspend_resume, LITEST_ANY, LITEST_ANY);
-	litest_add("udev:device events", udev_device_sysname, LITEST_ANY, LITEST_ANY);
-	litest_add("udev:seat", udev_seat_recycle, LITEST_ANY, LITEST_ANY);
+	litest_add_for_device("udev:suspend", udev_double_suspend, LITEST_CLICKPAD);
+	litest_add_for_device("udev:suspend", udev_double_resume, LITEST_CLICKPAD);
+	litest_add_for_device("udev:suspend", udev_suspend_resume, LITEST_CLICKPAD);
+	litest_add_for_device("udev:device events", udev_device_sysname, LITEST_CLICKPAD);
+	litest_add_for_device("udev:seat", udev_seat_recycle, LITEST_CLICKPAD);
 
 	return litest_run(argc, argv);
 }
-- 
1.8.5.1



More information about the wayland-devel mailing list