reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    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
#!/bin/sh

prog=$(basename $0)

# Expect to be run from the parent lit directory.
if [ ! -f setup.py ] || [ ! -d lit ]; then
    printf 1>&2 "%s: expected to be run from base lit directory\n" "$prog"
    exit 1
fi

# Parse command line arguments.
if [ "$1" = "--generate-html" ]; then
    GENERATE_HTML=1
    shift
fi

# If invoked with no arguments, run all the tests.
if [ $# = "0" ]; then
    set -- "tests"
fi

# Check that the active python has been modified to enable coverage in its
# sitecustomize.
if ! python -c \
      'import sitecustomize, sys; sys.exit("coverage" not in dir(sitecustomize))' \
      >/dev/null 2>&1; then
    printf 1>&2 "error: active python does not appear to enable coverage in its 'sitecustomize.py'\n"
    exit 1
fi

# First, remove any existing coverage data files.
rm -f tests/.coverage
find tests -name .coverage.\* -exec rm {} \;

# Next, run the tests.
lit -sv --param check-coverage=1 "$@"

# Next, move all the data files from subdirectories up.
find tests/* -name .coverage.\* -exec mv {} tests \;

# Combine all the data files.
(cd tests && python -m coverage combine)

# Finally, generate the report.
(cd tests && python -m coverage report)

# Generate the HTML report, if requested.
if [ ! -z "$GENERATE_HTML" ]; then
    (cd tests && python -m coverage html)
fi