GLib.test_trap_subprocess
function test_trap_subprocess(test_path: String, usec_timeout: Number(guint64), test_flags: GLib.TestSubprocessFlags): void {
// Gjs wrapper for g_test_trap_subprocess()
}
Respawns the test program to run only test_path in a subprocess. This can be used for a test case that might not return, or that might abort.
If test_path is null then the same test is re-run in a subprocess. You can use GLib.test_subprocess to determine whether the test is in a subprocess or not.
test_path can also be the name of the parent test, followed by "`/subprocess/`" and then a name for the specific subtest (or just ending with "`/subprocess`" if the test only has one child test); tests with names of this form will automatically be skipped in the parent process.
If usec_timeout is non-0, the test subprocess is aborted and considered failing if its run time exceeds it.
The subprocess behavior can be configured with the GLib.TestSubprocessFlags flags.
You can use methods such as g_test_trap_assert_passed(), g_test_trap_assert_failed(), and g_test_trap_assert_stderr() to check the results of the subprocess. (But note that g_test_trap_assert_stdout() and g_test_trap_assert_stderr() cannot be used if test_flags specifies that the child should inherit the parent stdout/stderr.)
If your `main ()` needs to behave differently in the subprocess, you can call GLib.test_subprocess (after calling GLib.test_init) to see whether you are in a subprocess.
The following example tests that calling `my_object_new(1000000)` will abort with an error message.
|[<!-- language="C" --> static void test_create_large_object_subprocess (void) { if (g_test_subprocess ()) { my_object_new (1000000); return; }
// 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*"); }
int main (int argc, char **argv) { g_test_init (&argc, &argv, NULL);
g_test_add_func ("/myobject/create_large_object", test_create_large_object); return g_test_run (); } ]|
Since 2.38
- test_path
Test to run in a subprocess
- usec_timeout
Timeout for the subprocess test in micro seconds.
- test_flags
Flags to modify subprocess behaviour.