Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / t / test-exception-wrapper @ 09b88141

Historique | Voir | Annoter | Télécharger (1,89 ko)

1 e5abdeeb Lars Kruse
#!/bin/sh
2
#
3
# Run a check for a given file.  A failure is tolerated (and expected), if the filename is listed
4
# in a file containing expected failures.
5
#
6 26c29daa Lars Kruse
# Parameters:  SCRIPT_FILENAME  TEST_COMMAND [TEST_COMMAND_ARGUMENTS]
7 e5abdeeb Lars Kruse
#
8
# See EXPECTED_FAILURES_LIST_FILENAME for the filename pattern of a file, containing the relative
9
# names of all scripts, that are expected to fail.  This wrapper script will fail, if the exit
10
# status of the test does not match the expectated result (i.e. it fails but should pass or it
11
# passes while being listed in the EXPECTED_FAILURES_LIST_FILENAME file).
12
#
13
14
set -eu
15
16
[ $# -lt 2 ] && echo >&2 "Insufficient number of arguments: expecting SCRIPT_FILENAME and one or more COMMAND tokens" && exit 1
17
18
19
SCRIPT_FILENAME="$1"
20
shift
21
EXPECTED_FAILURES_LIST_FILENAME="$0.expected-failures"
22
23
REPOSITORY_DIR=$(cd "$(dirname "$0")/.." && pwd)
24
25
26
[ ! -e "$SCRIPT_FILENAME" ] && echo >&2 "Failed to find script: $SCRIPT_FILENAME" && exit 3
27
28
29
# determine, whether the script is mentioned in the exclusion file
30
relative_script_filename=$(realpath --relative-to "$REPOSITORY_DIR" "$SCRIPT_FILENAME")
31
if grep --quiet --line-regexp --fixed-strings --no-messages "$relative_script_filename" "$EXPECTED_FAILURES_LIST_FILENAME"; then
32
    is_expected_to_fail=1
33
else
34
    is_expected_to_fail=0
35
fi
36
37
# check the returncode of the test
38
if "$@" "$SCRIPT_FILENAME"; then
39
    has_failed=0
40
else
41
    has_failed=1
42
fi
43
44
45
# complain, if the result did not meet our expectation
46
if [ "$is_expected_to_fail" = "$has_failed" ]; then
47
    # the check returned the expected result
48
    exit 0
49
elif [ "$has_failed" = "1" ]; then
50
    echo >&2 "ERROR: the script '$SCRIPT_FILENAME' should pass the test, but it failed"
51
    exit 4
52
else
53 3716783a Lars Kruse
    echo >&2 "ERROR: the script '$SCRIPT_FILENAME' was expected to fail the test, but it succeeded. Please remove this filename from the list of exepected failures ($EXPECTED_FAILURES_LIST_FILENAME)."
54 e5abdeeb Lars Kruse
    exit 5
55
fi