From e47b5d4e6c5953467f4b51f1179834dabbcc2a1e Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 16 Dec 2004 14:18:11 +0000 Subject: Provide better reasons for why test cases are skipped. Also, don't show the SKIPPED stuff in the short output. Some platforms get quite a lot of SKIPPED and they don't add much value and only clutter screen space. --- tests/runtests.pl | 82 +++++++++++++++++++------------------------------------ 1 file changed, 28 insertions(+), 54 deletions(-) diff --git a/tests/runtests.pl b/tests/runtests.pl index 1e8ff315b..94d28fa6a 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -885,7 +885,6 @@ sub singletest { my @what; my $why; - my $serverproblem; # load the test case file definition if(loadtest("${TESTDIR}/test${testnum}")) { @@ -893,14 +892,12 @@ sub singletest { # this is not a test print "RUN: $testnum doesn't look like a test case!\n"; } - $serverproblem = 100; + $why = "no test"; } else { @what = getpart("client", "features"); } - printf("test %03d...", $testnum); - for(@what) { my $f = $_; $f =~ s/\s//g; @@ -942,64 +939,40 @@ sub singletest { } $why = "curl lacks $f support"; - $serverproblem = 15; # set it here last; } - if(!$serverproblem) { - $serverproblem = serverfortest($testnum); + if(!$why) { + $why = serverfortest($testnum); } - if(!$serverproblem) { + if(!$why) { my @precheck = getpart("client", "precheck"); my $cmd = $precheck[0]; chomp $cmd; if($cmd) { my @o = `$cmd 2>/dev/null`; if($o[0]) { - $serverproblem = 15; $why = $o[0]; chomp $why; } } } - - if($serverproblem) { - # there's a problem with the server, don't run - # this particular server, but count it as "skipped" - if($serverproblem == 2) { - $why = "server problems"; - } - elsif($serverproblem == 100) { - $why = "no test"; - } - elsif($serverproblem == 99) { - $why = "bad test"; - } - elsif($serverproblem == 15) { - # set above, a lacking prereq - } - elsif($serverproblem == 1) { - $why = "no HTTPS server"; - } - elsif($serverproblem == 3) { - $why = "no FTPS server"; - } - else { - $why = "unfulfilled requirements"; - } + if($why) { + # there's a problem, count it as "skipped" $skipped++; $skipped{$why}++; $teststat[$testnum]=$why; # store reason for this test case - print "SKIPPED\n"; if(!$short) { - print "* Test $testnum: $why\n"; + printf "test %03d SKIPPED: $why\n", $testnum; } return -1; } + printf("test %03d...", $testnum); + # extract the reply data my @reply = getpart("reply", "data"); @@ -1476,6 +1449,8 @@ sub stopservers { ####################################################################### # startservers() starts all the named servers # +# Returns: string with error reason or blank for success + sub startservers { my @what = @_; my $pid; @@ -1486,7 +1461,7 @@ sub startservers { if(!$run{'ftp'}) { $pid = runftpserver($verbose); if($pid <= 0) { - return 2; # error starting it + return "failed starting FTP server"; } printf ("* pid ftp => %-5d\n", $pid) if($verbose); $run{'ftp'}=$pid; @@ -1496,7 +1471,7 @@ sub startservers { if(!$run{'http'}) { $pid = runhttpserver($verbose); if($pid <= 0) { - return 2; # error starting + return "failed starting HTTP server"; } printf ("* pid http => %-5d\n", $pid) if($verbose); $run{'http'}=$pid; @@ -1506,22 +1481,25 @@ sub startservers { if(!$run{'http-ipv6'}) { $pid = runhttpserver($verbose, "IPv6"); if($pid <= 0) { - return 2; # error starting + return "failed starting IPv6 HTTP server"; } printf ("* pid http-ipv6 => %-5d\n", $pid) if($verbose); $run{'http-ipv6'}=$pid; } } elsif($what eq "ftps") { - if(!$stunnel || !$ssl_version) { + if(!$stunnel) { # we can't run ftps tests without stunnel - # or if libcurl is SSL-less - return 3; + return "no stunnel"; + } + if(!!$ssl_version) { + # we can't run ftps tests if libcurl is SSL-less + return "curl lacks SSL support"; } if(!$run{'ftp'}) { $pid = runftpserver($verbose); if($pid <= 0) { - return 2; # error starting it + return "failed starting FTP server"; } printf ("* pid ftp => %-5d\n", $pid) if($verbose); $run{'ftp'}=$pid; @@ -1531,7 +1509,7 @@ sub startservers { $pid = runftpsserver($verbose); if($pid <= 0) { - return 2; + return "failed starting FTPS server (stunnel)"; } printf ("* pid ftps => %-5d\n", $pid) if($verbose); $run{'ftps'}=$pid; @@ -1549,7 +1527,7 @@ sub startservers { if(!$run{'http'}) { $pid = runhttpserver($verbose); if($pid <= 0) { - return 2; # problems starting server + return "failed starting HTTP server"; } printf ("* pid http => %-5d\n", $pid) if($verbose); $run{'http'}=$pid; @@ -1557,7 +1535,7 @@ sub startservers { if(!$run{'https'}) { $pid = runhttpsserver($verbose); if($pid <= 0) { - return 2; + return "failed starting HTTPS server (stunnel)"; } printf ("* pid https => %-5d\n", $pid) if($verbose); $run{'https'}=$pid; @@ -1578,12 +1556,8 @@ sub startservers { # specified test case. This is a useful design when we run single tests as not # all servers need to run then! # -# Returns: -# 100 if this is not a test case -# 99 if this test case has no servers specified -# 3 if this test is skipped due to no FTPS server -# 2 if one of the required servers couldn't be started -# 1 if this test is skipped due to no HTTPS server +# Returns: a string, blank if everything is fine or a reason why it failed +# sub serverfortest { my ($testnum)=@_; @@ -1594,14 +1568,14 @@ sub serverfortest { # this is not a test print "$testnum doesn't look like a test case!\n"; } - return 100; + return "no test"; } my @what = getpart("client", "server"); if(!$what[0]) { warn "Test case $testnum has no server(s) specified!"; - return 99; + return "no server specified"; } return &startservers(@what); -- cgit v1.2.3