chiark / gitweb /
a37b6aad5b056bb01f7887d4d3a4100bdb089e75
[dgit.git] / tests / run-all
1 #!/bin/bash
2 set -e
3 # convenience script for running the tests outside adt-run
4 # usage: tests/using-intree tests/run-all [-p|--progressive] [tests/tests/*]
5
6 set -o pipefail
7
8 while [ $# != 0 ]; do
9         case "$1" in
10         --progressive|-p)       shift; export DGIT_TESTS_PROGRESSIVE=y;;
11         --)                     shift; break ;;
12         -*)     echo >&2 "run-all: unknown option $1"; exit 20 ;;
13         *)                      break ;;
14         esac
15 done
16
17 ncpus=$(nproc || echo 1)
18 jcpus=-j$(( ncpus * 134 / 100 ))
19
20 if [ $# != 0 ]; then
21         set TESTSCRIPTS="$*"
22 fi
23
24 if [ "x$DGIT_TESTS_TMPDIR" != x ]; then
25         tmpdir="$PWD"
26         tmpdir="${tmpdir#/}"
27         tmpdir="${tmpdir//!/!#!}"
28         tmpdir="${tmpdir//\//!}"
29         tmpdir="$DGIT_TESTS_TMPDIR/$tmpdir"
30         rm -f tests/tmp
31         ln -ns -- "$tmpdir" tests/tmp
32 else
33         tmpdir=tests/tmp
34 fi
35
36 case "$DGIT_TESTS_PROGRESSIVE" in
37 ''|n)
38         rm -rf -- "$tmpdir"
39         ;;
40 esac
41
42 mkdir -p -- "$tmpdir"
43
44
45 export DGIT_GNUPG_STUNT_ERRLOG=$( tty -s ||: )
46
47 (
48  set -x
49  exec make $jcpus -k -f tests/Makefile "$@"
50 ) 2>&1 |tee tests/tmp/run-all.log