Author: jelmer Date: 2007-08-12 04:00:15 +0000 (Sun, 12 Aug 2007) New Revision: 24345
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24345 Log: Add --format=html option to selftest. Added: branches/SAMBA_4_0/source/selftest/output/html.pm Modified: branches/SAMBA_4_0/ branches/SAMBA_4_0/source/main.mk branches/SAMBA_4_0/source/samba4-knownfail branches/SAMBA_4_0/source/selftest/output/buildfarm.pm branches/SAMBA_4_0/source/selftest/output/plain.pm branches/SAMBA_4_0/source/selftest/selftest.pl Changeset: Property changes on: branches/SAMBA_4_0 ___________________________________________________________________ Name: bzr:revision-info ...skipped... Name: bzr:file-ids ...skipped... Name: bzr:revision-id:v3-trunk0 ...skipped... Modified: branches/SAMBA_4_0/source/main.mk =================================================================== --- branches/SAMBA_4_0/source/main.mk 2007-08-12 02:30:25 UTC (rev 24344) +++ branches/SAMBA_4_0/source/main.mk 2007-08-12 04:00:15 UTC (rev 24345) @@ -289,6 +289,9 @@ --skip=$(srcdir)/samba4-skip \ $(TEST_OPTIONS) +htmltest: everything + $(SELFTEST) $(DEFAULT_TEST_OPTIONS) --format=html $(TESTS) + test: everything $(SELFTEST) $(DEFAULT_TEST_OPTIONS) --immediate $(TESTS) Modified: branches/SAMBA_4_0/source/samba4-knownfail =================================================================== --- branches/SAMBA_4_0/source/samba4-knownfail 2007-08-12 02:30:25 UTC (rev 24344) +++ branches/SAMBA_4_0/source/samba4-knownfail 2007-08-12 04:00:15 UTC (rev 24345) @@ -8,3 +8,4 @@ RPC-WINREG RPC-WKSSVC.*NetWkstaGetInfo RPC-WKSSVC.*NetWkstaTransportEnum +blackbox.smbclient.*USER.*PASSWD Modified: branches/SAMBA_4_0/source/selftest/output/buildfarm.pm =================================================================== --- branches/SAMBA_4_0/source/selftest/output/buildfarm.pm 2007-08-12 02:30:25 UTC (rev 24344) +++ branches/SAMBA_4_0/source/selftest/output/buildfarm.pm 2007-08-12 04:00:15 UTC (rev 24345) @@ -92,4 +92,11 @@ print "FAIL: $name (ENV[$envname] not available!)\n"; } +sub skip_testsuite($$) +{ + my ($self, $name) = @_; + + print "SKIPPED: $name\n"; +} + 1; Added: branches/SAMBA_4_0/source/selftest/output/html.pm =================================================================== --- branches/SAMBA_4_0/source/selftest/output/html.pm 2007-08-12 02:30:25 UTC (rev 24344) +++ branches/SAMBA_4_0/source/selftest/output/html.pm 2007-08-12 04:00:15 UTC (rev 24345) @@ -0,0 +1,130 @@ +#!/usr/bin/perl + +package output::html; +use Exporter; [EMAIL PROTECTED] = qw(Exporter); + +use strict; + +sub new($$$$) { + my ($class, $dirname, $statistics) = @_; + my $self = { + dirname => $dirname, + statistics => $statistics, + active_test => undef, + msg => "" + }; + + open(INDEX, ">$dirname/index.html"); + + print INDEX "<html>\n"; + print INDEX "<body>\n"; + print INDEX "<table>\n"; + print INDEX "<tr><td>Test</td><td>Environment</td><td>Result</td><td>Duration</td></tr>\n"; + + $self->{INDEX} = *INDEX; + + bless($self, $class); +} + +sub output_msg($$$); + +sub start_testsuite($$) +{ + my ($self, $state) = @_; + + $state->{HTMLFILE} = "$state->{NAME}.html"; + + $state->{HTMLFILE} =~ s/[:\t\n ]/_/g; + + open(TEST, ">$self->{dirname}/$state->{HTMLFILE}"); + + print TEST "<html>\n"; + print TEST "<body>\n"; +} + +sub output_msg($$$) +{ + my ($self, $state, $output) = @_; + + unless (defined($self->{active_test})) { + print TEST "$output<br>"; + } else { + $self->{msg} .= "$output<br>"; + } +} + +sub end_testsuite($$$$$) +{ + my ($self, $state, $expected_ret, $ret, $envlog) = @_; + + print TEST "</body>\n"; + print TEST "</html>\n"; + + close(TEST); + + print {$self->{INDEX}} "<tr><td><a href=\"$state->{HTMLFILE}\">$state->{NAME}</a></td><td>$state->{ENVNAME}</td>"; + + if ($ret == $expected_ret) { + print {$self->{INDEX}} "<td bgcolor=\"green\">OK</td>"; + } else { + print {$self->{INDEX}} "<td bgcolor=\"red\">FAIL</td>"; + } + + print {$self->{INDEX}} "<td>" . (time() - $state->{START_TIME}) . "</td>\n"; + + print {$self->{INDEX}} "</tr>\n"; +} + +sub start_test($$$) +{ + my ($self, $state, $testname) = @_; + + print TEST "<h3>$testname</h3>\n"; + + $self->{active_test} = $testname; + $self->{msg} = ""; +} + +sub end_test($$$$$) +{ + my ($self, $state, $testname, $result, $unexpected) = @_; + + if ($result eq "skip") { + print TEST "<div bgcolor=\"yellow\">\n"; + } elsif ($unexpected) { + print TEST "<div bgcolor=\"red\">\n"; + } + + print TEST $self->{msg}; + + print TEST "</div>\n"; + + $self->{active_test} = undef; +} + +sub summary($) +{ + my ($self) = @_; + print {$self->{INDEX}} "</table>\n"; + print {$self->{INDEX}} "FAILED ($self->{statistics}->{TESTS_UNEXPECTED_FAIL} failures and $self->{statistics}->{TESTS_ERROR} errors in $self->{statistics}->{SUITES_FAIL} testsuites)\n"; + + print {$self->{INDEX}} "</body>\n"; + print {$self->{INDEX}} "</html>\n"; +} + +sub missing_env($$$) +{ + my ($self, $name, $envname) = @_; + + print "FAIL: $name (ENV[$envname] not available!)\n"; +} + +sub skip_testsuite($$) +{ + my ($self, $name) = @_; + + print {$self->{INDEX}} "<tr><td>$name</td><td>N/A</td><td bgcolor=\"yellow\">SKIPPED</td><td>N/A</td></tr>\n"; +} + +1; Modified: branches/SAMBA_4_0/source/selftest/output/plain.pm =================================================================== --- branches/SAMBA_4_0/source/selftest/output/plain.pm 2007-08-12 02:30:25 UTC (rev 24344) +++ branches/SAMBA_4_0/source/selftest/output/plain.pm 2007-08-12 04:00:15 UTC (rev 24345) @@ -98,4 +98,11 @@ print "FAIL: $name (ENV[$envname] not available!)\n"; } +sub skip_testsuite($$) +{ + my ($self, $name) = @_; + + print "SKIPPED: $name\n"; +} + 1; Modified: branches/SAMBA_4_0/source/selftest/selftest.pl =================================================================== --- branches/SAMBA_4_0/source/selftest/selftest.pl 2007-08-12 02:30:25 UTC (rev 24344) +++ branches/SAMBA_4_0/source/selftest/selftest.pl 2007-08-12 04:00:15 UTC (rev 24345) @@ -136,6 +136,7 @@ my $opt_resetup_env = undef; my $opt_bindir = undef; my $opt_no_lazy_setup = undef; +my $opt_format = "plain"; my $srcdir = "."; my $builddir = "."; @@ -239,7 +240,6 @@ $msg_ops->end_test($msg_state, $2, $1, 0); $expected_ret = 0; } else { - print "n:$msg_state->{NAME}/$2\n"; $statistics->{TESTS_UNEXPECTED_FAIL}++; $msg_ops->end_test($msg_state, $2, $1, 1); } @@ -285,7 +285,7 @@ my $ret = close(RESULT); - cleanup_pcap($msg_state, $expected_ret, $ret); + cleanup_pcap($msg_state, $expected_ret, $ret); $msg_ops->end_testsuite($msg_state, $expected_ret, $ret, getlog_env($msg_state->{ENVNAME})); @@ -366,6 +366,7 @@ 'no-lazy-setup' => \$opt_no_lazy_setup, 'resetup-environment' => \$opt_resetup_env, 'bindir:s' => \$opt_bindir, + 'format=s' => \$opt_format, ); exit(1) if (not $result); @@ -418,8 +419,10 @@ $ENV{SRCDIR_ABS} = $srcdir_abs; my $tls_enabled = not $opt_quick; -my $from_build_farm = (defined($ENV{RUN_FROM_BUILD_FARM}) and - ($ENV{RUN_FROM_BUILD_FARM} eq "yes")); +if (defined($ENV{RUN_FROM_BUILD_FARM}) and + ($ENV{RUN_FROM_BUILD_FARM} eq "yes")) { + $opt_format = "buildfarm"; +} $ENV{TLS_ENABLED} = ($tls_enabled?"yes":"no"); $ENV{LD_LDB_MODULE_PATH} = "$old_pwd/bin/modules/ldb"; @@ -551,7 +554,7 @@ # ensure any one smbtorture call doesn't run too long push (@torture_options, "--maximum-runtime=$torture_maxtime"); push (@torture_options, "--target=$opt_target"); -push (@torture_options, "--option=torture:progress=no") if ($from_build_farm); +push (@torture_options, "--option=torture:progress=no") if ($opt_format eq "buildfarm"); push (@torture_options, "--format=subunit"); push (@torture_options, "--option=torture:quick=yes") if ($opt_quick); @@ -692,12 +695,18 @@ } my $msg_ops; -if ($from_build_farm) { +if ($opt_format eq "buildfarm") { require output::buildfarm; $msg_ops = new output::buildfarm(); -} else { +} elsif ($opt_format eq "plain") { require output::plain; $msg_ops = new output::plain($opt_verbose, $opt_immediate, $statistics); +} elsif ($opt_format eq "html") { + require output::html; + mkdir "test-results"; + $msg_ops = new output::html("test-results", $statistics); +} else { + die("Invalid output format '$opt_format'"); } if ($opt_no_lazy_setup) { @@ -737,7 +746,7 @@ my $envname = $$_[1]; if (skip($name)) { - print "SKIPPED: $name\n"; + $msg_ops->skip_testsuite($name); $statistics->{SUITES_SKIPPED}++; next; } @@ -791,7 +800,7 @@ } } -if ($from_build_farm) { +if ($opt_format eq "buildfarm") { print "TEST STATUS: $numfailed\n"; }