diff options
author | Martin Peres <martin.peres@linux.intel.com> | 2016-10-06 10:51:14 +0300 |
---|---|---|
committer | Martin Peres <martin.peres@linux.intel.com> | 2016-10-06 17:04:22 +0300 |
commit | 7f899fa7dbdcd5a78e00815487af1632d499a1f2 (patch) | |
tree | f842bc8a63eac4a8319cf67bc2782d3a3f60946b | |
parent | 44032a7e7e25329989bbda1c715568107a6479c6 (diff) |
Report results on a per-test basisautotools
This allows a runner such as EzBench to track each test individually
and not limit the resolution to groups.
This feature can be triggered by using the -r parameter.
Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
-rw-r--r-- | main.c | 12 | ||||
-rw-r--r-- | rendercheck.h | 4 | ||||
-rw-r--r-- | tests.c | 70 |
3 files changed, 59 insertions, 27 deletions
@@ -27,7 +27,7 @@ #include <strings.h> #include <getopt.h> -bool is_verbose = false, minimalrendering = false; +bool is_verbose = false, minimalrendering = false, enable_report = false; int enabled_tests = ~0; /* Enable all tests by default */ int format_whitelist_len = 0; @@ -163,7 +163,7 @@ usage (char *program) { fprintf(stderr, "usage: %s [-d|--display display] [-v|--verbose]\n" "\t[-t test1,test2,...] [-o op1,op2,...] [-f format1,format2,...]\n" - "\t[--sync] [--minimalrendering] [--version]\n" + "\t[--sync] [--minimalrendering] [--report] [--version]\n" "Available tests:\n", program); print_tests(stderr, ~0); exit(1); @@ -189,6 +189,7 @@ int main(int argc, char **argv) { "tests", required_argument, NULL, 't' }, { "ops", required_argument, NULL, 'o' }, { "verbose", no_argument, NULL, 'v' }, + { "report", no_argument, NULL, 'r' }, { "sync", no_argument, &is_sync, true}, { "minimalrendering", no_argument, &longopt_minimalrendering, true}, @@ -196,7 +197,7 @@ int main(int argc, char **argv) { NULL, 0, NULL, 0 } }; - while ((o = getopt_long(argc, argv, "d:i:f:t:o:v", longopts, NULL)) != -1) { + while ((o = getopt_long(argc, argv, "d:i:f:t:o:rv", longopts, NULL)) != -1) { switch (o) { case 'd': display = optarg; @@ -276,6 +277,9 @@ int main(int argc, char **argv) case 'v': is_verbose = true; break; + case 'r': + enable_report = true; + break; case 0: break; default: @@ -345,7 +349,7 @@ int main(int argc, char **argv) while (XNextEvent(dpy, &ev) == 0) { if (ev.type == Expose && !ev.xexpose.count) { - if (do_tests(dpy, &window)) + if (do_tests(dpy, &window, enable_report)) ret = 0; else ret = 1; diff --git a/rendercheck.h b/rendercheck.h index 1c392e8..43d6f2b 100644 --- a/rendercheck.h +++ b/rendercheck.h @@ -132,7 +132,7 @@ extern struct rendercheck_test __start_test_section, __stop_test_section; extern int pixmap_move_iter; extern int win_width, win_height; extern struct op_info ops[]; -extern bool is_verbose, minimalrendering; +extern bool is_verbose, minimalrendering, enable_report; extern color4d colors[]; extern int enabled_tests; extern int format_whitelist_len; @@ -193,7 +193,7 @@ argb_fill(Display *dpy, picture_info *p, int x, int y, int w, int h, float a, float r, float g, float b); bool -do_tests(Display *dpy, picture_info *win); +do_tests(Display *dpy, picture_info *win, bool enable_report); void copy_pict_to_win(Display *dpy, picture_info *pict, picture_info *win, @@ -315,7 +315,7 @@ create_formats_list(Display *dpy) } bool -do_tests(Display *dpy, picture_info *win) +do_tests(Display *dpy, picture_info *win, bool enable_report) { int i, j, src; int num_dests; @@ -436,6 +436,14 @@ do { \ tests_total++; \ } while (0) +#define REPORT_RESULTS(fmt, ...) \ +do { \ + RECORD_RESULTS(); \ + if (enable_report) \ + fprintf(stderr, "## " fmt ": %s\n", \ + ##__VA_ARGS__, ok ? "pass" : "fail"); \ +} while (0) + num_tests = num_colors * nformats; test_ops = malloc(sizeof(int)*num_ops); @@ -482,13 +490,23 @@ do { \ printf("Beginning testing of filling of 1x1R pictures\n"); for (i = 0; i < num_tests; i++) { ok = fill_test(dpy, win, &pictures_1x1[i]); - RECORD_RESULTS(); + REPORT_RESULTS("fill 1x1R src=(%s, %.2f:%.2f:%.2f:%.2f)", + pictures_1x1[i].name, + pictures_1x1[i].color.a, + pictures_1x1[i].color.r, + pictures_1x1[i].color.g, + pictures_1x1[i].color.b); } printf("Beginning testing of filling of 10x10 pictures\n"); for (i = 0; i < num_tests; i++) { ok = fill_test(dpy, win, &pictures_10x10[i]); - RECORD_RESULTS(); + REPORT_RESULTS("fill 10x10 src=(%s, %.2f:%.2f:%.2f:%.2f)", + pictures_1x1[i].name, + pictures_1x1[i].color.a, + pictures_1x1[i].color.r, + pictures_1x1[i].color.g, + pictures_1x1[i].color.b); } if (group_ok) success_mask |= TEST_FILL; @@ -502,7 +520,8 @@ do { \ ok = dstcoords_test(dpy, win, i == 0 ? PictOpSrc : PictOpOver, win, argb32white, argb32red); - RECORD_RESULTS(); + REPORT_RESULTS("dst coords %s", + i == 0 ? "PictOpSrc" : "PictOpOver"); } if (group_ok) success_mask |= TEST_DSTCOORDS; @@ -513,7 +532,8 @@ do { \ printf("Beginning src coords test\n"); ok = srccoords_test(dpy, win, argb32white, false); - RECORD_RESULTS(); + REPORT_RESULTS("src coords"); + if (group_ok) success_mask |= TEST_SRCCOORDS; } @@ -523,7 +543,8 @@ do { \ printf("Beginning mask coords test\n"); ok = srccoords_test(dpy, win, argb32white, true); - RECORD_RESULTS(); + REPORT_RESULTS("mask coords"); + if (group_ok) success_mask |= TEST_MASKCOORDS; } @@ -533,11 +554,12 @@ do { \ printf("Beginning transformed src coords test\n"); ok = trans_coords_test(dpy, win, argb32white, false); - RECORD_RESULTS(); + REPORT_RESULTS("transform src coord"); printf("Beginning transformed src coords test 2\n"); ok = trans_srccoords_test_2(dpy, win, argb32white, false); - RECORD_RESULTS(); + REPORT_RESULTS("transform src coord2"); + if (group_ok) success_mask |= TEST_TSRCCOORDS; } @@ -547,11 +569,11 @@ do { \ printf("Beginning transformed mask coords test\n"); ok = trans_coords_test(dpy, win, argb32white, true); - RECORD_RESULTS(); + REPORT_RESULTS("transform mask coord"); printf("Beginning transformed mask coords test 2\n"); ok = trans_srccoords_test_2(dpy, win, argb32white, true); - RECORD_RESULTS(); + REPORT_RESULTS("transform mask coord2"); if (group_ok) success_mask |= TEST_TMASKCOORDS; @@ -574,7 +596,7 @@ do { \ test_ops, num_test_ops, test_src, num_test_src, test_dst, num_test_dst); - RECORD_RESULTS(); + REPORT_RESULTS("blend %s", pi->name); } if (group_ok) success_mask |= TEST_BLEND; @@ -599,7 +621,7 @@ do { \ test_mask, num_test_mask, test_dst, num_test_dst, false); - RECORD_RESULTS(); + REPORT_RESULTS("composite mask %s", pi->name); } if (group_ok) success_mask |= TEST_COMPOSITE; @@ -624,7 +646,7 @@ do { \ test_mask, num_test_mask, test_dst, num_test_dst, true); - RECORD_RESULTS(); + REPORT_RESULTS("composite CA mask %s", pi->name); } if (group_ok) success_mask |= TEST_CACOMPOSITE; @@ -635,7 +657,10 @@ do { \ printf("Beginning render to linear gradient test\n"); ok = render_to_gradient_test(dpy, &pictures_1x1[0]); - RECORD_RESULTS(); + REPORT_RESULTS("render linear gradient %s - color %.2f:%.2f:%.2f:%.2f", + pictures_1x1[0].name, pictures_1x1[0].color.a, + pictures_1x1[0].color.r, pictures_1x1[0].color.g, + pictures_1x1[0].color.b); for (i = 0; i < num_ops; i++) { if (ops[i].disabled) @@ -654,7 +679,10 @@ do { \ for (src = 0; src < num_tests; src++) { ok = linear_gradient_test(dpy, win, pi, i, &pictures_1x1[src]); - RECORD_RESULTS(); + REPORT_RESULTS("%s linear gradient dst=%s, src=(%s, %.2f:%.2f:%.2f:%.2f)", + ops[i].name, pi->name, pictures_1x1[src].name, + pictures_1x1[src].color.a, pictures_1x1[src].color.r, + pictures_1x1[src].color.g, pictures_1x1[src].color.b); } } } @@ -683,7 +711,7 @@ do { \ */ ok = repeat_test(dpy, win, pi, i, argb32white, argb32red, argb32green, false); - RECORD_RESULTS(); + REPORT_RESULTS("%s src repeat %s", ops[i].name, pi->name); printf("Beginning %s mask repeat test on %s\n", ops[i].name, pi->name); @@ -692,7 +720,7 @@ do { \ */ ok = repeat_test(dpy, win, pi, i, argb32white, argb32red, argb32green, true); - RECORD_RESULTS(); + REPORT_RESULTS("%s mask repeat %s", ops[i].name, pi->name); } } if (group_ok) @@ -718,19 +746,19 @@ do { \ ops[i].name, pi->name); ok = triangles_test(dpy, win, pi, i, argb32red, argb32white); - RECORD_RESULTS(); + REPORT_RESULTS("%s Triangles %s", ops[i].name, pi->name); printf("Beginning %s TriStrip test on %s\n", ops[i].name, pi->name); ok = tristrip_test(dpy, win, pi, i, argb32red, argb32white); - RECORD_RESULTS(); + REPORT_RESULTS("%s TriStrip %s", ops[i].name, pi->name); printf("Beginning %s TriFan test on %s\n", ops[i].name, pi->name); ok = trifan_test(dpy, win, pi, i, argb32red, argb32white); - RECORD_RESULTS(); + REPORT_RESULTS("%s TriFan %s", ops[i].name, pi->name); } } if (group_ok) @@ -741,7 +769,7 @@ do { \ bool ok, group_ok = true; ok = bug7366_test(dpy); - RECORD_RESULTS(); + REPORT_RESULTS("bug7366"); if (group_ok) success_mask |= TEST_BUG7366; |