aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2007-04-23 22:58:45 +0000
committerDan Fandrich <dan@coneharvesters.com>2007-04-23 22:58:45 +0000
commit28dde78dde21f20ab5ee491455828c3cf338ad5c (patch)
tree2c57b0306afaeee9379a1d3c48f344e41a0adc28
parent37171809f67ae29adb9a5e7f64861d483049d86f (diff)
Added <postcheck> support to the test harness.
-rw-r--r--tests/FILEFORMAT10
-rw-r--r--tests/README10
-rwxr-xr-xtests/runtests.pl22
3 files changed, 35 insertions, 7 deletions
diff --git a/tests/FILEFORMAT b/tests/FILEFORMAT
index 3c21be195..d0cb8b44e 100644
--- a/tests/FILEFORMAT
+++ b/tests/FILEFORMAT
@@ -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.
diff --git a/tests/README b/tests/README
index fc31405e7..c9523a382 100644
--- a/tests/README
+++ b/tests/README
@@ -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:
diff --git a/tests/runtests.pl b/tests/runtests.pl
index ec4b888ac..492eed392 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -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="";