.\" **************************************************************************
.\" *                                  _   _ ____  _
.\" *  Project                     ___| | | |  _ \| |
.\" *                             / __| | | | |_) | |
.\" *                            | (__| |_| |  _ <| |___
.\" *                             \___|\___/|_| \_\_____|
.\" *
.\" * Copyright (C) 1998 - 2010, 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
.\" * are also available at http://curl.haxx.se/docs/copyright.html.
.\" *
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
.\" * copies of the Software, and permit persons to whom the Software is
.\" * furnished to do so, under the terms of the COPYING file.
.\" *
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
.\" * KIND, either express or implied.
.\" *
.\" **************************************************************************
.\"
.TH testcurl.pl 1 "24 Mar 2010" "Curl 7.20.1" "testcurl"
.SH NAME
testcurl.pl \- (automatically) test curl
.SH SYNOPSIS
.B testcurl.pl [options] [dir] > output
.SH DESCRIPTION
\fItestcurl.pl\fP is the master script to use for automatic testing of curl
off git or daily snapshots. It is written for the purpose of being run from a
crontab job or similar at a regular interval. The output is suitable to be
mailed to curl-autocompile@haxx.se to be dealt with automatically (make sure
the subject includes the word "autobuild" as the mail gets silently discarded
otherwise).  The most current build status (with a reasonable backlog) will be
published on the curl site, at http://curl.haxx.se/auto/

\fIoptions\fP may be omitted. See \fI--setup\fP for what happens then.

\fIdir\fP is a curl source dir, possibly a daily snapshot one. Using this will
make testcurl.pl skip the 'buildconf' stage and thus it removes the dependency
on automake, autoconf, libtool, GNU m4 and possibly a few other things.

testcurl.pl will run 'buildconf' (or similar), run configure, build curl and
libcurl in a separate build directory and then run 'make test' to test the
fresh build.
.SH OPTIONS
.IP "--configure=[options]"
Configure options passed to configure.
.IP "--crosscompile"
This is a cross-compile. Makes \fItestcurl.pl\fP skip a few things.
.IP "--desc=[desc]"
Description of your test system. Displayed on the build summary page on the
weba site.
.IP "--email=[email]"
Set email address to report as. Displayed in the build logs on the site.
.IP "--mktarball=[command]"
Generic command to run after completed test.
.IP "--name=[name]"
Set name to report as. Displayed in the build summary on the site.
.IP "--nobuildconf"
Don't run buildconf. Useful when many builds use the same source tree, as then
only one need to do this. Also, if multiple processes run tests simultaneously
on the same source tree (like several hosts on a NFS mounted dir),
simultaneous buildconf invokes may cause problems. (Added in 7.14.1)
.IP "--nogitpull"
Don't update from git even though it is a git tree. Useful to still be able to
test even though your network is down, or similar.
.IP "--runtestopts=[options]"
Options that is passed to the runtests.pl script. Useful for disabling valgrind
by force, and similar.
.IP "--setup=[file name]"
File name to read setup from (deprecated). The old style of providing info.
If info is missing when testcurl.pl is started, it will prompt you and then
store the info in a 'setup' file, which it will look for on each invoke. Use
\fI--name\fP, \fI--emacs\fP, \fI--configure\fP and \fI--desc\fP instead.
.IP "--target=[your os]"
Specify your target environment. Recognized strings include 'vc', 'mingw32',
\&'borland' and 'netware'.
.SH "INITIAL SETUP"
First you make a checkout from git (or you write a script that downloads daily
snapshots automatically, find inspiration at
http://curl.haxx.se/auto/autocurl.txt):

.nf
  $ mkdir daily-curl
  $ cd daily-curl
  $ git clone git://github.com/bagder/curl.git
.fi

With the curl sources checked out, or downloaded, you can start testing right
away. If you want to use \fItestcurl.pl\fP without command line arguments and
to have it store and remember the config in its 'setup' file, then start it
manually now and fill in the answers to the questions it prompts you for:

.nf
  $ ./curl/tests/testcurl.pl
.fi

Now you are ready to go. If you let the script run, it will perform a full
cycle and spit out lots of output. Mail us that output as described above.
.SH "CRONTAB EXAMPLE"
The crontab could include something like this:

.nf
\# autobuild curl:
0 4 * * * cd daily-curl && ./testit.sh
.fi

Where testit.sh is a shell script that could look similar to this:

.nf
mail="mail -s autobuild curl-autocompile@haxx.se"
name="--name=whoami"
email="--email=iamme@nowhere"
desc='"--desc=supermachine Turbo 2000"'
testprog="perl ./curl/tests/testcurl.pl $name $email $desc"
opts1="--configure=--enable-debug"
opts2="--configure=--enable-ipv6"

# run first test
$testprog $opts1 | $mail

# run second test
$testprog $opts2 | $mail
