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 |