diff --git a/tests/runtests.pl b/tests/runtests.pl index d69e9b332..7af18d6a5 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -899,6 +899,7 @@ sub singletest { my @what; my $why; + my %feature; # load the test case file definition if(loadtest("${TESTDIR}/test${testnum}")) { @@ -916,6 +917,8 @@ sub singletest { my $f = $_; $f =~ s/\s//g; + $feature{$f}=$f; # we require this feature + if($f eq "SSL") { if($ssl_version) { next; @@ -1435,7 +1438,9 @@ sub singletest { } my $leak; my $invalidread; + my $uninitedvar; my $error; + my $partial; open(VAL, ") { @@ -1446,11 +1451,26 @@ sub singletest { } last; } - if($_ =~ /Invalid read of size (\d+)/) { + elsif($_ =~ /Invalid read of size (\d+)/) { $invalidread = $1; $error++; last; } + elsif($_ =~ /Conditional jump or move/) { + # If we require SSL, this test case most probaly makes + # us use OpenSSL. OpenSSL produces numerous valgrind + # errors of this kind, rendering it impossible for us to + # detect (valid) reports on actual curl or libcurl code. + + if(!$feature{'SSL'}) { + $uninitedvar = 1; + $error++; + last; + } + else { + $partial=1; + } + } } close(VAL); if($error) { @@ -1461,10 +1481,13 @@ sub singletest { if($invalidread) { print "\n Read $invalidread invalid bytes\n"; } + if($uninitedvar) { + print "\n Conditional jump or move depends on uninitialised value(s)\n"; + } return 1; } elsif(!$short) { - print " valgrind OK"; + printf " valgrind %s", $partial?"PARTIAL":"OK"; } } else {