X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=glib%2Fgtestutils.c;h=dede38ac9e4f9f879f67f1aa50aaf30ba826ba6e;hb=904ec5534cdc45d9b90e86a467e97af3b1bdd66d;hp=09f3adc6ab51ed9faa900883dceb95d93c1e34fd;hpb=35066ed6c6b51317f49069f2564c547aa309f9f1;p=platform%2Fupstream%2Fglib.git diff --git a/glib/gtestutils.c b/glib/gtestutils.c index 09f3adc..dede38a 100644 --- a/glib/gtestutils.c +++ b/glib/gtestutils.c @@ -316,6 +316,25 @@ * * The macro can be turned off in final releases of code by defining * `G_DISABLE_ASSERT` when compiling the application. + * + * For a version which is guaranteed to evaluate side effects in @expr, + * see g_assert_se(). + */ + +/** + * g_assert_se: + * @expr: the expression to check + * + * Debugging macro to terminate the application if the assertion + * fails. If the assertion fails (i.e. the expression is not true), + * an error message is logged and the application is terminated. + * + * The check can be turned off in final releases of code by defining + * `G_DISABLE_ASSERT` when compiling the application. + * + * Unlike g_assert(), this macro is guaranteed to evaluate side effects + * of @expr, even if checks are disabled. It is still undefined if the + * program will actually be aborted or not. */ /** @@ -1474,8 +1493,11 @@ g_test_get_root (void) * particular code runs before or after a given test case, use * g_test_add(), which lets you specify setup and teardown functions. * + * If all tests are skipped, this function will return 0 if + * producing TAP output, or 77 (treated as "skip test" by Automake) otherwise. + * * Returns: 0 on success, 1 on failure (assuming it returns at all), - * 77 if all tests were skipped with g_test_skip(). + * 0 or 77 if all tests were skipped with g_test_skip() * * Since: 2.16 */ @@ -1485,6 +1507,11 @@ g_test_run (void) if (g_test_run_suite (g_test_get_root()) != 0) return 1; + /* 77 is special to Automake's default driver, but not Automake's TAP driver + * or Perl's prove(1) TAP driver. */ + if (test_tap_log) + return 0; + if (test_run_count > 0 && test_run_count == test_skipped_count) return 77; else @@ -2636,7 +2663,7 @@ wait_for_child (GPid pid, * { * g_print ("some stdout text: somagic17\n"); * g_printerr ("some stderr text: semagic43\n"); - * exit (0); /* successful test run */ + * exit (0); // successful test run * } * g_test_trap_assert_passed (); * g_test_trap_assert_stdout ("*somagic17*"); @@ -2672,7 +2699,11 @@ g_test_trap_fork (guint64 usec_timeout, close (stdout_pipe[0]); close (stderr_pipe[0]); if (!(test_trap_flags & G_TEST_TRAP_INHERIT_STDIN)) - fd0 = g_open ("/dev/null", O_RDONLY, 0); + { + fd0 = g_open ("/dev/null", O_RDONLY, 0); + if (fd0 < 0) + g_error ("failed to open /dev/null for stdin redirection"); + } if (sane_dup2 (stdout_pipe[1], 1) < 0 || sane_dup2 (stderr_pipe[1], 2) < 0 || (fd0 >= 0 && sane_dup2 (fd0, 0) < 0)) g_error ("failed to dup2() in forked test program: %s", g_strerror (errno)); if (fd0 >= 3) @@ -2753,7 +2784,7 @@ g_test_trap_fork (guint64 usec_timeout, * return; * } * - * /* Reruns this same test in a subprocess */ + * // Reruns this same test in a subprocess * g_test_trap_subprocess (NULL, 0, 0); * g_test_trap_assert_failed (); * g_test_trap_assert_stderr ("*ERROR*too large*"); @@ -3049,9 +3080,11 @@ g_test_log_extract (GTestLogBuffer *tbuffer) tbuffer->msgs = g_slist_prepend (tbuffer->msgs, g_memdup (&msg, sizeof (msg))); return TRUE; } + + g_free (msg.nums); + g_strfreev (msg.strings); } - g_free (msg.nums); - g_strfreev (msg.strings); + g_error ("corrupt log stream from test program"); return FALSE; }