Home | History | Annotate | Download | only in utils
      1 #!/bin/sh
      2 
      3 prog=$(basename $0)
      4 
      5 # Expect to be run from the parent lit directory.
      6 if [ ! -f setup.py ] || [ ! -d lit ]; then
      7     printf 1>&2 "%s: expected to be run from base lit directory\n" "$prog"
      8     exit 1
      9 fi
     10 
     11 # Parse command line arguments.
     12 if [ "$1" = "--generate-html" ]; then
     13     GENERATE_HTML=1
     14     shift
     15 fi
     16 
     17 # If invoked with no arguments, run all the tests.
     18 if [ $# = "0" ]; then
     19     set -- "tests"
     20 fi
     21 
     22 # Check that the active python has been modified to enable coverage in its
     23 # sitecustomize.
     24 if ! python -c \
     25       'import sitecustomize, sys; sys.exit("coverage" not in dir(sitecustomize))' \
     26       >/dev/null 2>&1; then
     27     printf 1>&2 "error: active python does not appear to enable coverage in its 'sitecustomize.py'\n"
     28     exit 1
     29 fi
     30 
     31 # First, remove any existing coverage data files.
     32 rm -f tests/.coverage
     33 find tests -name .coverage.\* -exec rm {} \;
     34 
     35 # Next, run the tests.
     36 lit -sv --param check-coverage=1 "$@"
     37 
     38 # Next, move all the data files from subdirectories up.
     39 find tests/* -name .coverage.\* -exec mv {} tests \;
     40 
     41 # Combine all the data files.
     42 (cd tests && python -m coverage combine)
     43 
     44 # Finally, generate the report.
     45 (cd tests && python -m coverage report)
     46 
     47 # Generate the HTML report, if requested.
     48 if [ ! -z "$GENERATE_HTML" ]; then
     49     (cd tests && python -m coverage html)
     50 fi
     51