74bb8bd62a9f28c525cb8d35b4a62cb211472bd3
[tinc] / .github / workflows / test / run.sh
1 #!/bin/sh
2
3 set -eu
4
5 bail() {
6   echo >&2 "@"
7   exit 1
8 }
9
10 header() {
11   echo '################################################################################'
12   echo "# $*"
13   echo '################################################################################'
14 }
15
16 run_tests() {
17   flavor="$1"
18   shift
19
20   header "Cleaning up leftovers from previous runs"
21
22   for name in tinc tincd; do
23     pkill -TERM -x "$name" || true
24     pkill -KILL -x "$name" || true
25   done
26
27   git clean -dfx
28
29   header "Running test flavor $flavor"
30
31   autoreconf -fsi
32   ./configure "$@"
33   make -j"$(nproc)"
34
35   code=0
36   make check -j2 VERBOSE=1 || code=$?
37
38   tar -c -z -f "/tmp/tests.$flavor.tar.gz" test/
39
40   return $code
41 }
42
43 # GitHub Checkout action supports git 2.18+.
44 # If we're running in a container with an older version,
45 # create our own local repository to make `git clean` work.
46 if ! [ -e .git ]; then
47   git init
48   git add .
49 fi
50
51 case "$1" in
52 default)
53   run_tests default ''
54   ;;
55 nolegacy)
56   run_tests nolegacy --disable-legacy-protocol
57   ;;
58 *)
59   bail "unknown test flavor $1"
60   ;;
61 esac