mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-09 04:15:49 +01:00
that match a given test path. (g_test_run_suite): run suite only if it
* glib/gtestframework.c: that match a given test path. (g_test_run_suite): run suite only if it matches the existing test paths. * glib/tests/testing.c: minor rename. svn path=/trunk/; revision=5878
This commit is contained in:
parent
cc3bf40d26
commit
ca1c42405e
@ -260,45 +260,66 @@ test_case_run (GTestCase *tc)
|
|||||||
{
|
{
|
||||||
gchar *old_name = test_run_name;
|
gchar *old_name = test_run_name;
|
||||||
test_run_name = g_strconcat (old_name, "/", tc->name, NULL);
|
test_run_name = g_strconcat (old_name, "/", tc->name, NULL);
|
||||||
void *fixture = g_malloc0 (tc->fixture_size);
|
if (test_run_list)
|
||||||
if (tc->fixture_setup)
|
g_print ("%s\n", test_run_name);
|
||||||
tc->fixture_setup (fixture);
|
else
|
||||||
tc->fixture_test (fixture);
|
|
||||||
if (tc->fixture_teardown)
|
|
||||||
tc->fixture_teardown (fixture);
|
|
||||||
while (test_run_free_queue)
|
|
||||||
{
|
{
|
||||||
gpointer freeme = test_run_free_queue->data;
|
if (!test_run_quiet)
|
||||||
test_run_free_queue = g_slist_delete_link (test_run_free_queue, test_run_free_queue);
|
g_print ("%s: ", test_run_name);
|
||||||
g_free (freeme);
|
void *fixture = g_malloc0 (tc->fixture_size);
|
||||||
|
if (tc->fixture_setup)
|
||||||
|
tc->fixture_setup (fixture);
|
||||||
|
tc->fixture_test (fixture);
|
||||||
|
if (tc->fixture_teardown)
|
||||||
|
tc->fixture_teardown (fixture);
|
||||||
|
while (test_run_free_queue)
|
||||||
|
{
|
||||||
|
gpointer freeme = test_run_free_queue->data;
|
||||||
|
test_run_free_queue = g_slist_delete_link (test_run_free_queue, test_run_free_queue);
|
||||||
|
g_free (freeme);
|
||||||
|
}
|
||||||
|
g_free (fixture);
|
||||||
|
if (!test_run_quiet)
|
||||||
|
g_print ("OK\n");
|
||||||
}
|
}
|
||||||
g_free (fixture);
|
|
||||||
g_free (test_run_name);
|
g_free (test_run_name);
|
||||||
test_run_name = old_name;
|
test_run_name = old_name;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
g_test_run_suite_internal (GTestSuite *suite)
|
g_test_run_suite_internal (GTestSuite *suite,
|
||||||
|
const char *path)
|
||||||
{
|
{
|
||||||
guint n_bad = 0, n_good = 0, bad_suite = 0;
|
guint n_bad = 0, n_good = 0, bad_suite = 0, l;
|
||||||
gchar *old_name = test_run_name;
|
gchar *rest, *old_name = test_run_name;
|
||||||
GSList *slist, *reversed;
|
GSList *slist, *reversed;
|
||||||
g_return_val_if_fail (suite != NULL, -1);
|
g_return_val_if_fail (suite != NULL, -1);
|
||||||
|
while (path[0] == '/')
|
||||||
|
path++;
|
||||||
|
l = strlen (path);
|
||||||
|
rest = strchr (path, '/');
|
||||||
|
l = rest ? MIN (l, rest - path) : l;
|
||||||
test_run_name = suite->name[0] == 0 ? g_strdup (test_run_name) : g_strconcat (old_name, "/", suite->name, NULL);
|
test_run_name = suite->name[0] == 0 ? g_strdup (test_run_name) : g_strconcat (old_name, "/", suite->name, NULL);
|
||||||
reversed = g_slist_reverse (g_slist_copy (suite->cases));
|
reversed = g_slist_reverse (g_slist_copy (suite->cases));
|
||||||
for (slist = reversed; slist; slist = slist->next)
|
for (slist = reversed; slist; slist = slist->next)
|
||||||
{
|
{
|
||||||
GTestCase *tc = slist->data;
|
GTestCase *tc = slist->data;
|
||||||
n_good++;
|
guint n = l ? strlen (tc->name) : 0;
|
||||||
n_bad += test_case_run (tc) != 0;
|
if (l == n && strncmp (path, tc->name, n) == 0)
|
||||||
|
{
|
||||||
|
n_good++;
|
||||||
|
n_bad += test_case_run (tc) != 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
g_slist_free (reversed);
|
g_slist_free (reversed);
|
||||||
reversed = g_slist_reverse (g_slist_copy (suite->suites));
|
reversed = g_slist_reverse (g_slist_copy (suite->suites));
|
||||||
for (slist = reversed; slist; slist = slist->next)
|
for (slist = reversed; slist; slist = slist->next)
|
||||||
{
|
{
|
||||||
GTestSuite *ts = slist->data;
|
GTestSuite *ts = slist->data;
|
||||||
bad_suite += g_test_run_suite_internal (ts) != 0;
|
guint n = l ? strlen (ts->name) : 0;
|
||||||
|
if (l == n && strncmp (path, ts->name, n) == 0)
|
||||||
|
bad_suite += g_test_run_suite_internal (ts, rest ? rest : "") != 0;
|
||||||
}
|
}
|
||||||
g_slist_free (reversed);
|
g_slist_free (reversed);
|
||||||
g_free (test_run_name);
|
g_free (test_run_name);
|
||||||
@ -309,10 +330,27 @@ g_test_run_suite_internal (GTestSuite *suite)
|
|||||||
int
|
int
|
||||||
g_test_run_suite (GTestSuite *suite)
|
g_test_run_suite (GTestSuite *suite)
|
||||||
{
|
{
|
||||||
|
guint n_bad = 0;
|
||||||
g_return_val_if_fail (g_test_initialized == TRUE, -1);
|
g_return_val_if_fail (g_test_initialized == TRUE, -1);
|
||||||
g_return_val_if_fail (g_test_run_once == TRUE, -1);
|
g_return_val_if_fail (g_test_run_once == TRUE, -1);
|
||||||
g_test_run_once = FALSE;
|
g_test_run_once = FALSE;
|
||||||
return g_test_run_suite_internal (suite);
|
if (!test_paths)
|
||||||
|
test_paths = g_slist_prepend (test_paths, "");
|
||||||
|
while (test_paths)
|
||||||
|
{
|
||||||
|
const char *rest, *path = test_paths->data;
|
||||||
|
guint l, n;
|
||||||
|
test_paths = g_slist_delete_link (test_paths, test_paths);
|
||||||
|
while (path[0] == '/')
|
||||||
|
path++;
|
||||||
|
rest = strchr (path, '/');
|
||||||
|
l = strlen (path);
|
||||||
|
l = rest ? MIN (l, rest - path) : l;
|
||||||
|
n = l ? strlen (suite->name) : 0;
|
||||||
|
if (l == n && strncmp (path, suite->name, n) == 0)
|
||||||
|
n_bad += 0 != g_test_run_suite_internal (suite, rest ? rest : "");
|
||||||
|
}
|
||||||
|
return n_bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -78,7 +78,7 @@ main (int argc,
|
|||||||
{
|
{
|
||||||
GTestCase *tc;
|
GTestCase *tc;
|
||||||
g_test_init (&argc, &argv, NULL);
|
g_test_init (&argc, &argv, NULL);
|
||||||
GTestSuite *rootsuite = g_test_create_suite ("root");
|
GTestSuite *rootsuite = g_test_create_suite ("top");
|
||||||
GTestSuite *miscsuite = g_test_create_suite ("misc");
|
GTestSuite *miscsuite = g_test_create_suite ("misc");
|
||||||
g_test_suite_add_suite (rootsuite, miscsuite);
|
g_test_suite_add_suite (rootsuite, miscsuite);
|
||||||
GTestSuite *forksuite = g_test_create_suite ("fork");
|
GTestSuite *forksuite = g_test_create_suite ("fork");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user