| .\" ************************************************************************** | 
 | .\" *                                  _   _ ____  _ | 
 | .\" *  Project                     ___| | | |  _ \| | | 
 | .\" *                             / __| | | | |_) | | | 
 | .\" *                            | (__| |_| |  _ <| |___ | 
 | .\" *                             \___|\___/|_| \_\_____| | 
 | .\" * | 
 | .\" * Copyright (C) 1998 - 2022, 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 https://curl.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. | 
 | .\" * | 
 | .\" * SPDX-License-Identifier: curl | 
 | .\" * | 
 | .\" ************************************************************************** | 
 | .\" | 
 | .TH testcurl.pl 1 "May 17, 2022" "Curl 7.86.0" "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 https://curl.se/dev/builds.html | 
 |  | 
 | \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--email\fP, \fI--configure\fP and \fI--desc\fP instead. | 
 | .IP "--target=[your os]" | 
 | Specify your target environment. Recognized strings include 'vc', 'mingw32', | 
 | and \&'borland'. | 
 | .SH "INITIAL SETUP" | 
 | First you make a checkout from git (or you write a script that downloads daily | 
 | snapshots automatically, find inspiration in | 
 | https://curl.se/dev/autocurl.txt ): | 
 |  | 
 | .nf | 
 |   $ mkdir daily-curl | 
 |   $ cd daily-curl | 
 |   $ git clone https://github.com/curl/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 |