Merge branch 'wip/pwithnall/error-tests-nonliteral' into 'master'
tests: Ignore -Wformat-nonliteral warning in new GError tests
See merge request GNOME/glib!1863
diff --git a/glib/tests/error.c b/glib/tests/error.c
index f0001a4..4f4c6b3 100644
--- a/glib/tests/error.c
+++ b/glib/tests/error.c
@@ -100,6 +100,12 @@
test_new_valist_invalid_va (gpointer dummy,
...)
{
+#ifdef __linux__
+ /* Only worth testing this on Linux; if other platforms regress on this legacy
+ * behaviour, we don’t care. In particular, calling g_error_new_valist() with
+ * a %NULL format will crash on FreeBSD as its implementation of vasprintf()
+ * is less forgiving than Linux’s. That’s fine: it’s a programmer error in
+ * either case. */
const struct
{
GQuark domain;
@@ -119,8 +125,13 @@
GError *error = NULL, *error_copy = NULL;
va_list ap;
+ g_test_message ("Test %" G_GSIZE_FORMAT, i);
+
va_start (ap, dummy);
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-nonliteral"
+
g_test_expect_message (G_LOG_DOMAIN,
G_LOG_LEVEL_WARNING,
"*g_error_new_valist: runtime check failed*");
@@ -128,6 +139,8 @@
g_test_assert_expected_messages ();
g_assert_nonnull (error);
+#pragma GCC diagnostic pop
+
g_test_expect_message (G_LOG_DOMAIN,
G_LOG_LEVEL_WARNING,
"*g_error_copy: runtime check failed*");
@@ -140,6 +153,9 @@
va_end (ap);
}
+#else /* if !__linux__ */
+ g_test_skip ("g_error_new_valist() programmer error handling is only relevant on Linux");
+#endif /* !__linux__ */
}
static void