From 3f6cf9672ba1d25f10cbd0bb8ce1525c592a8e78 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 26 Aug 2007 16:56:41 +0000 Subject: r24669: Add CSS to the test run HTML output. See http://samba.org/~jelmer/ for an example of the current output. (This used to be commit 1e57394e865a9122bddb3413088a19d4f57a3e3d) --- source4/main.mk | 3 ++ source4/selftest/output/html.pm | 70 +++++++++++++++++-------- source4/selftest/output/plain.pm | 8 ++- source4/selftest/output/testresults.css | 92 +++++++++++++++++++++++++++++++++ source4/selftest/selftest.pl | 13 ++--- 5 files changed, 154 insertions(+), 32 deletions(-) create mode 100644 source4/selftest/output/testresults.css diff --git a/source4/main.mk b/source4/main.mk index f2412d33d5..613d76e0b9 100644 --- a/source4/main.mk +++ b/source4/main.mk @@ -307,6 +307,9 @@ test-noswrap: everything quicktest: all $(SELFTEST) --quick --socket-wrapper --immediate $(TESTS) +htmlquicktest: all + $(SELFTEST) --quick --socket-wrapper --format=html --immediate $(TESTS) + quicktestone: all $(SELFTEST) --quick --socket-wrapper --one $(TESTS) diff --git a/source4/selftest/output/html.pm b/source4/selftest/output/html.pm index d181516002..5a7ee15af2 100644 --- a/source4/selftest/output/html.pm +++ b/source4/selftest/output/html.pm @@ -16,14 +16,27 @@ sub new($$$$) { msg => "" }; + link("selftest/output/testresults.css", "$dirname/testresults.css"); + open(INDEX, ">$dirname/index.html"); - print INDEX "\n"; + print INDEX "\n"; + print INDEX "\n"; + print INDEX " Samba Testsuite Run\n"; + print INDEX " \n"; + print INDEX "\n"; print INDEX "\n"; - print INDEX "\n"; - print INDEX "\n"; - - $self->{INDEX} = *INDEX; + print INDEX "
TestEnvironmentResultDuration
\n"; + print INDEX " \n"; + print INDEX "
Samba Testsuite Run
\n"; + print INDEX "
"; + print INDEX " \n"; + print INDEX " \n"; + print INDEX " \n"; + print INDEX " \n"; + print INDEX " \n"; + print INDEX " \n"; + print INDEX " \n"; bless($self, $class); } @@ -35,13 +48,22 @@ sub start_testsuite($$) my ($self, $state) = @_; $state->{HTMLFILE} = "$state->{NAME}.html"; + $state->{HTMLFILE} =~ s/[:\t\n \/]/_/g; - $state->{HTMLFILE} =~ s/[:\t\n ]/_/g; + open(TEST, ">$self->{dirname}/$state->{HTMLFILE}") or die("Unable to open $state->{HTMLFILE} for writing"); - open(TEST, ">$self->{dirname}/$state->{HTMLFILE}"); + my $title = "Test Results for $state->{NAME}"; - print TEST "\n"; + print TEST "\n"; + print TEST "\n"; + print TEST " $title\n"; + print TEST " \n"; + print TEST "\n"; print TEST "\n"; + print TEST "
TestEnvironmentResultDuration
\n"; + print TEST " \n"; + print TEST " "; + print INDEX ""; if ($ret == $expected_ret) { - print INDEX ""; + print INDEX ""; } else { - print INDEX ""; + print INDEX ""; } - print INDEX "\n"; + print INDEX "\n"; print INDEX "\n"; } @@ -81,8 +104,6 @@ sub start_test($$$) { my ($self, $state, $testname) = @_; - print TEST "

$testname

\n"; - $self->{active_test} = $testname; $self->{msg} = ""; } @@ -91,15 +112,21 @@ sub end_test($$$$$) { my ($self, $state, $testname, $result, $unexpected) = @_; + print TEST ""; + if ($result eq "skip") { - print TEST "
\n"; + print TEST "
\n"; $self->{active_test} = undef; } @@ -107,12 +134,13 @@ sub end_test($$$$$) sub summary($) { my ($self) = @_; - print INDEX "
$title
\n"; + print TEST " \n"; } sub output_msg($$$) @@ -59,20 +81,21 @@ sub end_testsuite($$$$$) { my ($self, $state, $expected_ret, $ret, $envlog) = @_; + print TEST "
\n"; print TEST "\n"; print TEST "\n"; close(TEST); - print INDEX "
{HTMLFILE}\">$state->{NAME}$state->{ENVNAME}
{HTMLFILE}\">$state->{NAME}$state->{ENVNAME}OKOKFAILFAIL" . (time() - $state->{START_TIME}) . "" . (time() - $state->{START_TIME}) . "
\n"; } elsif ($unexpected) { - print TEST "
\n"; + print TEST "
\n"; + } else { + print TEST "\n"; } + print TEST "

