diff --git a/src/tests/test-runner.c b/src/tests/test-runner.c index 9056d9aad..75732c6c8 100644 --- a/src/tests/test-runner.c +++ b/src/tests/test-runner.c @@ -113,7 +113,7 @@ test_case_new (void) } static gboolean -test_case_before_redraw (gpointer data) +test_case_loop_quit (gpointer data) { TestCase *test = data; @@ -144,7 +144,7 @@ test_case_wait (TestCase *test, * waiting until after *all* frame processing. */ meta_later_add (META_LATER_BEFORE_REDRAW, - test_case_before_redraw, + test_case_loop_quit, test, NULL); g_main_loop_run (test->loop); @@ -157,6 +157,17 @@ test_case_wait (TestCase *test, return TRUE; } +static gboolean +test_case_sleep (TestCase *test, + guint32 interval, + GError **error) +{ + g_timeout_add_full (G_PRIORITY_LOW, interval, test_case_loop_quit, test, NULL); + g_main_loop_run (test->loop); + + return TRUE; +} + #define BAD_COMMAND(...) \ G_STMT_START { \ g_set_error (error, \ @@ -519,6 +530,20 @@ test_case_do (TestCase *test, if (!test_case_wait (test, error)) return FALSE; } + else if (strcmp (argv[0], "sleep") == 0) + { + guint64 interval; + + if (argc != 2) + BAD_COMMAND("usage: %s ", argv[0]); + + if (!g_ascii_string_to_unsigned (argv[1], 10, 0, G_MAXUINT32, + &interval, error)) + return FALSE; + + if (!test_case_sleep (test, (guint32) interval, error)) + return FALSE; + } else if (strcmp (argv[0], "assert_stacking") == 0) { if (!test_case_assert_stacking (test, argv + 1, argc - 1, error))