diff options
Diffstat (limited to 't/testsuite-summary-count-many.sh')
-rw-r--r-- | t/testsuite-summary-count-many.sh | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/t/testsuite-summary-count-many.sh b/t/testsuite-summary-count-many.sh new file mode 100644 index 000000000..ed23a7a79 --- /dev/null +++ b/t/testsuite-summary-count-many.sh @@ -0,0 +1,102 @@ +#! /bin/sh +# Copyright (C) 2011-2017 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +# Check test counts in the testsuite summary, with test drivers allowing +# multiple test results per test script, and for a huge number of tests. +# Incidentally, this test also checks that the testsuite summary doesn't +# give any bug-report address if it's not defined. + +. test-init.sh + +for s in trivial-test-driver extract-testsuite-summary.pl; do + cp "$am_testaux_srcdir/$s" . || fatal_ "failed to fetch auxiliary script $s" +done + +br='============================================================================' + +header="\ +${br} +Testsuite summary for $me 1.0 +${br}" + +footer="\ +${br} +See ./test-suite.log +${br}" + +echo AC_OUTPUT >> configure.ac + +cat > Makefile.am << 'END' +TEST_LOG_DRIVER = $(SHELL) $(srcdir)/trivial-test-driver +TESTS = all.test +# Without this, the test driver will be horrendously slow. +END + +cat > all.test <<'END' +#!/bin/sh +cat results.txt || { echo ERROR: weird; exit 99; } +END +chmod a+x all.test + +$PERL -w -e ' + use warnings FATAL => "all"; + use strict; + + my $base = 1000; + my %count = ( + TOTAL => $base * 1000, + PASS => $base * 700, + SKIP => $base * 200, + XFAIL => $base * 80, + FAIL => $base * 10, + XPASS => $base * 7, + ERROR => $base * 3, + ); + my @results = qw/PASS SKIP XFAIL FAIL XPASS ERROR/; + + open (RES, ">results.txt") or die "opening results.txt: $!\n"; + open (CNT, ">count.txt") or die "opening count.txt: $!\n"; + + printf CNT "# %-6s %d\n", "TOTAL:", $count{TOTAL}; + for my $res (@results) + { + my $uc_res = uc $res; + print STDERR "Generating list of $res ...\n"; + for (1..$count{$res}) + { + print RES "$uc_res: $_\n"; + } + printf CNT "# %-6s %d\n", $res . ":", $count{$res}; + } +' + +(echo "$header" && cat count.txt && echo "$footer") > summary.exp + +$ACLOCAL +$AUTOMAKE -a +$AUTOCONF + +./configure + +($MAKE check || touch make.fail) | tee stdout +test -f make.fail + +$PERL extract-testsuite-summary.pl stdout > summary.got +cat summary.exp +cat summary.got +diff summary.exp summary.got || exit 1 + +: |