diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2006-07-13 11:27:05 -0400 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2006-07-13 11:27:05 -0400 |
commit | 0ac2bbbf52737b2e368de269651c56dab90c928a (patch) | |
tree | 804feefe2ca6f070695ec7bad3b95425b0446a93 /test | |
parent | f79a9f5a5259f33284d5e63ef2ddac0be4ea7d41 (diff) |
Improve test HTML generation:
- Make "make retest" not generate all .log files.
- Format improvements in the generated HTML file.
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.am | 27 | ||||
-rw-r--r-- | test/cairo-test.c | 16 | ||||
-rwxr-xr-x | test/make-html.pl | 49 |
3 files changed, 55 insertions, 37 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index c96f7a70..f5d4f44e 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -481,26 +481,37 @@ CLEANFILES = \ check-valgrind: $(MAKE) check TESTS_ENVIRONMENT='$(TESTS_ENVIRONMENT) $(top_srcdir)/libtool --mode=execute valgrind --tool=memcheck --suppressions=./.valgrind-suppressions --leak-check=yes --show-reachable=yes' 2>&1 | tee valgrind-log +# The following definitions both should work. +#FAILED_TESTS = `grep -l '\<FAIL\>' $(TESTS:=.log) | sed -e 's/[.]log$$//' | xargs echo` +FAILED_TESTS = `grep -l '\<FAIL\>' $(TESTS:=.log) | tr '\n' ' ' | sed -e 's/[.]log */ /g; s/^ //; s/ $$//'` + +recheck = check TESTS="$(FAILED_TESTS)" + # Re-checks all failed tests, i.e. tests with a log file that has a failure recheck: @echo Re-checking failed tests - @$(MAKE) check TESTS="`grep -l '\<FAIL\>' *.log | sed 's/[.]log$$//' | tr '\n' ' '`" + @$(MAKE) $(recheck) # Checks tests and creates index.html. # Target doesn't fail if tests fail. test: - @-$(MAKE) check - @$(MAKE) html + @$(MAKE) check; \ + $(MAKE) html # Re-checks tests and creates index.html. # Target doesn't fail if tests fail. retest: - @-$(MAKE) recheck - @$(MAKE) html + @TESTS="$(FAILED_TESTS)"; \ + $(MAKE) TESTS="$$TESTS" check; \ + $(MAKE) TESTS="$$TESTS" html # Make index.html html: index.html +# Make index.html containing only the failed tests. +rehtml: + @$(MAKE) TESTS="$(FAILED_TESTS)" html + $(TESTS): $(SUPPORT_PROGS) @@ -512,8 +523,8 @@ NOLOG_TESTS_LOG = $(NOLOG_TESTS:=.log) $(NOLOG_TESTS_LOG): echo dummy > $@ -index.html: $(TESTS:=.log) +index.html: $(srcdir)/make-html.pl $(TESTS:=.log) @echo Creating index.html - @perl $(srcdir)/make-html.pl > index.html + @perl $^ > index.html -.PHONY: check-valgrind test recheck retest html +.PHONY: check-valgrind test recheck retest html rehtml diff --git a/test/cairo-test.c b/test/cairo-test.c index 8b4ae117..94d3b1e4 100644 --- a/test/cairo-test.c +++ b/test/cairo-test.c @@ -1799,7 +1799,7 @@ cairo_test_expecting (cairo_test_t *test, while (*tname) { int found = 0; - char *end = strpbrk (tname, " \t\r\n;:,"); + const char *end = strpbrk (tname, " \t\r\n;:,"); if (!end) end = tname + strlen (tname); @@ -1814,8 +1814,7 @@ cairo_test_expecting (cairo_test_t *test, } if (!found) { - *end = '\0'; - fprintf (stderr, "Cannot test target '%s'\n", tname); + fprintf (stderr, "Cannot test target '%.*s'\n", end - tname, tname); exit(-1); } @@ -1935,21 +1934,22 @@ cairo_test_status_t cairo_test (cairo_test_t *test) { cairo_test_status_t expectation = CAIRO_TEST_SUCCESS; - char *xfails; + const char *xfails; if ((xfails = getenv ("CAIRO_XFAIL_TESTS")) != NULL) { while (*xfails) { - char *end = strpbrk (xfails, " \t\r\n;:,"); + const char *end = strpbrk (xfails, " \t\r\n;:,"); if (!end) end = xfails + strlen (xfails); - else - *end++ = '\0'; - if (0 == strcmp (test->name, xfails)) { + if (0 == strncmp (test->name, xfails, end - xfails) && + '\0' == test->name[end - xfails]) { expectation = CAIRO_TEST_FAILURE; break; } + if (*end) + end++; xfails = end; } } diff --git a/test/make-html.pl b/test/make-html.pl index 8b34e125..7af9dcde 100755 --- a/test/make-html.pl +++ b/test/make-html.pl @@ -25,8 +25,9 @@ # ## -## Takes all the *.log files in the current directory and spits out -## html to stdout that can be used to view all the test results at once. +## Takes all the *.log files in the current directory (or those provided +## on the command line) and spits out html to stdout that can be used to +## view all the test results at once. ## # show reference images @@ -53,7 +54,7 @@ foreach (<*.log>) { $tests->{$1}->{$2}->{$3} = {} unless $tests->{$1}->{$2}->{$3}; $tests->{$1}->{$2}->{$3}->{$4} = $5; - $teststats->{$2} = {"PASS" => 0, "FAIL" => 0, "XFAIL" => 0, "UNTESTED" => 0} + $teststats->{$2} = {"PASS" => 0, "FAIL" => 0, "XFAIL" => 0, "UNTESTED" => 0, "CRASHED" =>0} unless $teststats->{$2}; ($teststats->{$2}->{$5})++; } @@ -92,16 +93,18 @@ sub printl { printl '<html><head>'; printl '<title>Cairo Test Results</title>'; printl '<style type="text/css">'; -printl 'a img { border: none; }'; -printl '.PASS { background-color: #009900; min-width: 1em; }'; -printl '.FAIL { background-color: #990000; }'; -printl '.XFAIL { background-color: #999900; }'; -printl '.UNTESTED { background-color: #333333; }'; -printl '.PASSstr { color: #009900; }'; -printl '.FAILstr { color: #990000; }'; -printl '.XFAILstr { color: #999900; }'; -printl '.UNTESTEDstr { color: #333333; }'; -printl 'img { max-width: 15em; min-width: 3em; }'; +printl 'a img { border: solid 1px #FFF; }'; +printl '.PASS { background-color: #0D0; min-width: 1em; }'; +printl '.FAIL { background-color: #D00; }'; +printl '.XFAIL { background-color: #DD0; }'; +printl '.UNTESTED { background-color: #666; }'; +printl '.CRASHED { background-color: #F00; color: #FF0; }'; +printl '.PASSstr { color: #0D0; }'; +printl '.FAILstr { color: #E00; }'; +printl '.XFAILstr { color: #DD0; }'; +printl '.CRASHEDstr { color: #F00; }'; +printl '.UNTESTEDstr { color: #666; }'; +printl 'img { max-width: 15em; min-width: 3em; margin: 3px; }'; printl 'td { vertical-align: top; }'; printl '</style>'; printl '<body>'; @@ -121,7 +124,7 @@ print '<td></td>' if $config_show_ref; foreach my $target (@targets) { print '<td>'; print '<span class="PASSstr">', $teststats->{$target}->{"PASS"}, '</span>/'; - print '<span class="FAILstr">', $teststats->{$target}->{"FAIL"}, '</span>/'; + print '<span class="FAILstr">', $teststats->{$target}->{"FAIL"} + $teststats->{$target}->{"CRASHED"}, '</span>/'; print '<span class="XFAILstr">', $teststats->{$target}->{"XFAIL"}, '</span>/'; print '<span class="UNTESTEDstr">', $teststats->{$target}->{"UNTESTED"}; '</span>'; print '</td>'; @@ -160,8 +163,6 @@ foreach my $test (sort(keys %$tests)) { foreach my $format (@formats) { my $testline = ""; - my $num_failed = 0; - foreach my $target (@targets) { my $tgtdata = $tests->{$test}->{$target}; if ($tgtdata) { @@ -175,21 +176,27 @@ foreach my $test (sort(keys %$tests)) { $testline .= "<a href=\"" . $testfiles{"out"} . "\"><img src=\"" . $testfiles{"out"} . "\"></a>"; } } elsif ($testres eq "FAIL") { - $num_failed++; - if ($config_show_fail || $config_show_all) { $testline .= "<a href=\"" . $testfiles{"out"} . "\"><img src=\"" . $testfiles{"out"} . "\"></a>"; - $testline .= "<hr size=\"1\">"; + #$testline .= "<hr size=\"1\">"; + $testline .= " "; $testline .= "<a href=\"" . $testfiles{"diff"} . "\"><img src=\"" . $testfiles{"diff"} . "\"></a>"; } + } elsif ($testres eq "CRASHED") { + $testline .= "!!!CRASHED!!!"; } elsif ($testres eq "XFAIL") { #nothing if ($config_show_all) { $testline .= "<a href=\"" . $testfiles{"out"} . "\"><img src=\"" . $testfiles{"out"} . "\"></a>"; - $testline .= "<hr size=\"1\">"; + #$testline .= "<hr size=\"1\">"; + $testline .= " "; $testline .= "<a href=\"" . $testfiles{"diff"} . "\"><img src=\"" . $testfiles{"diff"} . "\"></a>"; } - } + } elsif ($testres eq "UNTESTED") { + #nothing + } else { + $testline .= "UNSUPPORTED STATUS (update make-html.pl)"; + } $testline .= "</td>"; } else { |