4 /* Test g_warn macros */
8 g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
9 "*test_warnings*should not be reached*");
11 g_test_assert_expected_messages ();
13 g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
14 "*test_warnings*runtime check failed*");
15 g_warn_if_fail (FALSE);
16 g_test_assert_expected_messages ();
19 static guint log_count = 0;
22 log_handler (const gchar *log_domain,
23 GLogLevelFlags log_level,
27 g_assert_cmpstr (log_domain, ==, "bu");
28 g_assert_cmpint (log_level, ==, G_LOG_LEVEL_INFO);
33 /* test that custom log handlers only get called for
34 * their domain and level
37 test_set_handler (void)
41 id = g_log_set_handler ("bu", G_LOG_LEVEL_INFO, log_handler, NULL);
43 g_log ("bu", G_LOG_LEVEL_DEBUG, "message");
44 g_log ("ba", G_LOG_LEVEL_DEBUG, "message");
45 g_log ("bu", G_LOG_LEVEL_INFO, "message");
46 g_log ("ba", G_LOG_LEVEL_INFO, "message");
48 g_assert_cmpint (log_count, ==, 1);
50 g_log_remove_handler ("bu", id);
54 test_default_handler_error (void)
56 g_log_set_default_handler (g_log_default_handler, NULL);
62 test_default_handler_critical (void)
64 g_log_set_default_handler (g_log_default_handler, NULL);
65 g_critical ("message2");
70 test_default_handler_warning (void)
72 g_log_set_default_handler (g_log_default_handler, NULL);
73 g_warning ("message3");
78 test_default_handler_message (void)
80 g_log_set_default_handler (g_log_default_handler, NULL);
81 g_message ("message4");
86 test_default_handler_info (void)
88 g_log_set_default_handler (g_log_default_handler, NULL);
89 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "message5");
94 test_default_handler_bar_info (void)
96 g_log_set_default_handler (g_log_default_handler, NULL);
98 g_setenv ("G_MESSAGES_DEBUG", "foo bar baz", TRUE);
100 g_log ("bar", G_LOG_LEVEL_INFO, "message5");
105 test_default_handler_baz_debug (void)
107 g_log_set_default_handler (g_log_default_handler, NULL);
109 g_setenv ("G_MESSAGES_DEBUG", "foo bar baz", TRUE);
111 g_log ("baz", G_LOG_LEVEL_DEBUG, "message6");
116 test_default_handler_debug (void)
118 g_log_set_default_handler (g_log_default_handler, NULL);
120 g_setenv ("G_MESSAGES_DEBUG", "all", TRUE);
122 g_log ("foo", G_LOG_LEVEL_DEBUG, "6");
123 g_log ("bar", G_LOG_LEVEL_DEBUG, "6");
124 g_log ("baz", G_LOG_LEVEL_DEBUG, "6");
129 test_default_handler_0x400 (void)
131 g_log_set_default_handler (g_log_default_handler, NULL);
132 g_log (G_LOG_DOMAIN, 1<<10, "message7");
137 test_default_handler (void)
139 g_test_trap_subprocess ("/logging/default-handler/subprocess/error", 0, 0);
140 g_test_trap_assert_failed ();
141 g_test_trap_assert_stderr ("*ERROR*message1*");
143 g_test_trap_subprocess ("/logging/default-handler/subprocess/critical", 0, 0);
144 g_test_trap_assert_failed ();
145 g_test_trap_assert_stderr ("*CRITICAL*message2*");
147 g_test_trap_subprocess ("/logging/default-handler/subprocess/warning", 0, 0);
148 g_test_trap_assert_failed ();
149 g_test_trap_assert_stderr ("*WARNING*message3*");
151 g_test_trap_subprocess ("/logging/default-handler/subprocess/message", 0, 0);
152 g_test_trap_assert_passed ();
153 g_test_trap_assert_stderr ("*Message*message4*");
155 g_test_trap_subprocess ("/logging/default-handler/subprocess/info", 0, 0);
156 g_test_trap_assert_passed ();
157 g_test_trap_assert_stdout_unmatched ("*INFO*message5*");
159 g_test_trap_subprocess ("/logging/default-handler/subprocess/bar-info", 0, 0);
160 g_test_trap_assert_passed ();
161 g_test_trap_assert_stdout ("*INFO*message5*");
163 g_test_trap_subprocess ("/logging/default-handler/subprocess/baz-debug", 0, 0);
164 g_test_trap_assert_passed ();
165 g_test_trap_assert_stdout ("*DEBUG*message6*");
167 g_test_trap_subprocess ("/logging/default-handler/subprocess/debug", 0, 0);
168 g_test_trap_assert_passed ();
169 g_test_trap_assert_stdout ("*DEBUG*6*6*6*");
171 g_test_trap_subprocess ("/logging/default-handler/subprocess/0x400", 0, 0);
172 g_test_trap_assert_passed ();
173 g_test_trap_assert_stdout ("*LOG-0x400*message7*");
176 /* test that setting levels as fatal works */
178 test_fatal_log_mask_subprocess (void)
180 g_log_set_fatal_mask ("bu", G_LOG_LEVEL_INFO);
181 g_log ("bu", G_LOG_LEVEL_INFO, "fatal");
186 test_fatal_log_mask (void)
188 g_test_trap_subprocess ("/logging/fatal-log-mask/subprocess", 0, 0);
189 g_test_trap_assert_failed ();
190 /* G_LOG_LEVEL_INFO isn't printed by default */
191 g_test_trap_assert_stdout_unmatched ("*fatal*");
194 static gint my_print_count = 0;
196 my_print_handler (const gchar *text)
202 test_print_handler (void)
204 GPrintFunc old_print_handler;
206 old_print_handler = g_set_print_handler (my_print_handler);
207 g_assert (old_print_handler == NULL);
211 g_assert_cmpint (my_print_count, ==, 1);
213 g_set_print_handler (NULL);
217 test_printerr_handler (void)
219 GPrintFunc old_printerr_handler;
221 old_printerr_handler = g_set_printerr_handler (my_print_handler);
222 g_assert (old_printerr_handler == NULL);
225 g_printerr ("bu ba");
226 g_assert_cmpint (my_print_count, ==, 1);
228 g_set_printerr_handler (NULL);
231 static char *fail_str = "foo";
232 static char *log_str = "bar";
235 good_failure_handler (const gchar *log_domain,
236 GLogLevelFlags log_level,
240 g_test_message ("The Good Fail Message Handler\n");
241 g_assert ((char *)user_data != log_str);
242 g_assert ((char *)user_data == fail_str);
248 bad_failure_handler (const gchar *log_domain,
249 GLogLevelFlags log_level,
253 g_test_message ("The Bad Fail Message Handler\n");
254 g_assert ((char *)user_data == log_str);
255 g_assert ((char *)user_data != fail_str);
261 test_handler (const gchar *log_domain,
262 GLogLevelFlags log_level,
266 g_test_message ("The Log Message Handler\n");
267 g_assert ((char *)user_data != fail_str);
268 g_assert ((char *)user_data == log_str);
274 g_test_bug ("653052");
276 g_test_log_set_fatal_handler (good_failure_handler, fail_str);
277 g_log_set_default_handler (test_handler, log_str);
279 g_return_if_fail (0);
281 g_test_log_set_fatal_handler (bad_failure_handler, fail_str);
282 g_log_set_default_handler (test_handler, log_str);
284 g_return_if_fail (0);
288 main (int argc, char *argv[])
290 g_unsetenv ("G_MESSAGES_DEBUG");
292 g_test_init (&argc, &argv, NULL);
293 g_test_bug_base ("http://bugzilla.gnome.org/");
295 g_test_add_func ("/logging/default-handler", test_default_handler);
296 g_test_add_func ("/logging/default-handler/subprocess/error", test_default_handler_error);
297 g_test_add_func ("/logging/default-handler/subprocess/critical", test_default_handler_critical);
298 g_test_add_func ("/logging/default-handler/subprocess/warning", test_default_handler_warning);
299 g_test_add_func ("/logging/default-handler/subprocess/message", test_default_handler_message);
300 g_test_add_func ("/logging/default-handler/subprocess/info", test_default_handler_info);
301 g_test_add_func ("/logging/default-handler/subprocess/bar-info", test_default_handler_bar_info);
302 g_test_add_func ("/logging/default-handler/subprocess/baz-debug", test_default_handler_baz_debug);
303 g_test_add_func ("/logging/default-handler/subprocess/debug", test_default_handler_debug);
304 g_test_add_func ("/logging/default-handler/subprocess/0x400", test_default_handler_0x400);
305 g_test_add_func ("/logging/warnings", test_warnings);
306 g_test_add_func ("/logging/fatal-log-mask", test_fatal_log_mask);
307 g_test_add_func ("/logging/fatal-log-mask/subprocess", test_fatal_log_mask_subprocess);
308 g_test_add_func ("/logging/set-handler", test_set_handler);
309 g_test_add_func ("/logging/print-handler", test_print_handler);
310 g_test_add_func ("/logging/printerr-handler", test_printerr_handler);
311 g_test_add_func ("/logging/653052", bug653052);
313 return g_test_run ();