Commit 28dde78d authored by Dan Fandrich's avatar Dan Fandrich
Browse files

Added <postcheck> support to the test harness.

parent 37171809
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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.
+6 −4
Original line number Diff line number Diff line
@@ -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:

+21 −1
Original line number Diff line number Diff line
@@ -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="";