test: improve selective execution of Cairo tests based on FORMAT option

This patch improves the patch "test: Selective execution of Cairo tests based on FORMAT option"
by extending the usage of FORMAT option even in the case of user not
providing TARGETS= option

For ex:
(1). CAIRO_TESTS="zero-alpha" make test FORMAT=rgba
This command runs the zero-alpha test for all the backends with
argb32 content format and so on.
(2). CAIRO_TESTS="zero-alpha" make test FORMAT=rgba,rgb
This command runs the zero-alpha test for all the backends with
argb32 and rgb24 content formats.

Signed-off-by: Ravi Nanjundappa <nravi.n@samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Ravi Nanjundappa 2014-08-05 14:31:37 +05:30 committed by Bryce Harrington
parent f8e0ecb5af
commit c61aeddc44

View file

@ -683,20 +683,62 @@ cairo_boilerplate_get_targets (int *pnum_targets,
tname = end;
}
} else {
/* check all compiled in targets */
num_targets = 0;
for (list = cairo_boilerplate_targets; list != NULL; list = list->next)
num_targets++;
int found = 0;
int not_found_targets = 0;
num_targets = 0;
targets_to_test = xmalloc (sizeof(cairo_boilerplate_target_t*) * num_targets);
for (list = cairo_boilerplate_targets; list != NULL; list = list->next)
{
const cairo_boilerplate_target_t *target = list->target;
const char *tcontent_name;
const char *tcontent_end;
if ((tcontent_name = getenv ("CAIRO_TEST_TARGET_FORMAT")) != NULL && *tcontent_name) {
while(tcontent_name) {
tcontent_end = strpbrk (tcontent_name, " \t\r\n;:,");
if (tcontent_end == tcontent_name) {
tcontent_name = tcontent_end + 1;
continue;
}
if (_cairo_boilerplate_target_format_matches_name (target,
tcontent_name, tcontent_end)) {
/* realloc isn't exactly the best thing here, but meh. */
targets_to_test = xrealloc (targets_to_test,
sizeof(cairo_boilerplate_target_t *) * (num_targets+1));
targets_to_test[num_targets++] = target;
found =1;
}
else
{
not_found_targets++;
}
if (tcontent_end)
tcontent_end++;
tcontent_name = tcontent_end;
}
}
else
{
num_targets++;
}
}
if (!found)
{
/* check all compiled in targets */
num_targets = num_targets + not_found_targets;
targets_to_test = xrealloc (targets_to_test,
sizeof(cairo_boilerplate_target_t*) * num_targets);
num_targets = 0;
for (list = cairo_boilerplate_targets;
list != NULL;
list = list->next)
{
const cairo_boilerplate_target_t *target = list->target;
targets_to_test[num_targets++] = target;
}
}
targets_to_test = xmalloc (sizeof(cairo_boilerplate_target_t*) * num_targets);
num_targets = 0;
for (list = cairo_boilerplate_targets;
list != NULL;
list = list->next)
{
const cairo_boilerplate_target_t *target = list->target;
targets_to_test[num_targets++] = target;
}
}
/* exclude targets as specified by the user */