From 28b54109d754b910c9e0e89a0cdeaf72c2493aa4 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Wed, 12 May 2010 20:49:41 +0000 Subject: tests: Removed abbreviated defines, added HTML report generator git-svn-id: http://pugixml.googlecode.com/svn/trunk@417 99668b35-9821-0410-8761-19e4c4f06640 --- tests/autotest-local.pl | 19 ++------ tests/autotest-report.pl | 115 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 15 deletions(-) create mode 100644 tests/autotest-report.pl diff --git a/tests/autotest-local.pl b/tests/autotest-local.pl index 2dc5531..c655403 100644 --- a/tests/autotest-local.pl +++ b/tests/autotest-local.pl @@ -19,12 +19,10 @@ $fast = (shift eq 'fast'); @toolsets = ($^O =~ /win/i) ? (bcc, cw, dmc, ic8, mingw34, mingw44, mingw45, msvc6, msvc7, msvc71, msvc8, msvc8_x64, msvc9, msvc9_x64, msvc10, msvc10_x64) : (gcc); @configurations = (debug, release); @defines = (PUGIXML_NO_XPATH, PUGIXML_NO_EXCEPTIONS, PUGIXML_NO_STL, PUGIXML_WCHAR_MODE); -@definesabbr = (noxpath, noexcept, nostl, wchar); if ($fast) { @defines = (PUGIXML_WCHAR_MODE); - @definesabbr = (wchar); } @definesets = permute(@defines); @@ -39,19 +37,10 @@ foreach $toolset (@toolsets) { foreach $defineset (@definesets) { - # construct define abbreviation - $defineabbr = $defineset; - $defineabbr =~ s/,/ /g; + if ($defineset !~ /NO_XPATH/ && $defineset =~ /NO_EXCEPTIONS/) { next; } + if ($defineset !~ /NO_XPATH/ && $defineset =~ /NO_STL/) { next; } - for ($i = 0; $i < $#definesabbr + 1; ++$i) - { - $defineabbr =~ s/$defines[$i]/$definesabbr[$i]/; - } - - if ($defineabbr !~ /noxpath/ && $defineabbr =~ /noexcept/) { next; } - if ($defineabbr !~ /noxpath/ && $defineabbr =~ /nostl/) { next; } - - print STDERR "*** testing $toolset/$configuration ($defineabbr) ... ***\n"; + print STDERR "*** testing $toolset/$configuration ($defineset) ... ***\n"; # launch command my $cmdline = "jam toolset=$toolset configuration=$configuration defines=$defineset"; @@ -69,7 +58,7 @@ foreach $toolset (@toolsets) my $coverage_pugixpath = $1 if ($coverage =~ /pugixpath\.cpp' executed:([^%]+)%/); # print build report - print "### autotest $Config{archname} $toolset $configuration [$defineabbr] result $result $coverage_pugixml $coverage_pugixpath\n"; + print "### autotest $Config{archname} $toolset $configuration [$defineset] result $result $coverage_pugixml $coverage_pugixpath\n"; } last if ($fast); diff --git a/tests/autotest-report.pl b/tests/autotest-report.pl new file mode 100644 index 0000000..9379c28 --- /dev/null +++ b/tests/autotest-report.pl @@ -0,0 +1,115 @@ +#!/usr/bin/perl + +# parse build log +%results = (); +%toolsets = (); +%defines = (); +%configurations = (); + +sub insertindex +{ + my ($hash, $key) = @_; + + $$hash{$key} = scalar(keys %$hash) unless defined $$hash{$key}; +} + +while (<>) +{ + ### autotest i386-freebsd-64int gcc release [wchar] result 0 97.78 98.85 + if (/^### autotest (\S+) (\S+) (\S+) \[(.*?)\] result (\S+) (\S*) (\S*)/) + { + my ($platform, $toolset, $configuration, $defineset, $result, $coverage_pugixml, $coverage_pugixpath) = ($1, $2, $3, $4, $5, $6, $7); + + die "Detected duplicate build information $_\n" if defined $results{"$toolset $platform"}{$configuration}{$defineset}; + + my $fulltool = "$toolset $platform"; + my $fullconf = "$configuration $defineset"; + + $results{$fulltool}{$fullconf}{result} = $result; + $results{$fulltool}{$fullconf}{coverage_pugixml} = $coverage_pugixml; + $results{$fulltool}{$fullconf}{coverage_pugixpath} = $coverage_pugixpath; + + &insertindex(\%toolsets, $fulltool); + + $defines{$_} = 1 foreach (split /,/, $defineset); + &insertindex(\%configurations, $fullconf); + } +} + +# make arrays of toolsets and configurations +@toolsetarray = (); +@configurationarray = (); + +$toolsetarray[$toolsets{$_}] = $_ foreach (keys %toolsets); +$configurationarray[$configurations{$_}] = $_ foreach (keys %configurations); + +# print header +print <pugixml autotest report +

pugixml autotest report

+ +END + +# print configuration header (release/debug) +print ""; +print "" foreach (@configurationarray); +print "\n"; + +# print defines header (one row for each define) +foreach $define (sort {$a cmp $b} keys %defines) +{ + print ""; + + foreach (@configurationarray) + { + my $present = ($_ =~ /\b$define\b/); + my $color = $present ? "#cccccc" : "#ffffff"; + print ""; + } + print "\n"; +} + +# print data (one row for each toolset) +foreach $tool (@toolsetarray) +{ + print ""; + + foreach (@configurationarray) + { + my $cmdline = "jam toolset=" . (split /\s+/, $tool)[0] . " defines=" . (split /\s+/, $_)[1] . " configuration=" . (split /\s+/, $_)[0]; + my $info = $results{$tool}{$_}; + + if (!defined $$info{result}) + { + print ""; + } + elsif ($$info{result} == 0) + { + my ($coverage_pugixml, $coverage_pugixpath) = ($$info{coverage_pugixml}, $$info{coverage_pugixpath}); + + print ""; + } + else + { + print "" + } + } + + print "\n"; +} + +# print footer +$date = localtime; + +print <
+Generated on $date + +END -- cgit v1.2.3
configuration".(split /\s+/)[0]."
$define" . ($present ? "+" : " ") . "
$tool pass"; + + if ($coverage_pugixml > 0 || $coverage_pugixpath > 0) + { + print "
" . ($coverage_pugixml + 0) . "%
" . ($coverage_pugixpath + 0) . "%
"; + } + + print "
fail