$testname

\n"; + print TEST $self->{msg}; - print TEST "\n"; + print TEST "
\n"; - print INDEX "FAILED ($self->{statistics}->{TESTS_UNEXPECTED_FAIL} failures and $self->{statistics}->{TESTS_ERROR} errors in $self->{statistics}->{SUITES_FAIL} testsuites)\n"; + print INDEX "
\n"; + print INDEX "\n"; + print INDEX "\n"; + print INDEX "\n"; print INDEX "\n"; print INDEX "\n"; - close(INDEX); } @@ -127,7 +155,7 @@ sub skip_testsuite($$) { my ($self, $name) = @_; - print INDEX "$nameN/ASKIPPEDN/A\n"; + print INDEX "$nameN/ASKIPPEDN/A\n"; } 1; diff --git a/source4/selftest/output/plain.pm b/source4/selftest/output/plain.pm index d3ffe228a7..2aa01145d0 100644 --- a/source4/selftest/output/plain.pm +++ b/source4/selftest/output/plain.pm @@ -88,7 +88,13 @@ sub summary($) } } - print "FAILED ($self->{statistics}->{TESTS_UNEXPECTED_FAIL} failures and $self->{statistics}->{TESTS_ERROR} errors in $self->{statistics}->{SUITES_FAIL} testsuites)\n"; + if ($self->{statistics}->{SUITES_FAIL} == 0) { + my $ok = $self->{statistics}->{TESTS_EXPECTED_OK} + + $self->{statistics}->{TESTS_EXPECTED_FAIL}; + print "ALL OK ($ok tests in $self->{statistics}->{SUITES_OK} testsuites)\n"; + } else { + print "FAILED ($self->{statistics}->{TESTS_UNEXPECTED_FAIL} failures and $self->{statistics}->{TESTS_ERROR} errors in $self->{statistics}->{SUITES_FAIL} testsuites)\n"; + } } sub missing_env($$$) diff --git a/source4/selftest/output/testresults.css b/source4/selftest/output/testresults.css new file mode 100644 index 0000000000..b37f881f20 --- /dev/null +++ b/source4/selftest/output/testresults.css @@ -0,0 +1,92 @@ +/* Stylesheet for Samba test results. + * + * Partially based on the CSS file from lcov. + */ + +/* All views: main title format */ +td.title +{ + text-align: center; + padding-bottom: 10px; + font-family: sans-serif; + font-size: 20pt; + font-style: italic; + font-weight: bold; +} + +/* Index table headers */ +td.tableHead +{ + text-align: center; + color: #FFFFFF; + background-color: #6688D4; + font-family: sans-serif; + font-size: 120%; + font-weight: bold; +} + +/* Testsuite names */ +td.testSuite +{ + text-align: left; + padding-left: 10px; + padding-right: 20px; + color: #284FA8; + background-color: #DAE7FE; + font-family: monospace; +} + +/* Successful */ +td.resultOk +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #A7FC9D; + font-weight: bold; +} + +/* Failure */ +td.resultFailure +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #FF0000; + font-weight: bold; +} + +/* Skipped */ +td.resultSkipped +{ + text-align: right; + padding-left: 10px; + padding-right: 10px; + background-color: #FFEA20; + font-weight: bold; +} + +td.duration +{ + text-align: right; +} + +td.durationSkipped +{ + text-align: right; +} + +td.outputSkipped +{ + background-color: #FFEA20; +} + +td.outputOk +{ + background-color: #A7FC9D; +} + +td.outputFailure +{ + background-color: #FF0000; +} diff --git a/source4/selftest/selftest.pl b/source4/selftest/selftest.pl index 1dbb494edb..a10baebcf4 100755 --- a/source4/selftest/selftest.pl +++ b/source4/selftest/selftest.pl @@ -777,14 +777,7 @@ $target->stop(); $statistics->{END_TIME} = time(); my $duration = ($statistics->{END_TIME}-$statistics->{START_TIME}); -my $numfailed = $statistics->{SUITES_FAIL}; -if ($numfailed == 0) { - my $ok = $statistics->{TESTS_EXPECTED_OK} + - $statistics->{TESTS_EXPECTED_FAIL}; - print "ALL OK ($ok tests in $statistics->{SUITES_OK} testsuites)\n"; -} else { - $msg_ops->summary(); -} +$msg_ops->summary(); print "DURATION: $duration seconds\n"; my $failed = 0; @@ -801,7 +794,7 @@ foreach (<$prefix/valgrind.log*>) { } if ($opt_format eq "buildfarm") { - print "TEST STATUS: $numfailed\n"; + print "TEST STATUS: $statistics->{SUITES_FAIL}\n"; } -exit $numfailed; +exit $statistics->{SUITES_FAIL}; -- cgit