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.
This commit is contained in:
Daniel Stenberg 2004-04-13 05:57:50 +00:00
Родитель eb6345de60
Коммит 392a543eff
1 изменённых файлов: 37 добавлений и 1 удалений

Просмотреть файл

@ -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";