diff options
| -rw-r--r-- | tests/FILEFORMAT | 2 | ||||
| -rw-r--r-- | tests/README | 6 | ||||
| -rw-r--r-- | tests/data/test172 | 6 | ||||
| -rw-r--r-- | tests/data/test46 | 18 | ||||
| -rw-r--r-- | tests/data/test53 | 6 | ||||
| -rw-r--r-- | tests/ftpserver.pl | 1 | ||||
| -rwxr-xr-x | tests/runtests.pl | 179 | 
7 files changed, 132 insertions, 86 deletions
| diff --git a/tests/FILEFORMAT b/tests/FILEFORMAT index 9ee766f0d..90c3f9117 100644 --- a/tests/FILEFORMAT +++ b/tests/FILEFORMAT @@ -283,9 +283,9 @@ have a text/binary difference.  </stdout>  <file name="log/filename" [mode="text"]>  The file's contents must be identical to this after the test is complete. -  Use the mode="text" attribute if the output is in text mode on platforms that  have a text/binary difference. +Variables are substituted as in the <command> section.  </file>  <stripfile>  One perl op per line that operates on the file before being compared. This is diff --git a/tests/README b/tests/README index 79be8eb35..0b21a6497 100644 --- a/tests/README +++ b/tests/README @@ -109,6 +109,12 @@ Code coverage:    The text mode tool gcov may also be used, but it doesn't handle object files    in more than one directory very well. +Remote testing: +  The runtests.pl script provides some hooks to allow curl to be tested on a +  machine where perl can not be run.  The test framework in this case runs on +  a workstation where perl is available, while curl itself is run on a remote +  system using ssh or some other remote execution method.  See the comments at +  the beginning of runtests.pl for details.  TEST CASE NUMBERS diff --git a/tests/data/test172 b/tests/data/test172 index 292104deb..0fa6dfd5e 100644 --- a/tests/data/test172 +++ b/tests/data/test172 @@ -26,9 +26,9 @@ http://%HOSTIP:%HTTPPORT/we/want/172 -b log/jar172.txt -b "tool=curl; name=fool"  # http://curlm.haxx.se/rfc/cookie_spec.html  # This file was generated by libcurl! Edit at your own risk. -.127.0.0.1	TRUE	/silly/	FALSE	0	ismatch	this -.127.0.0.1	TRUE	/	FALSE	0	partmatch	present -127.0.0.1	FALSE	/we/want/	FALSE	1391252187	nodomain	value +.%HOSTIP	TRUE	/silly/	FALSE	0	ismatch	this +.%HOSTIP	TRUE	/	FALSE	0	partmatch	present +%HOSTIP	FALSE	/we/want/	FALSE	1391252187	nodomain	value  </file>  </client> diff --git a/tests/data/test46 b/tests/data/test46 index 4f380ceee..bc0821904 100644 --- a/tests/data/test46 +++ b/tests/data/test46 @@ -50,8 +50,8 @@ TZ=GMT  www.fake.come	FALSE	/	FALSE	1022144953	cookiecliente	si  www.loser.com	FALSE	/	FALSE	1139150993	UID	99 -127.0.0.1	FALSE	/	FALSE	1439150993	mooo	indeed -127.0.0.1	FALSE	/	FALSE	0	empty	 +%HOSTIP	FALSE	/	FALSE	1439150993	mooo	indeed +%HOSTIP	FALSE	/	FALSE	0	empty	  </file>  </client> @@ -74,13 +74,13 @@ Cookie: empty=; mooo=indeed  www.fake.come	FALSE	/	FALSE	1022144953	cookiecliente	si  www.loser.com	FALSE	/	FALSE	1139150993	UID	99 -127.0.0.1	FALSE	/	FALSE	1439150993	mooo	indeed -127.0.0.1	FALSE	/	FALSE	0	empty	 -127.0.0.1	FALSE	/	FALSE	2054030187	ckyPersistent	permanent -127.0.0.1	FALSE	/	FALSE	0	ckySession	temporary -127.0.0.1	FALSE	/	FALSE	0	ASPSESSIONIDQGGQQSJJ	GKNBDIFAAOFDPDAIEAKDIBKE -127.0.0.1	FALSE	/	FALSE	0	justaname	 -127.0.0.1	FALSE	/want/	FALSE	0	simplyhuge	zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +%HOSTIP	FALSE	/	FALSE	1439150993	mooo	indeed +%HOSTIP	FALSE	/	FALSE	0	empty	 +%HOSTIP	FALSE	/	FALSE	2054030187	ckyPersistent	permanent +%HOSTIP	FALSE	/	FALSE	0	ckySession	temporary +%HOSTIP	FALSE	/	FALSE	0	ASPSESSIONIDQGGQQSJJ	GKNBDIFAAOFDPDAIEAKDIBKE +%HOSTIP	FALSE	/	FALSE	0	justaname	 +%HOSTIP	FALSE	/want/	FALSE	0	simplyhuge	zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz  </file>  </verify>  </testcase> diff --git a/tests/data/test53 b/tests/data/test53 index 226d258d1..0ced2d237 100644 --- a/tests/data/test53 +++ b/tests/data/test53 @@ -32,9 +32,9 @@ HTTP, junk session cookies  %HOSTIP:%HTTPPORT/want/53 -b log/injar53 -j  </command>  <file name="log/injar53"> -127.0.0.1	FALSE	/	FALSE	2139150993	mooo	indeed -127.0.0.1	FALSE	/	FALSE	0		moo1	indeed -127.0.0.1	FALSE	/	FALSE	1		moo2	indeed +%HOSTIP	FALSE	/	FALSE	2139150993	mooo	indeed +%HOSTIP	FALSE	/	FALSE	0		moo1	indeed +%HOSTIP	FALSE	/	FALSE	1		moo2	indeed  </file>  </client> diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl index c5268ca13..c98b752ae 100644 --- a/tests/ftpserver.pl +++ b/tests/ftpserver.pl @@ -112,6 +112,7 @@ do {      }      elsif($ARGV[0] eq "--addr") {          $listenaddr = $ARGV[1]; +	$listenaddr =~ s/^\[(.*)\]$/\1/;          shift @ARGV;      }  } while(shift @ARGV); diff --git a/tests/runtests.pl b/tests/runtests.pl index cfc9bc5b0..ef73dad97 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -25,18 +25,33 @@  # Experimental hooks are available to run tests remotely on machines that  # are able to run curl but are unable to run the test harness.    # The following sections need to be modified: +#  #  $HOSTIP, $HOST6IP - Set to the address of the host running the test suite  #  $CLIENTIP, $CLIENT6IP - Set to the address of the host running curl -#  checktestcmd - Modify to check the remote system's PATH (only needed -#    if -g is given, or -n is NOT given) -#  runcurl - Modify to copy all the files in the log/ directory to the -#    system running curl, run the given command remotely and save the -#    return code, then copy all the files from the remote system's log/ -#    directory back to the host running the test suite.  This can be -#    done a few ways, such as using scp & ssh, or rsync & telnet. -# Note that even with these changes a number of tests will still fail -# (mainly to do with cookies or authentication) due to hard-coded -# addresses within various protocol fields. +#  runclient, runclientoutput - Modify to copy all the files in the log/ +#    directory to the system running curl, run the given command remotely +#    and save the return code or returned stdout (respectively), then +#    copy all the files from the remote system's log/ directory back to +#    the host running the test suite.  This can be done a few ways, such +#    as using scp & ssh, rsync & telnet, or using a NFS shared directory +#    and ssh. +# +# 'make && make test' needs to be done on both machines before making the +# above changes and running runtests.pl manually.  In the shared NFS case, +# the contents of the tests/server/ directory must be from the host +# running the test suite, while the rest must be from the host running curl. +# +# Note that even with these changes a number of tests will still fail (mainly +# to do with cookies, those that set environment variables, or those that +# do more than touch the file system in a <precheck> or <postcheck> +# section). These can be added to the $TESTCASES line below, +# e.g. $TESTCASES="!8 !31 !63..." +# +# Finally, to properly support -g and -n, checktestcmd needs to change +# to check the remote system's PATH, and the places in the code where +# the curl binary is read directly to determine its type also need to be +# fixed. As long as the -g option is never given, and the -n is always +# given, this won't be a problem.  # These should be the only variables that might be needed to get edited: @@ -118,41 +133,17 @@ my $memdump="$LOGDIR/memdump";  # the path to the script that analyzes the memory debug output file:  my $memanalyze="$perl $srcdir/memanalyze.pl"; -my $stunnel = checkcmd("stunnel4") || checkcmd("stunnel"); -my $valgrind = checktestcmd("valgrind"); -my $valgrind_logfile="--logfile"; +my $pwd;          # current working directory +chomp($pwd = `pwd`); +  my $start;  my $forkserver=0;  my $ftpchecktime; # time it took to verify our test FTP server +my $stunnel = checkcmd("stunnel4") || checkcmd("stunnel"); +my $valgrind = checktestcmd("valgrind"); +my $valgrind_logfile="--logfile";  my $valgrind_tool; -if($valgrind) { -    # since valgrind 2.1.x, '--tool' option is mandatory -    # use it, if it is supported by the version installed on the system -    runcurl("valgrind --help 2>&1 | grep -- --tool > /dev/null 2>&1"); -    if (($? >> 8)==0) { -        $valgrind_tool="--tool=memcheck "; -    } -    open(C, "<$CURL"); -    my $l = <C>; -    if($l =~ /^\#\!/) { -        # The first line starts with "#!" which implies a shell-script. -        # This means libcurl is built shared and curl is a wrapper-script -        # Disable valgrind in this setup -        $valgrind=0; -    } -    close(C); - -    # valgrind 3 renamed the --logfile option to --log-file!!! -    my $ver=`valgrind --version`; -    # cut off all but digits and dots -    $ver =~ s/[^0-9.]//g; - -    if($ver >= 3) { -        $valgrind_logfile="--log-file"; -    } -} -  my $gdb = checktestcmd("gdb");  my $ssl_version; # set if libcurl is built with SSL support @@ -194,8 +185,6 @@ my $keepoutfiles; # keep stdout and stderr files after tests  my $listonly;     # only list the tests  my $postmortem;   # display detailed info about failed tests -my $pwd;          # current working directory -  my %run;	  # running server  # torture test variables @@ -219,8 +208,6 @@ sub logmsg {      }  } -chomp($pwd = `pwd`); -  # get the name of the current user  my $USER = $ENV{USER};	# Linux  if (!$USER) { @@ -371,14 +358,32 @@ sub checktestcmd {  }  ####################################################################### -# Run the application under test +# Run the application under test and return its return code  # -sub runcurl { +sub runclient {      my ($cmd)=@_;      return system($cmd); + +# This is one way to test curl on a remote machine +#    my $out = system("ssh $CLIENTIP cd \'$pwd\' \\; \'$cmd\'"); +#    sleep 2;	# time to allow the NFS server to be updated +#    return $out;  }  ####################################################################### +# Run the application under test and return its stdout +# +sub runclientoutput { +    my ($cmd)=@_; +    return `$cmd`; + +# This is one way to test curl on a remote machine +#    my @out = `ssh $CLIENTIP cd \'$pwd\' \\; \'$cmd\'`; +#    sleep 2;	# time to allow the NFS server to be updated +#    return @out; + } + +#######################################################################  # Memory allocation test and failure torture testing.  #  sub torture { @@ -389,7 +394,7 @@ sub torture {      unlink($memdump);      # First get URL from test server, ignore the output/result -    runcurl($testcmd); +    runclient($testcmd);      logmsg " CMD: $testcmd\n" if($verbose); @@ -430,10 +435,10 @@ sub torture {          my $ret;          if($gdbthis) { -            runcurl($gdbline) +            runclient($gdbline)          }          else { -            $ret = runcurl($testcmd); +            $ret = runclient($testcmd);          }          # Now clear the variable again @@ -539,7 +544,7 @@ sub verifyhttp {      # verify if our/any server is running on this port      logmsg "CMD; $cmd\n" if ($verbose); -    my $res = runcurl($cmd); +    my $res = runclient($cmd);      $res >>= 8; # rotate the result      my $data; @@ -591,7 +596,7 @@ sub verifyftp {      }      my $cmd="$CURL -m$server_response_maxtime --silent -vg $extra\"$proto://$ip:$port/verifiedserver\" 2>log/verifyftp";      # check if this is our server running on this port: -    my @data=`$cmd`; +    my @data=runclientoutput($cmd);      logmsg "RUN: $cmd\n" if($verbose);      my $line; @@ -826,13 +831,17 @@ sub runftpserver {      # start our server:      my $flag=$debugprotocol?"-v ":"";      $flag .= "-s \"$srcdir\" "; +    my $addr;      if($id) {          $flag .="--id $id ";      }      if($ipv6) {          $flag .="--ipv6 "; +        $addr = $HOST6IP; +    } else { +        $addr = $HOSTIP;      } -    $cmd="$perl $srcdir/ftpserver.pl --pidfile $pidfile $flag --port $port"; +    $cmd="$perl $srcdir/ftpserver.pl --pidfile $pidfile $flag --port $port --addr \"$addr\"";      unlink($pidfile); @@ -1144,7 +1153,7 @@ sub checksystem {      unlink($curlverout);      unlink($curlvererr); -    $versretval = runcurl($versioncmd); +    $versretval = runclient($versioncmd);      $versnoexec = $!;      open(VERSOUT, "<$curlverout"); @@ -1334,8 +1343,8 @@ sub checksystem {      # always available      $has_crypto=1; -    my $hostname=`hostname`; -    my $hosttype=`uname -a`; +    my $hostname=join(' ', runclientoutput("hostname")); +    my $hosttype=join(' ', runclientoutput("uname -a"));      logmsg ("********* System characteristics ******** \n",      "* $curl\n", @@ -1768,11 +1777,11 @@ sub singletest {                         "$gdb --directory libtest $DBGCURL -x log/gdbcmd");      }      elsif($gdbthis) { -        runcurl("$gdb --directory libtest $DBGCURL -x log/gdbcmd"); +        runclient("$gdb --directory libtest $DBGCURL -x log/gdbcmd");          $cmdres=0; # makes it always continue after a debugged run      }      else { -        $cmdres = runcurl("$CMDLINE"); +        $cmdres = runclient("$CMDLINE");          my $signal_num  = $cmdres & 127;          $dumped_core = $cmdres & 128; @@ -1797,7 +1806,7 @@ sub singletest {              open(GDBCMD, ">log/gdbcmd2");              print GDBCMD "bt\n";              close(GDBCMD); -            runcurl("$gdb --directory libtest -x log/gdbcmd2 -batch $DBGCURL core "); +            runclient("$gdb --directory libtest -x log/gdbcmd2 -batch $DBGCURL core ");       #       unlink("log/gdbcmd2");          }      } @@ -1808,7 +1817,7 @@ sub singletest {      chomp $cmd;      subVariables \$cmd;      if($cmd) { -	my $rc = runcurl("$cmd"); +	my $rc = runclient("$cmd");  	if($rc != 0) {  	    logmsg "postcheck failure\n";  	    return 1; @@ -1958,7 +1967,7 @@ sub singletest {      my @outfile=getpart("verify", "file");      if(@outfile) { -        # we're supposed to verify a dynamicly generated file! +        # we're supposed to verify a dynamically generated file!          my %hash = getpartattr("verify", "file");          my $filename=$hash{'name'}; @@ -1987,6 +1996,8 @@ sub singletest {              }          } +        @outfile = fixarray(@outfile); +          $res = compare("output", \@generated, \@outfile);          if($res) {              return 1; @@ -2498,23 +2509,51 @@ if($valgrind) {      # we have found valgrind on the host, use it      # verify that we can invoke it fine -    my $code = runcurl("valgrind >/dev/null 2>&1"); +    my $code = runclient("valgrind >/dev/null 2>&1");      if(($code>>8) != 1) {          #logmsg "Valgrind failure, disable it\n";          undef $valgrind; +    } else { + +	# since valgrind 2.1.x, '--tool' option is mandatory +	# use it, if it is supported by the version installed on the system +	runclient("valgrind --help 2>&1 | grep -- --tool > /dev/null 2>&1"); +	if (($? >> 8)==0) { +	    $valgrind_tool="--tool=memcheck "; +	} +	open(C, "<$CURL"); +	my $l = <C>; +	if($l =~ /^\#\!/) { +	    # The first line starts with "#!" which implies a shell-script. +	    # This means libcurl is built shared and curl is a wrapper-script +	    # Disable valgrind in this setup +	    $valgrind=0; +	} +	close(C); + +	# valgrind 3 renamed the --logfile option to --log-file!!! +	my $ver=join(' ', runclientoutput("valgrind --version")); +	# cut off all but digits and dots +	$ver =~ s/[^0-9.]//g; + +	if($ver >= 3) { +	    $valgrind_logfile="--log-file"; +	}      }  } -# open the executable curl and read the first 4 bytes of it -open(CHECK, "<$CURL"); -my $c; -sysread CHECK, $c, 4; -close(CHECK); -if($c eq "#! /") { -    # A shell script. This is typically when built with libtool, -    $libtool = 1; -    $gdb = "libtool --mode=execute gdb"; +if ($gdbthis) { +    # open the executable curl and read the first 4 bytes of it +    open(CHECK, "<$CURL"); +    my $c; +    sysread CHECK, $c, 4; +    close(CHECK); +    if($c eq "#! /") { +	# A shell script. This is typically when built with libtool, +	$libtool = 1; +	$gdb = "libtool --mode=execute gdb"; +    }  }  $HTTPPORT =  $base + 0; # HTTP server port | 
