]> granicus.if.org Git - curl/commitdiff
Provide better reasons for why test cases are skipped. Also, don't show the
authorDaniel Stenberg <daniel@haxx.se>
Thu, 16 Dec 2004 14:18:11 +0000 (14:18 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 16 Dec 2004 14:18:11 +0000 (14:18 +0000)
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

index 1e8ff315b6a761c035798438c85f9e3f7ff52f22..94d28fa6a36edc666ec135627a21334ad16367a0 100755 (executable)
@@ -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);