9f397f98fea7e1d4c5d42eba5eb4bb974ac8df7e
[tinc] / 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     sudo pkill -TERM -x "$name" || true
24     sudo pkill -KILL -x "$name" || true
25   done
26
27   sudo git clean -dfx
28   sudo chown -R build:build .
29
30   header "Running test flavor $flavor"
31
32   # CentOS 7 has OpenSSL 1.1 installed in a non-default location.
33   if test -d /usr/include/openssl11; then
34     set -- "$@" --with-openssl-include=/usr/include/openssl11
35   fi
36
37   if test -d /usr/lib64/openssl11; then
38     set -- "$@" --with-openssl-lib=/usr/lib64/openssl11
39   fi
40
41   autoreconf -fsi
42   ./configure "$@"
43   make -j"$(nproc)"
44
45   code=0
46   make check -j2 VERBOSE=1 || code=$?
47
48   sudo tar -c -z -f "/tmp/tests.$flavor.tar.gz" test/
49
50   return $code
51 }
52
53 # GitHub Checkout action supports git 2.18+.
54 # If we're running in a container with an older version,
55 # create our own local repository to make `git clean` work.
56 if ! [ -e .git ]; then
57   git init
58   git add .
59 fi
60
61 case "$1" in
62 default)
63   run_tests default ''
64   ;;
65 nolegacy)
66   run_tests nolegacy --disable-legacy-protocol
67   ;;
68 *)
69   bail "unknown test flavor $1"
70   ;;
71 esac