File: execute_tests.sh

package info (click to toggle)
scap-security-guide 0.1.76-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 110,644 kB
  • sloc: xml: 241,883; sh: 73,777; python: 32,527; makefile: 27
file content (90 lines) | stat: -rwxr-xr-x 2,008 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash

set -epu

usage() {
    printf "Usage: %s [OPTIONS] PYTHON_EXECUTABLE TESTS_ROOT TESTDIR OUTDIR [bats opts]" "${0##/}"
    printf "       %s [--help]" "${0##/}"
    printf "\nOPTIONS\n"
    printf "    --verbose\n"
    printf "    --quiet\n"
    printf "    --debug\n"
    printf "    --parallel | --no-parallel\n"
    printf "    --\n"
}

OPT_debug=0
OPT_parallel=0
if [[ -x /usr/bin/parallel ]]; then
    OPT_parallel=1
fi

OPT_verbose=1
while (( $# )); do
    case "$1" in
        --verbose) (( OPT_verbose++, 1 )); shift ;;
        --quiet) OPT_verbose=0; shift ;;
        --debug) set -x; OPT_debug=1; shift ;;

        --parallel) OPT_parallel=1; shift ;;
        --no[_-]parallel) OPT_parallel=0; shift ;;

        --help) usage; exit 2 ;;
        --) shift; break ;;

        *) break ;;
    esac
done

bats_version="$(bats -v)" || :
case "${bats_version##* }" in
    # Debian 10 v0.4.0
    # Usage: bats [-c] [-p | -t]
    ""|"0."*|"1.0."*|"1.1."*)
        OPT_parallel=0
        OPT_verbose=0
        OPT_debug=0
        ;;
    # Ubuntu 22.04
    # Error: Bad command line option '--print-output-on-failure'
    "1.2."*|"1.3."*|"1.4."*)
        OPT_verbose=0
        OPT_debug=0
        ;;
esac

PYTHON_EXECUTABLE="$1"; shift
TESTS_ROOT="$1"; shift
TESTDIR="$1"; shift
OUTDIR="$1"; shift

mkdir -p "${OUTDIR}"

bats_opts=()

if (( OPT_parallel )); then
    bats_opts+=(--jobs "$(nproc)")  # 1.2.0
fi

if (( OPT_verbose > 1 )); then
    bats_opts+=(--verbose-run)  # 1.5.0
elif (( OPT_verbose == 1 )); then
    bats_opts+=(--print-output-on-failure)  # 1.5.0
fi

if (( OPT_debug )); then
    bats_opts+=(
        --no-tempdir-cleanup  # 1.4.0
        --trace  # 1.5.0
    )
fi

rc=0
PYTHONPATH="${TESTS_ROOT}/.." ${PYTHON_EXECUTABLE} \
"${TESTS_ROOT}/../build-scripts/expand_jinja.py" --outdir "${OUTDIR}" \
    "${TESTDIR}"/*.jinja || rc=$?
if (( rc )); then
    >&2 echo "ERROR: expand_jinja.py could not create bats files"
    exit "${rc}"
fi
bats "${bats_opts[@]}" "$@" "${OUTDIR}"