]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
tests: Improve messages when fd leaks are diagnosed
authorSimon McVittie <smcv@collabora.com>
Sat, 29 Jun 2019 15:15:55 +0000 (16:15 +0100)
committerSimon McVittie <smcv@collabora.com>
Tue, 2 Jul 2019 19:44:33 +0000 (20:44 +0100)
Signed-off-by: Simon McVittie <smcv@collabora.com>
dbus/dbus-internals.h
test/internals/dbus-message-util.c
test/test-utils.c
test/test-utils.h

index 647da6f72ec1e580cf46bcbaa6b2226c0f89412e..294aef47d18eff6bc795fe4efa842b176678628c 100644 (file)
@@ -453,6 +453,9 @@ dbus_bool_t _dbus_get_local_machine_uuid_encoded (DBusString *uuid_str,
   typedef struct { char _assertion[(expr) ? 1 : -1]; } \
   _DBUS_PASTE (_DBUS_STATIC_ASSERT_, __LINE__) _DBUS_GNUC_UNUSED
 
+#define _DBUS_STRINGIFY(x) #x
+#define _DBUS_FILE_LINE __FILE__ ":" _DBUS_STRINGIFY(__LINE__)
+
 DBUS_END_DECLS
 
 #endif /* DBUS_INTERNALS_H */
index 3ec62e38f8ed327f928d9abcb8148668f807abcf..df2ab8cfed50942219d2e9be234f2931576bfd7d 100644 (file)
@@ -884,7 +884,8 @@ verify_test_message (DBusMessage *message)
 }
 
 static void
-verify_test_message_args_ignored (DBusMessage *message)
+verify_test_message_args_ignored (DBusMessage *message,
+                                  const char  *context)
 {
   DBusMessageIter iter;
   DBusError error = DBUS_ERROR_INIT;
@@ -922,11 +923,12 @@ verify_test_message_args_ignored (DBusMessage *message)
       _dbus_verbose ("arguments ignored.\n");
     }
 
-  _dbus_check_fdleaks_leave (initial_fds);
+  _dbus_check_fdleaks_leave (initial_fds, context);
 }
 
 static void
-verify_test_message_memleak (DBusMessage *message)
+verify_test_message_memleak (DBusMessage *message,
+                             const char  *context)
 {
   DBusMessageIter iter;
   DBusError error = DBUS_ERROR_INIT;
@@ -1036,7 +1038,7 @@ verify_test_message_memleak (DBusMessage *message)
       _dbus_close (our_unix_fd2, &error);
 #endif
     }
-  _dbus_check_fdleaks_leave (initial_fds);
+  _dbus_check_fdleaks_leave (initial_fds, context);
 }
 
 /**
@@ -1501,7 +1503,7 @@ _dbus_message_test (const char *test_data_dir _DBUS_GNUC_UNUSED)
   _dbus_message_loader_unref (loader);
 
   check_memleaks ();
-  _dbus_check_fdleaks_leave (initial_fds);
+  _dbus_check_fdleaks_leave (initial_fds, _DBUS_FILE_LINE);
   initial_fds = _dbus_check_fdleaks_enter ();
 
   /* Test enumeration of array elements */
@@ -1623,8 +1625,8 @@ _dbus_message_test (const char *test_data_dir _DBUS_GNUC_UNUSED)
 
   _dbus_assert (i < (int) _DBUS_N_ELEMENTS (sig));
 
-  verify_test_message_args_ignored (message);
-  verify_test_message_memleak (message);
+  verify_test_message_args_ignored (message, _DBUS_FILE_LINE);
+  verify_test_message_memleak (message, _DBUS_FILE_LINE);
 
   dbus_message_unref (message);
 
@@ -1660,7 +1662,7 @@ _dbus_message_test (const char *test_data_dir _DBUS_GNUC_UNUSED)
   }
 
   check_memleaks ();
-  _dbus_check_fdleaks_leave (initial_fds);
+  _dbus_check_fdleaks_leave (initial_fds, _DBUS_FILE_LINE);
 
   /* Now load every message in test_data_dir if we have one */
   if (test_data_dir == NULL)
@@ -1671,7 +1673,7 @@ _dbus_message_test (const char *test_data_dir _DBUS_GNUC_UNUSED)
   if (!foreach_message_file (test_data_dir, try_message_file, NULL))
     _dbus_test_fatal ("foreach_message_file test failed");
 
-  _dbus_check_fdleaks_leave (initial_fds);
+  _dbus_check_fdleaks_leave (initial_fds, _DBUS_FILE_LINE);
 
   return TRUE;
 }
index 1838c0a73e00e19ddaa1f257e2acd598619944c8..28c9bc048a09a662c61dfe7ffed59f1b7cfc95e7 100644 (file)
@@ -597,7 +597,8 @@ _dbus_check_fdleaks_enter (void)
 }
 
 void
-_dbus_check_fdleaks_leave (DBusInitialFDs *fds)
+_dbus_check_fdleaks_leave (DBusInitialFDs *fds,
+                           const char     *context)
 {
 #ifdef __linux__
   DIR *d;
@@ -639,7 +640,7 @@ _dbus_check_fdleaks_leave (DBusInitialFDs *fds)
           if (FD_ISSET (fd, &fds->set))
             continue;
 
-          _dbus_test_fatal ("file descriptor %i leaked in %s.", fd, __FILE__);
+          _dbus_test_fatal ("file descriptor %i leaked in %s.", fd, context);
         }
 
       closedir (d);
@@ -775,7 +776,7 @@ _dbus_test_main (int                  argc,
         _dbus_test_check_memleaks (tests[i].name);
 
       if (flags & DBUS_TEST_FLAGS_CHECK_FD_LEAKS)
-        _dbus_check_fdleaks_leave (initial_fds);
+        _dbus_check_fdleaks_leave (initial_fds, tests[i].name);
     }
 
   free (test_data_dir);
index 579fd42527569947f6350bd2ece608f48e2cd1ca..eb0d9e24c92fc38d690984372afad1c1c5e6374e 100644 (file)
@@ -99,6 +99,7 @@ dbus_bool_t _dbus_test_append_different_username (DBusString *username);
 
 typedef struct DBusInitialFDs DBusInitialFDs;
 DBusInitialFDs *_dbus_check_fdleaks_enter (void);
-void            _dbus_check_fdleaks_leave (DBusInitialFDs *fds);
+void            _dbus_check_fdleaks_leave (DBusInitialFDs *fds,
+                                           const char     *context);
 
 #endif