Added <postcheck> support to the test harness.
authorDan Fandrich <dan@coneharvesters.com>
Mon, 23 Apr 2007 22:58:45 +0000 (22:58 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Mon, 23 Apr 2007 22:58:45 +0000 (22:58 +0000)
tests/FILEFORMAT
tests/README
tests/runtests.pl

index 3c21be1..d0cb8b4 100644 (file)
@@ -105,8 +105,8 @@ NOSAVE
  - Don't actually save what is received
 SLOWDOWN
  - Send FTP responses with 0.1 sec delay between each byte
-PASVBADIP  - makes PASV send back an illegal IP in its 227 response
- - Send back a bad IP in the PASV response
+PASVBADIP
+ - makes PASV send back an illegal IP in its 227 response
 
 For HTTP/HTTPS:
 auth_required - if this is set and a POST/PUT is made without auth, the
@@ -173,6 +173,12 @@ output is displayed by the command, the test will be skipped and the
 Variables are substituted as in the <command> section.
 </precheck>
 
+<postcheck>
+A command line that if set gets run by the test script after the test. If
+the command exists with a non-zero status code, the test will be considered
+to have failed. Variables are substituted as in the <command> section.
+</postcheck>
+
 <tool>
 Name of tool to use instead of "curl". This tool must be built and exist
 in the libtest/ directory.
index fc31405..c9523a3 100644 (file)
@@ -81,16 +81,18 @@ TEST CASE NUMBERS
  So far, I've used this system:
 
  1   -  99   HTTP
- 100 - 199   FTP
- 200 - 299   FILE
+ 100 - 199   FTP*
+ 200 - 299   FILE*
  300 - 399   HTTPS
  400 - 499   FTPS
  500 - 599   libcurl source code tests, not using the curl command tool
  600 - 699   SCP/SFTP
+ 700 - 799   miscellanous*
 
  Since 30-apr-2003, there's nothing in the system that requires us to keep
- within these number series. Each test case now specifies its own server
- requirements, independent of test number.
+ within these number series, and those sections marked with * actually
+ contain tests for a variety of protocols. Each test case now specifies
+ its own server requirements, independent of test number.
 
 TODO:
 
index ec4b888..492eed3 100755 (executable)
@@ -1633,6 +1633,7 @@ sub singletest {
     my $dumped_core;
     my $cmdres;
 
+    # Apr 2007: precommand isn't being used and could be removed
     my @precommand= getpart("client", "precommand");
     if($precommand[0]) {
         # this is pure perl to eval!
@@ -1654,7 +1655,7 @@ sub singletest {
     }
     # run the command line we built
     if ($torture) {
-        return torture($CMDLINE,
+        $cmdres = torture($CMDLINE,
                        "$gdb --directory libtest $DBGCURL -x log/gdbcmd");
     }
     elsif($gdbthis) {
@@ -1692,6 +1693,20 @@ sub singletest {
         }
     }
 
+    # run the postcheck command
+    my @postcheck= getpart("client", "postcheck");
+    $cmd = $postcheck[0];
+    chomp $cmd;
+    subVariables \$cmd;
+    if($cmd) {
+       my $rc = system("$cmd");
+       if($rc != 0) {
+           logmsg "postcheck failure\n";
+           return 1;
+       }
+       logmsg "postchecked $cmd\n" if($verbose);
+    }
+
     # remove the special FTP command file after each test!
     unlink($FTPDCMD);
 
@@ -1700,6 +1715,11 @@ sub singletest {
         $ENV{$e}=""; # clean up
     }
 
+    # Don't bother doing verification on torture tests
+    if ($torture) {
+        return $cmdres;
+    }
+
     my @err = getpart("verify", "errorcode");
     my $errorcode = $err[0] || "0";
     my $ok="";