summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@collabora.com>2019-06-29 16:15:55 +0100
committerSimon McVittie <smcv@collabora.com>2019-07-02 20:44:33 +0100
commite4e904a86b15c6a5ba5648251e316e859f0a748e (patch)
tree83bc3f261d7cac2769e5fb1f4b5f900401992f44
parent491a2da305dd3847fde6d0d26746addf7b3858f1 (diff)
downloaddbus-e4e904a86b15c6a5ba5648251e316e859f0a748e.tar.gz
tests: Improve messages when fd leaks are diagnosed
Signed-off-by: Simon McVittie <smcv@collabora.com>
-rw-r--r--dbus/dbus-internals.h3
-rw-r--r--test/internals/dbus-message-util.c20
-rw-r--r--test/test-utils.c7
-rw-r--r--test/test-utils.h3
4 files changed, 20 insertions, 13 deletions
diff --git a/dbus/dbus-internals.h b/dbus/dbus-internals.h
index 647da6f7..294aef47 100644
--- a/dbus/dbus-internals.h
+++ b/dbus/dbus-internals.h
@@ -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 */
diff --git a/test/internals/dbus-message-util.c b/test/internals/dbus-message-util.c
index 3ec62e38..df2ab8cf 100644
--- a/test/internals/dbus-message-util.c
+++ b/test/internals/dbus-message-util.c
@@ -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;
}
diff --git a/test/test-utils.c b/test/test-utils.c
index 1838c0a7..28c9bc04 100644
--- a/test/test-utils.c
+++ b/test/test-utils.c
@@ -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);
diff --git a/test/test-utils.h b/test/test-utils.h
index 579fd425..eb0d9e24 100644
--- a/test/test-utils.h
+++ b/test/test-utils.h
@@ -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