From fa5f573d0de778a0038ed68e76d966679a699aef Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Wed, 12 May 2010 17:49:38 +0000 Subject: tests: Started autotest refactoring (extracted build log generation code) git-svn-id: http://pugixml.googlecode.com/svn/trunk@416 99668b35-9821-0410-8761-19e4c4f06640 --- tests/autotest-local.pl | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tests/autotest-local.pl diff --git a/tests/autotest-local.pl b/tests/autotest-local.pl new file mode 100644 index 0000000..2dc5531 --- /dev/null +++ b/tests/autotest-local.pl @@ -0,0 +1,79 @@ +#!/usr/bin/perl + +use Config; + +sub permute +{ + my @defines = @_; + my @result = (''); + + foreach $define (@defines) + { + push @result, map { length($_) == 0 ? $define : "$_,$define" } @result; + } + + @result; +} + +$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); + +print "### autotest begin " . scalar localtime() . "\n"; + +%results = (); + +foreach $toolset (@toolsets) +{ + foreach $configuration (@configurations) + { + foreach $defineset (@definesets) + { + # construct define abbreviation + $defineabbr = $defineset; + $defineabbr =~ s/,/ /g; + + 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"; + + # launch command + my $cmdline = "jam toolset=$toolset configuration=$configuration defines=$defineset"; + + print "### autotest launch $cmdline\n"; + + my $coverage = `$cmdline coverage`; + my $result = $? >> 8; + + # print build output + print $coverage; + + # parse coverage + my $coverage_pugixml = $1 if ($coverage =~ /pugixml\.cpp' executed:([^%]+)%/); + 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"; + } + + last if ($fast); + } +} + +print "### autotest end " . scalar localtime() . "\n"; -- cgit v1.2.3