GitHub CI: change build system to meson
[tinc] / .ci / test / run.sh
1 #!/bin/sh
2
3 set -eux
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 "${USER:-$(whoami)}" .
29
30   mkdir -p sanitizer /tmp/logs
31
32   header "Running test flavor $flavor"
33
34   ./.ci/build.sh "$@"
35
36   if [ "${HOST:-}" = mingw ]; then
37     echo >&2 "Integration tests cannot run under wine, skipping"
38     return 0
39   fi
40
41   code=0
42   meson test -C build --verbose || code=$?
43
44   sudo tar -c -z -f "/tmp/logs/tests.$flavor.tar.gz" build/ sanitizer/
45
46   return $code
47 }
48
49 case "$(uname -s)" in
50 MINGW* | Darwin) sudo() { "$@"; } ;;
51 esac
52
53 flavor=$1
54 shift
55
56 case "$flavor" in
57 default)
58   run_tests default "$@"
59   ;;
60 nolegacy)
61   run_tests nolegacy -Dcrypto=nolegacy "$@"
62   ;;
63 gcrypt)
64   run_tests gcrypt -Dcrypto=gcrypt "$@"
65   ;;
66 openssl3)
67   if [ -d /opt/ssl3 ]; then
68     run_tests openssl3 -Dpkg_config_path=/opt/ssl3/lib64/pkgconfig "$@"
69   else
70     echo >&2 "OpenSSL 3 not installed, skipping test"
71   fi
72   ;;
73 *)
74   bail "unknown test flavor $1"
75   ;;
76 esac