summaryrefslogtreecommitdiff
path: root/glib/tests/logging.c
diff options
context:
space:
mode:
Diffstat (limited to 'glib/tests/logging.c')
-rw-r--r--glib/tests/logging.c178
1 files changed, 152 insertions, 26 deletions
diff --git a/glib/tests/logging.c b/glib/tests/logging.c
index b79362a7d..ea9dcb825 100644
--- a/glib/tests/logging.c
+++ b/glib/tests/logging.c
@@ -3,6 +3,12 @@
#define G_LOG_USE_STRUCTURED 1
#include <glib.h>
+#ifdef G_OS_WIN32
+#define LINE_END "\r\n"
+#else
+#define LINE_END "\n"
+#endif
+
/* Test g_warn macros */
static void
test_warnings (void)
@@ -61,16 +67,45 @@ test_default_handler_error (void)
}
static void
+test_default_handler_error_stderr (void)
+{
+ g_log_writer_default_set_use_stderr (FALSE);
+ g_log_set_default_handler (g_log_default_handler, NULL);
+ g_error ("message1");
+ exit (0);
+}
+
+static void
+test_default_handler_critical_stderr (void)
+{
+ g_log_writer_default_set_use_stderr (TRUE);
+ g_log_set_default_handler (g_log_default_handler, NULL);
+ g_critical ("message2");
+ exit (0);
+}
+
+static void
test_default_handler_critical (void)
{
+ g_log_writer_default_set_use_stderr (FALSE);
g_log_set_default_handler (g_log_default_handler, NULL);
g_critical ("message2");
exit (0);
}
static void
+test_default_handler_warning_stderr (void)
+{
+ g_log_writer_default_set_use_stderr (TRUE);
+ g_log_set_default_handler (g_log_default_handler, NULL);
+ g_warning ("message3");
+ exit (0);
+}
+
+static void
test_default_handler_warning (void)
{
+ g_log_writer_default_set_use_stderr (FALSE);
g_log_set_default_handler (g_log_default_handler, NULL);
g_warning ("message3");
exit (0);
@@ -79,6 +114,16 @@ test_default_handler_warning (void)
static void
test_default_handler_message (void)
{
+ g_log_writer_default_set_use_stderr (FALSE);
+ g_log_set_default_handler (g_log_default_handler, NULL);
+ g_message ("message4");
+ exit (0);
+}
+
+static void
+test_default_handler_message_stderr (void)
+{
+ g_log_writer_default_set_use_stderr (TRUE);
g_log_set_default_handler (g_log_default_handler, NULL);
g_message ("message4");
exit (0);
@@ -87,6 +132,16 @@ test_default_handler_message (void)
static void
test_default_handler_info (void)
{
+ g_log_writer_default_set_use_stderr (FALSE);
+ g_log_set_default_handler (g_log_default_handler, NULL);
+ g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "message5");
+ exit (0);
+}
+
+static void
+test_default_handler_info_stderr (void)
+{
+ g_log_writer_default_set_use_stderr (TRUE);
g_log_set_default_handler (g_log_default_handler, NULL);
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "message5");
exit (0);
@@ -95,6 +150,7 @@ test_default_handler_info (void)
static void
test_default_handler_bar_info (void)
{
+ g_log_writer_default_set_use_stderr (FALSE);
g_log_set_default_handler (g_log_default_handler, NULL);
g_setenv ("G_MESSAGES_DEBUG", "foo bar baz", TRUE);
@@ -106,6 +162,7 @@ test_default_handler_bar_info (void)
static void
test_default_handler_baz_debug (void)
{
+ g_log_writer_default_set_use_stderr (FALSE);
g_log_set_default_handler (g_log_default_handler, NULL);
g_setenv ("G_MESSAGES_DEBUG", "foo bar baz", TRUE);
@@ -117,6 +174,7 @@ test_default_handler_baz_debug (void)
static void
test_default_handler_debug (void)
{
+ g_log_writer_default_set_use_stderr (FALSE);
g_log_set_default_handler (g_log_default_handler, NULL);
g_setenv ("G_MESSAGES_DEBUG", "all", TRUE);
@@ -192,6 +250,7 @@ test_default_handler_would_drop (void)
static void
test_default_handler_0x400 (void)
{
+ g_log_writer_default_set_use_stderr (FALSE);
g_log_set_default_handler (g_log_default_handler, NULL);
g_log (G_LOG_DOMAIN, 1<<10, "message7");
exit (0);
@@ -200,48 +259,84 @@ test_default_handler_0x400 (void)
static void
test_default_handler (void)
{
- g_test_trap_subprocess ("/logging/default-handler/subprocess/error", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/error", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_failed ();
g_test_trap_assert_stderr ("*ERROR*message1*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/critical", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/error-stderr", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*ERROR*message1*");
+
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/critical", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*CRITICAL*message2*");
+
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/critical-stderr", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_failed ();
g_test_trap_assert_stderr ("*CRITICAL*message2*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/warning", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/warning", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_failed ();
+ g_test_trap_assert_stderr ("*WARNING*message3*");
+
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/warning-stderr", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_failed ();
g_test_trap_assert_stderr ("*WARNING*message3*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/message", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/message", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stderr ("*Message*message4*");
+
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/message-stderr", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
g_test_trap_assert_stderr ("*Message*message4*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/info", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/info", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
g_test_trap_assert_stdout_unmatched ("*INFO*message5*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/bar-info", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/info-stderr", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_passed ();
+ g_test_trap_assert_stderr_unmatched ("*INFO*message5*");
+
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/bar-info", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
g_test_trap_assert_stdout ("*INFO*message5*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/baz-debug", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/baz-debug", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
g_test_trap_assert_stdout ("*DEBUG*message6*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/debug", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/debug", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
g_test_trap_assert_stdout ("*DEBUG*6*6*6*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/debug-stderr", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/debug-stderr", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
g_test_trap_assert_stdout_unmatched ("DEBUG");
g_test_trap_assert_stderr ("*DEBUG*6*6*6*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/0x400", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/0x400", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
g_test_trap_assert_stdout ("*LOG-0x400*message7*");
- g_test_trap_subprocess ("/logging/default-handler/subprocess/would-drop", 0, 0);
+ g_test_trap_subprocess ("/logging/default-handler/subprocess/would-drop", 0,
+ G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
@@ -254,7 +349,7 @@ test_fatal_log_mask (void)
g_log ("bu", G_LOG_LEVEL_INFO, "fatal");
return;
}
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_failed ();
/* G_LOG_LEVEL_INFO isn't printed by default */
g_test_trap_assert_stdout_unmatched ("*fatal*");
@@ -273,13 +368,27 @@ test_print_handler (void)
GPrintFunc old_print_handler;
old_print_handler = g_set_print_handler (my_print_handler);
- g_assert (old_print_handler == NULL);
+ g_assert_nonnull (old_print_handler);
my_print_count = 0;
g_print ("bu ba");
g_assert_cmpint (my_print_count, ==, 1);
- g_set_print_handler (NULL);
+ if (g_test_subprocess ())
+ {
+ g_set_print_handler (NULL);
+ old_print_handler ("default handler\n");
+ g_print ("bu ba\n");
+ return;
+ }
+
+ g_set_print_handler (old_print_handler);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_stdout ("*default handler" LINE_END "*");
+ g_test_trap_assert_stdout ("*bu ba" LINE_END "*");
+ g_test_trap_assert_stdout_unmatched ("*# default handler" LINE_END "*");
+ g_test_trap_assert_stdout_unmatched ("*# bu ba" LINE_END "*");
+ g_test_trap_has_passed ();
}
static void
@@ -288,13 +397,25 @@ test_printerr_handler (void)
GPrintFunc old_printerr_handler;
old_printerr_handler = g_set_printerr_handler (my_print_handler);
- g_assert (old_printerr_handler == NULL);
+ g_assert_nonnull (old_printerr_handler);
my_print_count = 0;
g_printerr ("bu ba");
g_assert_cmpint (my_print_count, ==, 1);
- g_set_printerr_handler (NULL);
+ if (g_test_subprocess ())
+ {
+ g_set_printerr_handler (NULL);
+ old_printerr_handler ("default handler\n");
+ g_printerr ("bu ba\n");
+ return;
+ }
+
+ g_set_printerr_handler (old_printerr_handler);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
+ g_test_trap_assert_stderr ("*default handler" LINE_END "*");
+ g_test_trap_assert_stderr ("*bu ba" LINE_END "*");
+ g_test_trap_has_passed ();
}
static char *fail_str = "foo";
@@ -361,7 +482,7 @@ test_gibberish (void)
g_warning ("bla bla \236\237\190");
return;
}
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_failed ();
g_test_trap_assert_stderr ("*bla bla \\x9e\\x9f\\u000190*");
}
@@ -465,7 +586,7 @@ test_structured_logging_no_state (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
}
@@ -494,7 +615,7 @@ test_structured_logging_some_state (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
}
@@ -517,7 +638,7 @@ test_structured_logging_robustness (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
}
@@ -568,7 +689,7 @@ test_structured_logging_roundtrip1 (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
}
@@ -603,7 +724,7 @@ test_structured_logging_roundtrip2 (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
}
@@ -632,7 +753,7 @@ test_structured_logging_roundtrip3 (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
}
@@ -672,7 +793,7 @@ test_structured_logging_variant1 (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
}
@@ -704,7 +825,7 @@ test_structured_logging_variant2 (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_passed ();
}
}
@@ -721,7 +842,7 @@ test_structured_logging_set_writer_func_twice (void)
}
else
{
- g_test_trap_subprocess (NULL, 0, 0);
+ g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_DEFAULT);
g_test_trap_assert_failed ();
}
}
@@ -735,10 +856,15 @@ main (int argc, char *argv[])
g_test_add_func ("/logging/default-handler", test_default_handler);
g_test_add_func ("/logging/default-handler/subprocess/error", test_default_handler_error);
+ g_test_add_func ("/logging/default-handler/subprocess/error-stderr", test_default_handler_error_stderr);
g_test_add_func ("/logging/default-handler/subprocess/critical", test_default_handler_critical);
+ g_test_add_func ("/logging/default-handler/subprocess/critical-stderr", test_default_handler_critical_stderr);
g_test_add_func ("/logging/default-handler/subprocess/warning", test_default_handler_warning);
+ g_test_add_func ("/logging/default-handler/subprocess/warning-stderr", test_default_handler_warning_stderr);
g_test_add_func ("/logging/default-handler/subprocess/message", test_default_handler_message);
+ g_test_add_func ("/logging/default-handler/subprocess/message-stderr", test_default_handler_message_stderr);
g_test_add_func ("/logging/default-handler/subprocess/info", test_default_handler_info);
+ g_test_add_func ("/logging/default-handler/subprocess/info-stderr", test_default_handler_info_stderr);
g_test_add_func ("/logging/default-handler/subprocess/bar-info", test_default_handler_bar_info);
g_test_add_func ("/logging/default-handler/subprocess/baz-debug", test_default_handler_baz_debug);
g_test_add_func ("/logging/default-handler/subprocess/debug", test_default_handler_debug);