aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2002-12-12 12:20:06 +0000
committerDaniel Stenberg <daniel@haxx.se>2002-12-12 12:20:06 +0000
commita79990465c040f3e56bca2fc5816081be0fd258b (patch)
treefd7e63c4b89b37c40c6da4cb3c8e02522891082f
parentad6bd530ac8f4484acdaf74244e3bef7ac5d3c48 (diff)
supports the new 'tool' and 'server' tags
-rwxr-xr-xtests/runtests.pl139
1 files changed, 95 insertions, 44 deletions
diff --git a/tests/runtests.pl b/tests/runtests.pl
index e061bc231..3fcc25787 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -24,6 +24,7 @@ my $CURL="../src/curl"; # what curl executable to run on the tests
my $DBGCURL=$CURL; #"../src/.libs/curl"; # alternative for debugging
my $LOGDIR="log";
my $TESTDIR="data";
+my $LIBDIR="./libtest";
my $SERVERIN="$LOGDIR/server.input"; # what curl sent the server
my $CURLLOG="$LOGDIR/curl.log"; # all command lines run
my $FTPDCMD="$LOGDIR/ftpserver.cmd"; # copy ftp server instructions here
@@ -517,6 +518,14 @@ sub singletest {
return 0; # look successful
}
+ my @codepieces = getpart("client", "tool");
+
+ my $tool="";
+ if(@codepieces) {
+ $tool = $codepieces[0];
+ chomp $tool;
+ }
+
# remove previous server output logfile
unlink($SERVERIN);
@@ -579,8 +588,15 @@ sub singletest {
}
}
- # run curl, add -v for debug information output
- my $cmdargs="$out--include -v $cmd";
+ my $cmdargs;
+ if(!$tool) {
+ # run curl, add -v for debug information output
+ $cmdargs ="$out--include -v $cmd";
+ }
+ else {
+ $cmdargs = " $cmd"; # $cmd is the command line for the test file
+ $CURLOUT = $STDOUT; # sends received data to stdout
+ }
my @stdintest = getpart("client", "stdin");
@@ -590,11 +606,20 @@ sub singletest {
$cmdargs .= " <$stdinfile";
}
- my $CMDLINE="$CURL $cmdargs >$STDOUT 2>$STDERR";
+ my $CMDLINE;
- if($verbose) {
- print "$CMDLINE\n";
+ if(!$tool) {
+ $CMDLINE="$CURL";
}
+ else {
+ $CMDLINE="$LIBDIR/$tool";
+ }
+
+ $CMDLINE .= "$cmdargs >$STDOUT 2>$STDERR";
+
+ if($verbose) {
+ print "$CMDLINE\n";
+ }
print CMDLOG "$CMDLINE\n";
@@ -653,8 +678,7 @@ sub singletest {
}
my %replyattr = getpartattr("reply", "data");
- if(!$replyattr{'nocheck'} &&
- @reply) {
+ if(!$replyattr{'nocheck'} && @reply) {
# verify the received data
my @out = loadarray($CURLOUT);
$res = compare(\@out, \@reply);
@@ -790,64 +814,91 @@ my %run;
sub serverfortest {
my ($testnum)=@_;
+ my @what;
if($testnum< 100) {
# 0 - 99 is for HTTP
- if(!$run{'http'}) {
- runhttpserver($verbose);
- $run{'http'}=$HTTPPIDFILE;
- }
+ push @what, "http";
}
elsif($testnum< 200) {
# 100 - 199 is for FTP
- if(!$run{'ftp'}) {
- runftpserver($verbose);
- $run{'ftp'}=$FTPPIDFILE;
- }
+ push @what, "ftp";
}
elsif($testnum< 300) {
# 200 - 299 is for FILE, no server!
- $run{'file'}="moo";
+ push @what, "file";
}
elsif($testnum< 400) {
# 300 - 399 is for HTTPS, two servers!
+ push @what, "http";
+ push @what, "https";
+ }
+ elsif($testnum< 500) {
+ # 400 - 499 is for FTPS, also two servers
+ push @what, "ftp";
+ push @what, "ftps";
+ }
- if(!$checkstunnel || !$ssl_version) {
- # we can't run https tests without stunnel
- # or if libcurl is SSL-less
- return 1;
+ if(!@what) {
+ # load the test case file definition
+ if(loadtest("${TESTDIR}/test${testnum}")) {
+ if($verbose) {
+ # this is not a test
+ print "$testnum doesn't look like a test case!\n";
+ }
+ return 100;
}
+ @what = getpart("client", "server");
- if(!$run{'http'}) {
- runhttpserver($verbose);
- $run{'http'}=$HTTPPIDFILE;
- }
- if(!$run{'https'}) {
- runhttpsserver($verbose);
- $run{'https'}=$HTTPSPIDFILE;
+ if(!$what[0]) {
+ warn "Test case $testnum has no server(s) specified!";
+ return 100;
}
}
- elsif($testnum< 500) {
- # 400 - 499 is for FTPS, also two servers
-
- if(!$checkstunnel || !$ssl_version) {
- # we can't run https tests without stunnel
- # or if libcurl is SSL-less
- return 1;
+ for(@what) {
+ my $what = lc($_);
+ $what =~ s/[^a-z]//g;
+ if($what eq "ftp") {
+ if(!$run{'ftp'}) {
+ runftpserver($verbose);
+ $run{'ftp'}=$FTPPIDFILE;
+ }
+ }
+ elsif($what eq "http") {
+ if(!$run{'http'}) {
+ runhttpserver($verbose);
+ $run{'http'}=$HTTPPIDFILE;
+ }
+ }
+ elsif($what eq "ftps") {
+ if(!$checkstunnel || !$ssl_version) {
+ # we can't run https tests without stunnel
+ # or if libcurl is SSL-less
+ return 1;
+ }
+ if(!$run{'ftps'}) {
+ runftpsserver($verbose);
+ $run{'ftps'}=$FTPSPIDFILE;
+ }
}
- if(!$run{'ftp'}) {
- runftpserver($verbose);
- $run{'ftp'}=$FTPPIDFILE;
+ elsif($what eq "file") {
+ # we support it but have no server!
+ }
+ elsif($what eq "https") {
+ if(!$checkstunnel || !$ssl_version) {
+ # we can't run https tests without stunnel
+ # or if libcurl is SSL-less
+ return 1;
+ }
+ if(!$run{'https'}) {
+ runhttpsserver($verbose);
+ $run{'https'}=$HTTPSPIDFILE;
+ }
}
- if(!$run{'ftps'}) {
- runftpsserver($verbose);
- $run{'ftps'}=$FTPSPIDFILE;
+ else {
+ warn "we don't support a server for $what";
}
}
- else {
- print "Bad test number, no server available\n";
- return 100;
- }
sleep 1; # give a second for the server(s) to startup
return 0; # ok
}