| Index: third_party/lit/utils/check-coverage
|
| diff --git a/third_party/lit/utils/check-coverage b/third_party/lit/utils/check-coverage
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..cded7a2921c55abd89ee4b03c674a1220f60f739
|
| --- /dev/null
|
| +++ b/third_party/lit/utils/check-coverage
|
| @@ -0,0 +1,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
|
|
|