summaryrefslogtreecommitdiff
path: root/tests/autotest-report.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/autotest-report.pl')
-rw-r--r--tests/autotest-report.pl398
1 files changed, 199 insertions, 199 deletions
diff --git a/tests/autotest-report.pl b/tests/autotest-report.pl
index a01a907..993674a 100644
--- a/tests/autotest-report.pl
+++ b/tests/autotest-report.pl
@@ -1,199 +1,199 @@
-#!/usr/bin/perl
-
-# pretty-printing
-sub prettysuffix
-{
- my $suffix = shift;
-
- return " C++0x" if ($suffix eq '_0x');
- return " x64" if ($suffix eq '_x64');
- return " PPC" if ($suffix eq '_ppc');
-
- return "";
-}
-
-sub prettytoolset
-{
- my $toolset = shift;
-
- return "Borland C++ 5.82" if ($toolset eq 'bcc');
- return "Metrowerks CodeWarrior 8" if ($toolset eq 'cw');
- return "Digital Mars C++ 8.51" if ($toolset eq 'dmc');
- return "Sun C++ 5.10" . prettysuffix($1) if ($toolset =~ /^suncc(.*)$/);
-
- return "Intel C++ Compiler $1.0" . prettysuffix($2) if ($toolset =~ /^ic(\d+)(.*)$/);
- return "MinGW (GCC $1.$2)" . prettysuffix($3) if ($toolset =~ /^mingw(\d)(\d)(.*)$/);
- return "Microsoft Visual C++ 7.1" if ($toolset eq 'msvc71');
- return "Microsoft Visual C++ $1.0" . prettysuffix($2) if ($toolset =~ /^msvc(\d+)(.*)$/);
- return "GNU C++ Compiler $1" . prettysuffix($2) if ($toolset =~ /^gcc([\d.]*)(.*)$/);
-
- return "Microsoft Xbox360 Compiler" if ($toolset =~ /^xbox360/);
- return "Sony PlayStation3 GCC" if ($toolset =~ /^ps3_gcc/);
- return "Sony PlayStation3 SNC" if ($toolset =~ /^ps3_snc/);
-
- $toolset;
-}
-
-sub prettyplatform
-{
- my ($platform, $toolset) = @_;
-
- return "solaris" if ($platform =~ /solaris/);
-
- return "macos" if ($platform =~ /darwin/);
-
- return "linux64" if ($platform =~ /64-linux/);
- return "linux32" if ($platform =~ /86-linux/);
-
- return "fbsd64" if ($platform =~ /64-freebsd/);
- return "fbsd32" if ($platform =~ /86-freebsd/);
-
- return "x360" if ($toolset =~ /^xbox360/);
- return "ps3" if ($toolset =~ /^ps3/);
-
- return "win64" if ($platform =~ /MSWin32-x64/);
- return "win32" if ($platform =~ /MSWin32/);
-
- $platform;
-}
-
-# 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+) \[(.*?)\] (.*)/)
- {
- my ($platform, $toolset, $configuration, $defineset, $info) = ($1, $2, $3, $4, $5);
-
- my $fulltool = &prettyplatform($platform, $toolset) . ' ' . &prettytoolset($toolset);
- my $fullconf = "$configuration $defineset";
-
- if ($info =~ /^prepare/)
- {
- $results{$fulltool}{$fullconf}{result} = 1;
- }
- elsif ($info =~ /^success/)
- {
- $results{$fulltool}{$fullconf}{result} = 0;
- }
- elsif ($info =~ /^coverage (\S+) (\S+)/)
- {
- $results{$fulltool}{$fullconf}{"coverage_$1"} = $2;
- }
- else
- {
- print STDERR "Unrecognized autotest infoline $_";
- }
-
- &insertindex(\%toolsets, $fulltool);
-
- $defines{$_} = 1 foreach (split /,/, $defineset);
- &insertindex(\%configurations, $fullconf);
- }
- elsif (/^### autotest revision (\d+)/)
- {
- if (defined $revision && $revision != $1)
- {
- print STDERR "Autotest build report contains several revisions: $revision, $1\n";
- }
- else
- {
- $revision = $1;
- }
- }
-}
-
-# make arrays of toolsets and configurations
-@toolsetarray = ();
-@configurationarray = ();
-
-$toolsetarray[$toolsets{$_}] = $_ foreach (keys %toolsets);
-$configurationarray[$configurations{$_}] = $_ foreach (keys %configurations);
-
-# print header
-$stylesheet = <<END;
-table.autotest { border: 1px solid black; border-left: none; border-top: none; }
-table.autotest td { border: 1px solid black; border-right: none; border-bottom: none; }
-END
-
-print <<END;
-<html><head><title>pugixml autotest report</title><style type="text/css"><!-- $stylesheet --></style></head><body>
-<h3>pugixml autotest report</h3>
-<table border=1 cellspacing=0 cellpadding=4 class="autotest">
-END
-
-# print configuration header (release/debug)
-print "<tr><td align='right' colspan=2>configuration</td>";
-print "<td>".(split /\s+/)[0]."</td>" foreach (@configurationarray);
-print "</tr>\n";
-
-# print defines header (one row for each define)
-foreach $define (sort {$a cmp $b} keys %defines)
-{
- print "<tr><td align='right' colspan=2><small>$define</small></td>";
-
- foreach (@configurationarray)
- {
- my $present = ($_ =~ /\b$define\b/);
- my $color = $present ? "#cccccc" : "#ffffff";
- print "<td bgcolor='$color' align='center'>" . ($present ? "+" : "&nbsp;") . "</td>";
- }
- print "</tr>\n";
-}
-
-# print data (one row for each toolset)
-foreach $tool (@toolsetarray)
-{
- my ($platform, $toolset) = split(/\s+/, $tool, 2);
- print "<tr><td style='border-right: none' align='center'><small>$platform</small></td><td style='border-left: none'>$toolset</td>";
-
- foreach (@configurationarray)
- {
- my $info = $results{$tool}{$_};
-
- if (!defined $$info{result})
- {
- print "<td bgcolor='#cccccc'>&nbsp;</td>";
- }
- elsif ($$info{result} == 0)
- {
- my ($coverage_pugixml, $coverage_pugixpath) = ($$info{coverage_pugixml}, $$info{coverage_pugixpath});
-
- print "<td bgcolor='#00ff00' align='center'>pass";
-
- if ($coverage_pugixml > 0 || $coverage_pugixpath > 0)
- {
- print "<br><font size='-2'>" . ($coverage_pugixml + 0) . "%<br>" . ($coverage_pugixpath + 0) . "%</font>";
- }
-
- print "</td>";
- }
- else
- {
- print "<td bgcolor='#ff0000' align='center'>fail</td>"
- }
- }
-
- print "</tr>\n";
-}
-
-# print footer
-$date = localtime;
-
-print <<END;
-</table><br>
-Generated on $date from Subversion r$revision
-</body></html>
-END
+#!/usr/bin/perl
+
+# pretty-printing
+sub prettysuffix
+{
+ my $suffix = shift;
+
+ return " C++0x" if ($suffix eq '_0x');
+ return " x64" if ($suffix eq '_x64');
+ return " PPC" if ($suffix eq '_ppc');
+
+ return "";
+}
+
+sub prettytoolset
+{
+ my $toolset = shift;
+
+ return "Borland C++ 5.82" if ($toolset eq 'bcc');
+ return "Metrowerks CodeWarrior 8" if ($toolset eq 'cw');
+ return "Digital Mars C++ 8.51" if ($toolset eq 'dmc');
+ return "Sun C++ 5.10" . prettysuffix($1) if ($toolset =~ /^suncc(.*)$/);
+
+ return "Intel C++ Compiler $1.0" . prettysuffix($2) if ($toolset =~ /^ic(\d+)(.*)$/);
+ return "MinGW (GCC $1.$2)" . prettysuffix($3) if ($toolset =~ /^mingw(\d)(\d)(.*)$/);
+ return "Microsoft Visual C++ 7.1" if ($toolset eq 'msvc71');
+ return "Microsoft Visual C++ $1.0" . prettysuffix($2) if ($toolset =~ /^msvc(\d+)(.*)$/);
+ return "GNU C++ Compiler $1" . prettysuffix($2) if ($toolset =~ /^gcc([\d.]*)(.*)$/);
+
+ return "Microsoft Xbox360 Compiler" if ($toolset =~ /^xbox360/);
+ return "Sony PlayStation3 GCC" if ($toolset =~ /^ps3_gcc/);
+ return "Sony PlayStation3 SNC" if ($toolset =~ /^ps3_snc/);
+
+ $toolset;
+}
+
+sub prettyplatform
+{
+ my ($platform, $toolset) = @_;
+
+ return "solaris" if ($platform =~ /solaris/);
+
+ return "macos" if ($platform =~ /darwin/);
+
+ return "linux64" if ($platform =~ /64-linux/);
+ return "linux32" if ($platform =~ /86-linux/);
+
+ return "fbsd64" if ($platform =~ /64-freebsd/);
+ return "fbsd32" if ($platform =~ /86-freebsd/);
+
+ return "x360" if ($toolset =~ /^xbox360/);
+ return "ps3" if ($toolset =~ /^ps3/);
+
+ return "win64" if ($platform =~ /MSWin32-x64/);
+ return "win32" if ($platform =~ /MSWin32/);
+
+ $platform;
+}
+
+# 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+) \[(.*?)\] (.*)/)
+ {
+ my ($platform, $toolset, $configuration, $defineset, $info) = ($1, $2, $3, $4, $5);
+
+ my $fulltool = &prettyplatform($platform, $toolset) . ' ' . &prettytoolset($toolset);
+ my $fullconf = "$configuration $defineset";
+
+ if ($info =~ /^prepare/)
+ {
+ $results{$fulltool}{$fullconf}{result} = 1;
+ }
+ elsif ($info =~ /^success/)
+ {
+ $results{$fulltool}{$fullconf}{result} = 0;
+ }
+ elsif ($info =~ /^coverage (\S+) (\S+)/)
+ {
+ $results{$fulltool}{$fullconf}{"coverage_$1"} = $2;
+ }
+ else
+ {
+ print STDERR "Unrecognized autotest infoline $_";
+ }
+
+ &insertindex(\%toolsets, $fulltool);
+
+ $defines{$_} = 1 foreach (split /,/, $defineset);
+ &insertindex(\%configurations, $fullconf);
+ }
+ elsif (/^### autotest revision (\d+)/)
+ {
+ if (defined $revision && $revision != $1)
+ {
+ print STDERR "Autotest build report contains several revisions: $revision, $1\n";
+ }
+ else
+ {
+ $revision = $1;
+ }
+ }
+}
+
+# make arrays of toolsets and configurations
+@toolsetarray = ();
+@configurationarray = ();
+
+$toolsetarray[$toolsets{$_}] = $_ foreach (keys %toolsets);
+$configurationarray[$configurations{$_}] = $_ foreach (keys %configurations);
+
+# print header
+$stylesheet = <<END;
+table.autotest { border: 1px solid black; border-left: none; border-top: none; }
+table.autotest td { border: 1px solid black; border-right: none; border-bottom: none; }
+END
+
+print <<END;
+<html><head><title>pugixml autotest report</title><style type="text/css"><!-- $stylesheet --></style></head><body>
+<h3>pugixml autotest report</h3>
+<table border=1 cellspacing=0 cellpadding=4 class="autotest">
+END
+
+# print configuration header (release/debug)
+print "<tr><td align='right' colspan=2>configuration</td>";
+print "<td>".(split /\s+/)[0]."</td>" foreach (@configurationarray);
+print "</tr>\n";
+
+# print defines header (one row for each define)
+foreach $define (sort {$a cmp $b} keys %defines)
+{
+ print "<tr><td align='right' colspan=2><small>$define</small></td>";
+
+ foreach (@configurationarray)
+ {
+ my $present = ($_ =~ /\b$define\b/);
+ my $color = $present ? "#cccccc" : "#ffffff";
+ print "<td bgcolor='$color' align='center'>" . ($present ? "+" : "&nbsp;") . "</td>";
+ }
+ print "</tr>\n";
+}
+
+# print data (one row for each toolset)
+foreach $tool (@toolsetarray)
+{
+ my ($platform, $toolset) = split(/\s+/, $tool, 2);
+ print "<tr><td style='border-right: none' align='center'><small>$platform</small></td><td style='border-left: none'>$toolset</td>";
+
+ foreach (@configurationarray)
+ {
+ my $info = $results{$tool}{$_};
+
+ if (!defined $$info{result})
+ {
+ print "<td bgcolor='#cccccc'>&nbsp;</td>";
+ }
+ elsif ($$info{result} == 0)
+ {
+ my ($coverage_pugixml, $coverage_pugixpath) = ($$info{coverage_pugixml}, $$info{coverage_pugixpath});
+
+ print "<td bgcolor='#00ff00' align='center'>pass";
+
+ if ($coverage_pugixml > 0 || $coverage_pugixpath > 0)
+ {
+ print "<br><font size='-2'>" . ($coverage_pugixml + 0) . "%<br>" . ($coverage_pugixpath + 0) . "%</font>";
+ }
+
+ print "</td>";
+ }
+ else
+ {
+ print "<td bgcolor='#ff0000' align='center'>fail</td>"
+ }
+ }
+
+ print "</tr>\n";
+}
+
+# print footer
+$date = localtime;
+
+print <<END;
+</table><br>
+Generated on $date from Subversion r$revision
+</body></html>
+END