aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2004-04-13 05:57:50 +0000
committerDaniel Stenberg <daniel@haxx.se>2004-04-13 05:57:50 +0000
commit392a543efff6da1c862e5a7ce82014d6bd1df69c (patch)
treef90c8d2a506306200c6959ef7931b4f2e21b92c6 /tests
parenteb6345de60e0bb9c742a41745a5aa480ecf6e064 (diff)
Initial support for dumping the contents of the files in log/ when failing
when -p is used. For easier bug-hunting of autobuild failures. This still only shows what files that are present in log/, as I believe we need to filter which files we show on a failure.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/runtests.pl38
1 files changed, 37 insertions, 1 deletions
diff --git a/tests/runtests.pl b/tests/runtests.pl
index b02b9f449..a19d9f751 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -94,6 +94,7 @@ my $anyway;
my $gdbthis; # run test case with gdb debugger
my $keepoutfiles; # keep stdout and stderr files after tests
my $listonly; # only list the tests
+my $postmortem; # display detailed info about failed tests
my $pwd; # current working directory
@@ -1029,7 +1030,7 @@ sub singletest {
if($verbose) {
print "$CMDLINE\n";
- }
+ }
print CMDLOG "$CMDLINE\n";
@@ -1416,6 +1417,9 @@ do {
# continue anyway, even if a test fail
$anyway=1;
}
+ elsif($ARGV[0] eq "-p") {
+ $postmortem=1;
+ }
elsif($ARGV[0] eq "-l") {
# lists the test case names only
$listonly=1;
@@ -1435,6 +1439,7 @@ Usage: runtests.pl [options]
-k keep stdout and stderr files present after tests
-l list all test case names/descriptions
-n No valgrind
+ -p Print log file contents when a test fails
-s short output
-t torture
-v verbose output
@@ -1527,6 +1532,33 @@ open(CMDLOG, ">$CURLLOG") ||
if($torture) {
&torture();
}
+
+sub displaylogcontent {
+ my ($file)=@_;
+ open(SINGLE, "<$file");
+ while(<SINGLE>) {
+ print " $_";
+ }
+ close(SINGLE);
+}
+
+sub displaylogs {
+ opendir(DIR, "$LOGDIR") ||
+ die "can't open dir: $!";
+ my @logs = readdir(DIR);
+ closedir DIR;
+ my $log;
+ print "== Contents of files in the log/ dir:\n";
+ foreach $log (sort @logs) {
+ # ignore . and .. and the file has nonzero size
+ if(($log !~ /^\.(\.|)$/) && (-s "$LOGDIR/$log")) {
+ print "== Start of file $log\n";
+ #displaylogcontent("$LOGDIR/$log");
+ print "== End of file $log\n";
+ }
+ }
+}
+
#######################################################################
# The main test-loop
#
@@ -1551,6 +1583,10 @@ foreach $testnum (split(" ", $TESTCASES)) {
if($error>0) {
$failed.= "$testnum ";
+ if($postmortem) {
+ # display all files in log/ in a nice way
+ displaylogs();
+ }
if(!$anyway) {
# a test failed, abort
print "\n - abort tests\n";