]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: rewrite test-sd-device-thread.c to depend only on libsystemd
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 31 Dec 2020 20:22:23 +0000 (05:22 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 18 Jan 2021 22:04:19 +0000 (07:04 +0900)
Similarly, this makes test-udev-device-thread.c depend only on libudev.

src/libsystemd/sd-device/test-sd-device-thread.c
src/libudev/test-udev-device-thread.c
src/test/meson.build

index 6f3015515b5fffb3d45c07ef570fdbc34f6432aa..763e98c114d837b1d356475e5afb6d4e0c336def 100644 (file)
@@ -1,19 +1,25 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include <errno.h>
 #include <pthread.h>
-#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 
 #include "sd-device.h"
 
 #include "device-util.h"
-#include "macro.h"
+
+#define handle_error_errno(error, msg)                          \
+        ({                                                      \
+                errno = abs(error);                             \
+                perror(msg);                                    \
+                EXIT_FAILURE;                                   \
+        })
 
 static void* thread(void *p) {
         sd_device **d = p;
 
-        assert_se(!(*d = sd_device_unref(*d)));
+        *d = sd_device_unref(*d);
 
         return NULL;
 }
@@ -22,18 +28,27 @@ int main(int argc, char *argv[]) {
         sd_device *loopback;
         pthread_t t;
         const char *key, *value;
+        int r;
 
-        assert_se(unsetenv("SYSTEMD_MEMPOOL") == 0);
+        unsetenv("SYSTEMD_MEMPOOL");
 
-        assert_se(sd_device_new_from_syspath(&loopback, "/sys/class/net/lo") >= 0);
+        r = sd_device_new_from_syspath(&loopback, "/sys/class/net/lo");
+        if (r < 0)
+                return handle_error_errno(r, "Failed to create loopback device object");
 
         FOREACH_DEVICE_PROPERTY(loopback, key, value)
                 printf("%s=%s\n", key, value);
 
-        assert_se(pthread_create(&t, NULL, thread, &loopback) == 0);
-        assert_se(pthread_join(t, NULL) == 0);
+        r = pthread_create(&t, NULL, thread, &loopback);
+        if (r != 0)
+                return handle_error_errno(r, "Failed to create thread");
+
+        r = pthread_join(t, NULL);
+        if (r != 0)
+                return handle_error_errno(r, "Failed to wait thread finished");
 
-        assert_se(!loopback);
+        if (loopback)
+                return handle_error_errno(r, "loopback device is not unref()ed");
 
         return 0;
 }
index a493152d4a6ddb8e56f61db77e1f3bba4003b674..3f0341a698a41d690c41150f3c30555b1d5db3c9 100644 (file)
@@ -1,36 +1,53 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include <errno.h>
 #include <pthread.h>
-#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 
 #include "libudev.h"
 
-#include "macro.h"
+#define handle_error_errno(error, msg)                          \
+        ({                                                      \
+                errno = abs(error);                             \
+                perror(msg);                                    \
+                EXIT_FAILURE;                                   \
+        })
 
 static void* thread(void *p) {
         struct udev_device **d = p;
 
-        assert_se(!(*d = udev_device_unref(*d)));
+        *d = udev_device_unref(*d);
 
         return NULL;
 }
 
 int main(int argc, char *argv[]) {
         struct udev_device *loopback;
+        struct udev_list_entry *entry, *e;
         pthread_t t;
+        int r;
 
-        assert_se(unsetenv("SYSTEMD_MEMPOOL") == 0);
+        unsetenv("SYSTEMD_MEMPOOL");
 
-        assert_se(loopback = udev_device_new_from_syspath(NULL, "/sys/class/net/lo"));
+        loopback = udev_device_new_from_syspath(NULL, "/sys/class/net/lo");
+        if (!loopback)
+                return handle_error_errno(errno, "Failed to create loopback device object");
 
-        assert_se(udev_device_get_properties_list_entry(loopback));
+        entry = udev_device_get_properties_list_entry(loopback);
+        udev_list_entry_foreach(e, entry)
+                printf("%s=%s\n", udev_list_entry_get_name(e), udev_list_entry_get_value(e));
 
-        assert_se(pthread_create(&t, NULL, thread, &loopback) == 0);
-        assert_se(pthread_join(t, NULL) == 0);
+        r = pthread_create(&t, NULL, thread, &loopback);
+        if (r != 0)
+                return handle_error_errno(r, "Failed to create thread");
 
-        assert_se(!loopback);
+        r = pthread_join(t, NULL);
+        if (r != 0)
+                return handle_error_errno(r, "Failed to wait thread finished");
+
+        if (loopback)
+                return handle_error_errno(r, "loopback device is not unref()ed");
 
         return 0;
 }
index 5db699db811a836d8d429e41080c2b4223cab18a..5d185eb77f32c05e2db42e5a0f613a3f60bab088 100644 (file)
@@ -1042,15 +1042,11 @@ tests += [
          []],
 
         [['src/libsystemd/sd-device/test-sd-device-thread.c'],
-         [libbasic,
-          libshared_static,
-          libsystemd],
+         [libsystemd],
          [threads]],
 
         [['src/libudev/test-udev-device-thread.c'],
-         [libbasic,
-          libshared_static,
-          libudev],
+         [libudev],
          [threads]],
 
         [['src/libsystemd/sd-device/test-sd-device-monitor.c'],