From d08763c18cb25fe250b27bf296e1607e63e86400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 18 Jun 2019 19:33:10 +0200 Subject: [PATCH] test-runner: Add 'sleep' command This allows to sleep for a given timeout in milliseconds. Rename test_case_before_redraw to test_case_loop_quit since it's a generic function and use it for the timeout too. https://gitlab.gnome.org/GNOME/mutter/merge_requests/307 --- src/tests/test-runner.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/tests/test-runner.c b/src/tests/test-runner.c index 2287769c7..cc854af4d 100644 --- a/src/tests/test-runner.c +++ b/src/tests/test-runner.c @@ -77,7 +77,7 @@ test_case_new (void) } static gboolean -test_case_before_redraw (gpointer data) +test_case_loop_quit (gpointer data) { TestCase *test = data; @@ -108,7 +108,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); @@ -121,6 +121,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, \ @@ -549,6 +560,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))