1 = Unicorn integration test suite
3 These are all integration tests that start the server on random, unused
4 TCP ports or Unix domain sockets. They're all designed to run
5 concurrently with other tests to minimize test time, but tests may be
6 run independently as well.
8 New tests are written in Perl 5 because we need a stable language
9 to test real-world behavior and Ruby introduces incompatibilities
10 at a far faster rate than Perl 5. Perl is Ruby's older cousin, so
11 it should be easy-to-learn for Rubyists.
13 Old tests are in Bourne shell and slowly being ported to Perl 5.
17 * {Ruby 2.5.0+}[https://www.ruby-lang.org/en/]
18 * {Perl 5.14+}[https://www.perl.org/] # your distro should have it
19 * {GNU make}[https://www.gnu.org/software/make/]
20 * {curl}[https://curl.haxx.se/]
22 We do not use bashisms or any non-portable, non-POSIX constructs
23 in our shell code. We use the "pipefail" option if available and
24 mainly test with {ksh}[http://kornshell.com/], but occasionally
25 with {dash}[http://gondor.apana.org.au/~herbert/dash/] and
26 {bash}[https://www.gnu.org/software/bash/], too.
30 To run the entire test suite with 8 tests running at once:
34 To run one individual test (Perl5):
36 prove -vw t/integration.t
38 To run one individual test (shell):
40 make t0000-simple-http.sh
42 You may also increase verbosity by setting the "V" variable for
43 GNU make. To disable trapping of stdout/stderr:
47 To enable the "set -x" option in shell scripts to trace execution