test-utils: Skip tests if no DISPLAY is set
Instead of just bailing out when initializing the test suite, we can do a much better job and skip all the tests. This means that the TAP driver will work correctly instead of dying a horrible death, and we get a nice report with a proper cause of the test skipping.
This commit is contained in:
parent
f065a34e46
commit
f9d99d1c4e
@ -15,6 +15,8 @@
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
ClutterActor *stage;
|
ClutterActor *stage;
|
||||||
|
|
||||||
|
guint no_display : 1;
|
||||||
} ClutterTestEnvironment;
|
} ClutterTestEnvironment;
|
||||||
|
|
||||||
static ClutterTestEnvironment *test_environ = NULL;
|
static ClutterTestEnvironment *test_environ = NULL;
|
||||||
@ -32,6 +34,8 @@ void
|
|||||||
clutter_test_init (int *argc,
|
clutter_test_init (int *argc,
|
||||||
char ***argv)
|
char ***argv)
|
||||||
{
|
{
|
||||||
|
gboolean no_display = FALSE;
|
||||||
|
|
||||||
if (G_UNLIKELY (test_environ != NULL))
|
if (G_UNLIKELY (test_environ != NULL))
|
||||||
g_error ("Attempting to initialize the test suite more than once, "
|
g_error ("Attempting to initialize the test suite more than once, "
|
||||||
"aborting...\n");
|
"aborting...\n");
|
||||||
@ -48,9 +52,12 @@ clutter_test_init (int *argc,
|
|||||||
|
|
||||||
if (display == NULL || *display == '\0')
|
if (display == NULL || *display == '\0')
|
||||||
{
|
{
|
||||||
g_print ("No DISPLAY environment variable found, but we require a "
|
g_test_message ("No DISPLAY environment variable found, but we require a "
|
||||||
"DISPLAY set in order to run the conformance test suite.");
|
"DISPLAY set in order to run the conformance test suite.\n"
|
||||||
exit (0);
|
"Skipping all tests.\n");
|
||||||
|
no_display = TRUE;
|
||||||
|
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -60,14 +67,16 @@ clutter_test_init (int *argc,
|
|||||||
*/
|
*/
|
||||||
_clutter_set_sync_to_vblank (FALSE);
|
_clutter_set_sync_to_vblank (FALSE);
|
||||||
|
|
||||||
g_test_init (argc, argv, NULL);
|
|
||||||
g_test_bug_base ("https://bugzilla.gnome.org/show_bug.cgi?id=%s");
|
|
||||||
|
|
||||||
/* perform the actual initialization */
|
/* perform the actual initialization */
|
||||||
g_assert (clutter_init (NULL, NULL) == CLUTTER_INIT_SUCCESS);
|
g_assert (clutter_init (NULL, NULL) == CLUTTER_INIT_SUCCESS);
|
||||||
|
|
||||||
|
out:
|
||||||
|
g_test_init (argc, argv, NULL);
|
||||||
|
g_test_bug_base ("https://bugzilla.gnome.org/show_bug.cgi?id=%s");
|
||||||
|
|
||||||
/* our global state, accessible from each test unit */
|
/* our global state, accessible from each test unit */
|
||||||
test_environ = g_new0 (ClutterTestEnvironment, 1);
|
test_environ = g_new0 (ClutterTestEnvironment, 1);
|
||||||
|
test_environ->no_display = no_display;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -110,6 +119,12 @@ clutter_test_func_wrapper (gconstpointer data_)
|
|||||||
/* ensure that the previous test state has been cleaned up */
|
/* ensure that the previous test state has been cleaned up */
|
||||||
g_assert_null (test_environ->stage);
|
g_assert_null (test_environ->stage);
|
||||||
|
|
||||||
|
if (test_environ->no_display)
|
||||||
|
{
|
||||||
|
g_test_skip ("No DISPLAY set");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (data->test_data != NULL)
|
if (data->test_data != NULL)
|
||||||
{
|
{
|
||||||
GTestDataFunc test_func = data->test_func;
|
GTestDataFunc test_func = data->test_func;
|
||||||
@ -123,6 +138,7 @@ clutter_test_func_wrapper (gconstpointer data_)
|
|||||||
test_func ();
|
test_func ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
out:
|
||||||
if (data->test_notify != NULL)
|
if (data->test_notify != NULL)
|
||||||
data->test_notify (data->test_data);
|
data->test_notify (data->test_data);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user