summaryrefslogtreecommitdiff
path: root/glib
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-12-14 18:08:59 +0000
committerMatthias Clasen <mclasen@redhat.com>2011-12-27 17:51:09 -0500
commitfa4792c35e42107e0ded0f499bb86415a2b1faef (patch)
tree09048661bc281ad1a9f357284759aece5c0eaa89 /glib
parent5cb29d7909afdb41054ca47892aea4e0a79f2d7a (diff)
downloadglib-fa4792c35e42107e0ded0f499bb86415a2b1faef.tar.gz
various tests: do not provoke SIGTRAP with -m no-undefined
Some of the GLib tests deliberately provoke warnings (or even fatal errors) in a forked child. Normally, this is fine, but under valgrind it's somewhat undesirable. We do want to follow fork(), so we can check for leaks in child processes that exit gracefully; but we don't want to be told about "leaks" in processes that are crashing, because there'd be no point in cleaning those up anyway. https://bugzilla.gnome.org/show_bug.cgi?id=666116
Diffstat (limited to 'glib')
-rw-r--r--glib/tests/error.c3
-rw-r--r--glib/tests/gvariant.c32
-rw-r--r--glib/tests/logging.c54
-rw-r--r--glib/tests/markup-collect.c3
-rw-r--r--glib/tests/mem-overflow.c13
-rw-r--r--glib/tests/option-context.c6
-rw-r--r--glib/tests/slice.c3
-rw-r--r--glib/tests/strfuncs.c146
-rw-r--r--glib/tests/testing.c32
9 files changed, 189 insertions, 103 deletions
diff --git a/glib/tests/error.c b/glib/tests/error.c
index f483092ba..66ec6e0fe 100644
--- a/glib/tests/error.c
+++ b/glib/tests/error.c
@@ -3,6 +3,9 @@
static void
test_overwrite (void)
{
+ if (!g_test_undefined ())
+ return;
+
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
{
GError *error;
diff --git a/glib/tests/gvariant.c b/glib/tests/gvariant.c
index 18fe2fe1c..c328aa806 100644
--- a/glib/tests/gvariant.c
+++ b/glib/tests/gvariant.c
@@ -2831,6 +2831,9 @@ do_failed_test (const gchar *pattern)
static void
test_invalid_varargs (void)
{
+ if (!g_test_undefined ())
+ return;
+
if (do_failed_test ("*GVariant format string*"))
{
g_variant_new ("z");
@@ -3871,22 +3874,25 @@ test_parse_positional (void)
check_and_free (value, "[('one', 1), ('two', 2), ('three', 3)]");
check_and_free (g_variant_new_parsed ("{%s:%i}", "one", 1), "{'one': 1}");
- if (do_failed_test ("*GVariant format string*"))
+ if (g_test_undefined ())
{
- g_variant_new_parsed ("%z");
- abort ();
- }
+ if (do_failed_test ("*GVariant format string*"))
+ {
+ g_variant_new_parsed ("%z");
+ abort ();
+ }
- if (do_failed_test ("*can not parse as*"))
- {
- g_variant_new_parsed ("uint32 %i", 2);
- abort ();
- }
+ if (do_failed_test ("*can not parse as*"))
+ {
+ g_variant_new_parsed ("uint32 %i", 2);
+ abort ();
+ }
- if (do_failed_test ("*expected GVariant of type `i'*"))
- {
- g_variant_new_parsed ("%@i", g_variant_new_uint32 (2));
- abort ();
+ if (do_failed_test ("*expected GVariant of type `i'*"))
+ {
+ g_variant_new_parsed ("%@i", g_variant_new_uint32 (2));
+ abort ();
+ }
}
}
diff --git a/glib/tests/logging.c b/glib/tests/logging.c
index 9d69e6a04..aece49048 100644
--- a/glib/tests/logging.c
+++ b/glib/tests/logging.c
@@ -5,6 +5,9 @@
static void
test_warnings (void)
{
+ if (!g_test_undefined ())
+ return;
+
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
{
g_warn_if_reached ();
@@ -62,29 +65,32 @@ test_set_handler (void)
static void
test_default_handler (void)
{
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- g_error ("message1");
- exit (0);
- }
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*ERROR*message1*");
-
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- g_critical ("message2");
- exit (0);
- }
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*CRITICAL*message2*");
-
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- g_warning ("message3");
- exit (0);
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_error ("message1");
+ exit (0);
+ }
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*ERROR*message1*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_critical ("message2");
+ exit (0);
+ }
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*CRITICAL*message2*");
+
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_warning ("message3");
+ exit (0);
+ }
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*WARNING*message3*");
}
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*WARNING*message3*");
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
{
@@ -146,6 +152,9 @@ test_fatal_log_mask (void)
{
GLogLevelFlags flags;
+ if (!g_test_undefined ())
+ return;
+
flags = g_log_set_fatal_mask ("bu", G_LOG_LEVEL_INFO);
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT))
g_log ("bu", G_LOG_LEVEL_INFO, "fatal");
@@ -233,6 +242,9 @@ test_handler (const gchar *log_domain,
static void
bug653052 (void)
{
+ if (!g_test_undefined ())
+ return;
+
g_test_bug ("653052");
g_test_log_set_fatal_handler (good_failure_handler, fail_str);
diff --git a/glib/tests/markup-collect.c b/glib/tests/markup-collect.c
index 74ce2bf4b..3b2e2bd79 100644
--- a/glib/tests/markup-collect.c
+++ b/glib/tests/markup-collect.c
@@ -197,6 +197,9 @@ static GMarkupParser cleanup_parser = {
static void
test_cleanup (void)
{
+ if (!g_test_undefined ())
+ return;
+
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
{
GMarkupParseContext *context;
diff --git a/glib/tests/mem-overflow.c b/glib/tests/mem-overflow.c
index 0d483fb19..c7ea2186f 100644
--- a/glib/tests/mem-overflow.c
+++ b/glib/tests/mem-overflow.c
@@ -73,7 +73,18 @@ mem_overflow (void)
#undef CHECK_FAIL
#undef CHECK_PASS
-#define CHECK_FAIL(P) if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) { p = (P); exit (0); } g_test_trap_assert_failed();
+#define CHECK_FAIL(P) do { \
+ if (g_test_undefined ()) \
+ { \
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) \
+ { \
+ p = (P); \
+ exit (0); \
+ } \
+ \
+ g_test_trap_assert_failed(); \
+ } \
+ } while (0)
#define CHECK_PASS(P) do { \
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) \
diff --git a/glib/tests/option-context.c b/glib/tests/option-context.c
index 20b1ee327..ba8fcf159 100644
--- a/glib/tests/option-context.c
+++ b/glib/tests/option-context.c
@@ -2077,6 +2077,9 @@ test_error_hook (void)
static void
flag_reverse_string (void)
{
+ if (!g_test_undefined ())
+ return;
+
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
{
GOptionContext *context;
@@ -2108,6 +2111,9 @@ flag_reverse_string (void)
static void
flag_optional_int (void)
{
+ if (!g_test_undefined ())
+ return;
+
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
{
GOptionContext *context;
diff --git a/glib/tests/slice.c b/glib/tests/slice.c
index 9f4670cd2..7976e5111 100644
--- a/glib/tests/slice.c
+++ b/glib/tests/slice.c
@@ -3,6 +3,9 @@
static void
test_slice_config (void)
{
+ if (!g_test_undefined ())
+ return;
+
if (g_test_trap_fork (1000000, G_TEST_TRAP_SILENCE_STDERR))
g_slice_set_config (G_SLICE_CONFIG_ALWAYS_MALLOC, TRUE);
diff --git a/glib/tests/strfuncs.c b/glib/tests/strfuncs.c
index d5e4f4c75..338773457 100644
--- a/glib/tests/strfuncs.c
+++ b/glib/tests/strfuncs.c
@@ -327,19 +327,22 @@ test_strcanon (void)
{
gchar *str;
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- str = g_strcanon (NULL, "ab", 'y');
- }
- g_test_trap_assert_failed ();
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ str = g_strcanon (NULL, "ab", 'y');
+ }
+ g_test_trap_assert_failed ();
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- str = g_strdup ("abxabxab");
- str = g_strcanon (str, NULL, 'y');
- g_free (str);
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ str = g_strdup ("abxabxab");
+ str = g_strcanon (str, NULL, 'y');
+ g_free (str);
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
str = g_strdup ("abxabxab");
str = g_strcanon (str, "ab", 'y');
@@ -355,18 +358,21 @@ test_strcompress_strescape (void)
gchar *tmp;
/* test compress */
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- str = g_strcompress (NULL);
- }
- g_test_trap_assert_failed ();
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ str = g_strcompress (NULL);
+ }
+ g_test_trap_assert_failed ();
- /* trailing slashes are not allowed */
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- str = g_strcompress ("abc\\");
+ /* trailing slashes are not allowed */
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ str = g_strcompress ("abc\\");
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
str = g_strcompress ("abc\\\\\\\"\\b\\f\\n\\r\\t\\003\\177\\234\\313\\12345z");
g_assert (str != NULL);
@@ -374,11 +380,14 @@ test_strcompress_strescape (void)
g_free (str);
/* test escape */
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- str = g_strescape (NULL, NULL);
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ str = g_strescape (NULL, NULL);
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
str = g_strescape ("abc\\\"\b\f\n\r\t\003\177\234\313", NULL);
g_assert (str != NULL);
@@ -405,17 +414,20 @@ test_ascii_strcasecmp (void)
{
gboolean res;
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- res = g_ascii_strcasecmp ("foo", NULL);
- }
- g_test_trap_assert_failed ();
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ res = g_ascii_strcasecmp ("foo", NULL);
+ }
+ g_test_trap_assert_failed ();
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- res = g_ascii_strcasecmp (NULL, "foo");
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ res = g_ascii_strcasecmp (NULL, "foo");
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
res = g_ascii_strcasecmp ("FroboZZ", "frobozz");
g_assert_cmpint (res, ==, 0);
@@ -478,11 +490,14 @@ do_test_strchug (const gchar *str, const gchar *expected)
static void
test_strchug (void)
{
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- g_strchug (NULL);
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_strchug (NULL);
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
do_test_strchug ("", "");
do_test_strchug (" ", "");
@@ -511,11 +526,14 @@ do_test_strchomp (const gchar *str, const gchar *expected)
static void
test_strchomp (void)
{
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- g_strchomp (NULL);
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_strchomp (NULL);
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
do_test_strchomp ("", "");
do_test_strchomp (" ", "");
@@ -532,11 +550,14 @@ test_strreverse (void)
gchar *str;
gchar *p;
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- str = g_strreverse (NULL);
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ str = g_strreverse (NULL);
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
str = p = g_strdup ("abcde");
str = g_strreverse (str);
@@ -626,17 +647,20 @@ test_has_prefix (void)
{
gboolean res;
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- res = g_str_has_prefix ("foo", NULL);
- }
- g_test_trap_assert_failed ();
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ res = g_str_has_prefix ("foo", NULL);
+ }
+ g_test_trap_assert_failed ();
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- res = g_str_has_prefix (NULL, "foo");
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ res = g_str_has_prefix (NULL, "foo");
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
res = g_str_has_prefix ("foo", "bar");
g_assert_cmpint (res, ==, FALSE);
@@ -665,17 +689,20 @@ test_has_suffix (void)
{
gboolean res;
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- res = g_str_has_suffix ("foo", NULL);
- }
- g_test_trap_assert_failed ();
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ res = g_str_has_suffix ("foo", NULL);
+ }
+ g_test_trap_assert_failed ();
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- res = g_str_has_suffix (NULL, "foo");
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ res = g_str_has_suffix (NULL, "foo");
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
res = g_str_has_suffix ("foo", "bar");
g_assert_cmpint (res, ==, FALSE);
@@ -844,11 +871,14 @@ test_strv_length (void)
gchar **strv;
guint l;
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- l = g_strv_length (NULL);
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ l = g_strv_length (NULL);
+ }
+ g_test_trap_assert_failed ();
}
- g_test_trap_assert_failed ();
strv = g_strsplit ("1,2,3,4", ",", -1);
l = g_strv_length (strv);
diff --git a/glib/tests/testing.c b/glib/tests/testing.c
index 2b257f258..d6e39baf8 100644
--- a/glib/tests/testing.c
+++ b/glib/tests/testing.c
@@ -46,19 +46,22 @@ test_assertions (void)
g_assert_cmpstr ("fzz", >, "faa");
g_assert_cmpstr ("fzz", ==, "fzz");
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ if (g_test_undefined ())
{
- g_assert_cmpstr ("fzz", !=, "fzz");
- }
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*assertion failed*");
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_assert_cmpstr ("fzz", !=, "fzz");
+ }
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*assertion failed*");
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- g_assert_cmpint (4, !=, 4);
+ if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
+ {
+ g_assert_cmpint (4, !=, 4);
+ }
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*assertion failed*");
}
- g_test_trap_assert_failed ();
- g_test_trap_assert_stderr ("*assertion failed*");
}
/* test g_test_timer* API */
@@ -80,6 +83,9 @@ test_timer (void)
static void
test_fork_fail (void)
{
+ if (!g_test_undefined ())
+ return;
+
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
{
g_assert_not_reached();
@@ -107,6 +113,9 @@ test_fork_patterns (void)
static void
test_fork_timeout (void)
{
+ if (!g_test_undefined ())
+ return;
+
/* allow child to run for only a fraction of a second */
if (g_test_trap_fork (0.11 * 1000000, 0))
{
@@ -217,6 +226,9 @@ fatal_handler (const gchar *log_domain,
static void
test_fatal_log_handler (void)
{
+ if (!g_test_undefined ())
+ return;
+
g_test_log_set_fatal_handler (fatal_handler, NULL);
if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
{