diff options
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/testcurl.pl | 160 |
1 files changed, 110 insertions, 50 deletions
diff --git a/tests/testcurl.pl b/tests/testcurl.pl index 272c7467a..9fd0bab5a 100755 --- a/tests/testcurl.pl +++ b/tests/testcurl.pl @@ -6,7 +6,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al. +# Copyright (C) 1998 - 2005, Daniel Stenberg, <daniel@haxx.se>, et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -34,25 +34,35 @@ # curl site, at http://curl.haxx.se/auto/ # USAGE: -# testcurl.pl [--target=your_os] [curl-daily-name] > output +# testcurl.pl [options] [curl-daily-name] > output -# Updated: -# v1.7 22-Jun-04 - added --target option for other platform targets. -# v1.2 8-Mar-04 - rewritten in perl -# v1.1 6-Nov-03 - to take an optional parameter, the name of a daily-build -# directory. If present, build from that directory, otherwise -# perform a normal CVS build. +# Options: +# +# --configure=[options] Configure options +# --crosscompile This is a crosscompile +# --desc=[desc] Description of your test system +# --email=[email] Set email address to report as +# --mktarball=[command] Command to run after completed test +# --name=[name] Set name to report as +# --nocvsup Don't update from CVS even though it is a CVS tree +# --setup=[file name] File name to read setup from (deprecated) +# --target=[your os] Specify your target environment. +# +# if [curl-daily-name] is omitted, a 'curl' CVS directory is assumed. +# use strict; use Cwd; # Turn on warnings (equivalent to -w, which can't be used with /usr/bin/env) -BEGIN { $^W = 1; } +#BEGIN { $^W = 1; } use vars qw($version $fixed $infixed $CURLDIR $CVS $pwd $build $buildlog - $buildlogname $gnulikebuild $targetos $confsuffix $binext $libext); -use vars qw($name $email $desc $confopts $setupfile $mktarball); + $buildlogname $configurebuild $targetos $confsuffix $binext + $libext); +use vars qw($name $email $desc $confopts $setupfile $mktarball $nocvsup + $crosscompile); # version of this script $version='$Revision$'; @@ -62,44 +72,75 @@ $fixed=0; # or if we got a specific target option or setup file option. $CURLDIR="curl"; $CVS=1; -$targetos = ''; $setupfile = 'setup'; -$mktarball = ''; while ($ARGV[0]) { if ($ARGV[0] =~ /--target=/) { $targetos = (split(/=/, shift @ARGV))[1]; - } elsif ($ARGV[0] =~ /--setup=/) { + } + elsif ($ARGV[0] =~ /--setup=/) { $setupfile = (split(/=/, shift @ARGV))[1]; - } elsif ($ARGV[0] =~ /--mktarball=/) { + } + elsif ($ARGV[0] =~ /--mktarball=/) { $mktarball = (split(/=/, shift @ARGV))[1]; - } else { + } + elsif ($ARGV[0] =~ /--name=/) { + $name = (split(/=/, shift @ARGV))[1]; + } + elsif ($ARGV[0] =~ /--email=/) { + $email = (split(/=/, shift @ARGV))[1]; + } + elsif ($ARGV[0] =~ /--desc=/) { + $desc = (split(/=/, shift @ARGV))[1]; + } + elsif ($ARGV[0] =~ /--configure=/) { + $confopts = (split(/=/, shift @ARGV))[1]; + } + elsif ($ARGV[0] =~ /--nocvsup/) { + $nocvsup=1; + shift @ARGV; + } + elsif ($ARGV[0] =~ /--crosscompile/) { + $crosscompile=1; + shift @ARGV; + } + else { $CURLDIR=shift @ARGV; $CVS=0; } } # Do the platform-specific stuff here -$gnulikebuild = 1; +$configurebuild = 1; $confsuffix = ''; $binext = ''; $libext = '.la'; # .la since both libcurl and libcares are made with libtool -if ($^O eq 'MSWin32' || $targetos ne '') { - $gnulikebuild = 0; - if ($targetos eq '') { +if ($^O eq 'MSWin32' || $targetos) { + if (!$targetos) { # If no target defined on Win32 lets assume vc $targetos = 'vc'; } if ($targetos =~ /vc/ || $targetos =~ /mingw32/ || $targetos =~ /borland/) { - $confsuffix = '-win32'; $binext = '.exe'; $libext = '.lib' if ($targetos =~ /vc/ || $targetos =~ /borland/); $libext = '.a' if ($targetos =~ /mingw32/); - } elsif ($targetos =~ /netware/) { + } + elsif ($targetos =~ /netware/) { $binext = '.nlm'; $libext = '.lib'; } } +if ($^O eq 'MSWin32') { + + # Set these things only when building ON Windows, not when simply building + # FOR Windows since we might be cross-compiling on another system. Non- + # Windows builds still default to configure-style builds with no confsuffix. + + $configurebuild = 0; + $confsuffix = '-win32'; +} + + $ENV{LANG}="C"; sub rmtree($) { @@ -192,22 +233,22 @@ if (!$confopts) { print "examples: --with-ssl --enable-debug --enable-ipv6 --with-krb4\n"; $confopts = <>; chomp $confopts; - $fixed=4; } } if ($fixed < 4) { - open(F, ">$setupfile") or die; - print F "name='$name'\n"; - print F "email='$email'\n"; - print F "desc='$desc'\n"; - print F "confopts='$confopts'\n"; - print F "fixed='$fixed'\n"; - close(F); + $fixed=4; + open(F, ">$setupfile") or die; + print F "name='$name'\n"; + print F "email='$email'\n"; + print F "desc='$desc'\n"; + print F "confopts='$confopts'\n"; + print F "fixed='$fixed'\n"; + close(F); } -logit "STARTING HERE"; # first line logged +logit "STARTING HERE"; # first line logged, for scripts to trigger on logit "NAME = $name"; logit "EMAIL = $email"; logit "DESC = $desc"; @@ -216,7 +257,7 @@ logit "CFLAGS = ".$ENV{CFLAGS}; logit "LDFLAGS = ".$ENV{LDFLAGS}; logit "CC = ".$ENV{CC}; logit "target = ".$targetos; -logit "version = $version"; +logit "version = $version"; # script version logit "date = ".(scalar gmtime)." UTC"; # Make $pwd to become the path without newline. We'll use that in order to cut @@ -271,7 +312,13 @@ if ($CVS) { sub cvsup() { # update quietly to the latest CVS logit "run cvs up"; - system("cvs -Q up -dP 2>&1"); + if($nocvsup) { + logit "Skipping CVS update (--nocvsup)"; + return 1; + } + else { + system("cvs -Q up -dP 2>&1"); + } $cvsstat=$?; @@ -299,7 +346,7 @@ if ($CVS) { unlink "configure"; unlink "autom4te.cache"; - if ($gnulikebuild) { + if ($configurebuild) { # generate the build files logit "invoke buildconf, but filter off the silly aclocal warnings"; open(F, "./buildconf 2>&1 |") or die; @@ -314,7 +361,8 @@ if ($CVS) { if (grepfile("^buildconf: OK", $buildlog)) { logit "buildconf was successful"; - } else { + } + else { mydie "buildconf was NOT successful"; } @@ -333,12 +381,13 @@ if ($CVS) { chdir ".."; } - } else { - logit "buildconf was successful (dummy message)"; + } + else { + logit "buildconf was successful (dummy message)"; } } -if ($gnulikebuild) { +if ($configurebuild) { if (-f "configure") { logit "configure created"; } else { @@ -351,7 +400,7 @@ if ($gnulikebuild) { # change to build dir chdir "$pwd/$build"; -if ($gnulikebuild) { +if ($configurebuild) { # run configure script print `../$CURLDIR/configure $confopts 2>&1`; @@ -364,7 +413,8 @@ if ($gnulikebuild) { if (($^O eq 'MSWin32') && ($targetos !~ /netware/)) { system("xcopy /s /q ..\\$CURLDIR ."); system("buildconf.bat"); - } elsif (($^O eq 'linux') || ($targetos =~ /netware/)) { + } + elsif (($^O eq 'linux') || ($targetos =~ /netware/)) { system("cp -afr ../$CURLDIR/* ."); system("cp -af ../$CURLDIR/Makefile.dist Makefile"); system("make -i -C lib -f Makefile.$targetos prebuild"); @@ -414,21 +464,24 @@ if (grepfile("define USE_ARES", "lib/config$confsuffix.h")) { } logit "run make"; -if ($gnulikebuild) { +if ($configurebuild) { open(F, "make -i 2>&1 |") or die; while (<F>) { s/$pwd//g; print; } close(F); -} else { +} +else { if ($^O eq 'MSWin32') { if ($targetos =~ /vc/) { open(F, "nmake -i $targetos|") or die; - } else { + } + else { open(F, "make -i $targetos |") or die; } - } else { + } + else { open(F, "make -i $targetos 2>&1 |") or die; } while (<F>) { @@ -440,26 +493,29 @@ if ($gnulikebuild) { if (-f "lib/libcurl$libext") { logit "lib/libcurl was created fine (libcurl$libext)"; -} else { +} +else { logit "lib/libcurl was not created (libcurl$libext)"; } if (-f "src/curl$binext") { logit "src/curl was created fine (curl$binext)"; -} else { +} +else { mydie "src/curl was not created (curl$binext)"; } -if ($targetos ne '' && $targetos =~ /netware/) { +if ($targetos =~ /netware/) { if (-f '../../curlver') { system('../../curlver'); } -} else { +} +elsif(!$crosscompile) { logit "display curl$binext --version output"; system("./src/curl$binext --version"); } -if ($gnulikebuild) { +if ($configurebuild && !$crosscompile) { logit "run make test-full"; open(F, "make test-full 2>&1 |") or die; open(LOG, ">$buildlog") or die; @@ -483,7 +539,11 @@ if ($gnulikebuild) { logit "the tests were successful!"; } } else { - print "TESTDONE: 1 tests out of 0 (dummy message)\n"; # dummy message to feign success + # dummy message to feign success + if($crosscompile) { + logit "cross-compiling, can't run tests"; + } + print "TESTDONE: 1 tests out of 0 (dummy message)\n"; } # create a tarball if we got that option. |