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.