test: filter out duplicate name/device combos in --list
authorPeter Hutterer <peter.hutterer@who-t.net>
Sun, 13 Oct 2024 23:24:26 +0000 (09:24 +1000)
committerMarge Bot <emma+marge@anholt.net>
Wed, 30 Oct 2024 23:20:42 +0000 (23:20 +0000)
This doesn't have an effect yet because ranged tests are handled inside
check. But in the future these tests will be split up individually so
de-duplicating is useful here.

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1067>

test/litest.c

index cf13ef704b6fd02cf733bd9c7d61c6ae1f30a7c6..1706c2fb1cce9bc42d28c853b430d3b853208b1c 100644 (file)
@@ -4808,7 +4808,8 @@ static void
 litest_list_tests(struct list *tests)
 {
        struct suite *s;
-       const char *last_test_name = NULL;
+       const char *last_test_name = "<invalid>";
+       const char *last_dev_name = "<invalid>";
 
        printf("groups:\n");
        list_for_each(s, tests, node) {
@@ -4816,15 +4817,19 @@ litest_list_tests(struct list *tests)
                printf("  - group: \"%s\"\n", s->name);
                printf("    tests:\n");
                list_for_each(t, &s->tests, node) {
-                       if (!last_test_name ||
-                           !streq(last_test_name, t->name)) {
+                       bool same_test = streq(last_test_name, t->name);
+                       bool same_dev = streq(last_dev_name, t->devname);
+
+                       if (!same_test) {
                                printf("      - name: \"%s\"\n", t->name);
                                printf("        devices:\n");
                        }
 
-                       last_test_name = t->name;
-
-                       printf("          - name: \"%s\"\n", t->devname);
+                       if (!same_test || !same_dev) {
+                               last_test_name = t->name;
+                               last_dev_name = t->devname;
+                               printf("          - name: \"%s\"\n", t->devname);
+                       }
                }
        }
 }