d1bfa3dc70
The script uses lcov and genhtml after running the tests to show the code coverage statistics. The script will create a coverage directory where it is run. It can be run both in and out of the source directory.
80 lines
2.1 KiB
Bash
Executable File
80 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
###############################################################################
|
|
#
|
|
# This builds xz with special CFLAGS for measuring code coverage and
|
|
# uses lcov and genhtml to create coverage reports.
|
|
#
|
|
# The current directory is used as the build directory so out-of-tree
|
|
# builds are possible. The coverage reports are written to the directory
|
|
# "coverage" under the current directory.
|
|
#
|
|
# Any options passed to this script are passed to "make" so to get
|
|
# faster builds use, for example, "-j4" as an argument to this script.
|
|
#
|
|
# Author: Jia Tan
|
|
#
|
|
# This file has been put into the public domain.
|
|
# You can do whatever you want with this file.
|
|
#
|
|
###############################################################################
|
|
|
|
set -e
|
|
|
|
COVERAGE_DIR="coverage"
|
|
|
|
# Test if lcov is installed
|
|
if ! command -v lcov > /dev/null
|
|
then
|
|
echo "Error: lcov not installed"
|
|
exit 1
|
|
fi
|
|
|
|
# Test if genhtml is installed
|
|
if ! command -v genhtml > /dev/null
|
|
then
|
|
echo "Error: genhtml not installed"
|
|
exit 1
|
|
fi
|
|
|
|
top_srcdir=$(cd -- "$(dirname -- "$0")" && cd .. && pwd)
|
|
|
|
# Run the autogen.sh script if the configure script has not been generated
|
|
if ! test -f "$top_srcdir/configure"
|
|
then
|
|
( cd "$top_srcdir" && ./autogen.sh )
|
|
fi
|
|
|
|
# Execute the configure script if the Makefile is not present
|
|
if ! test -f "Makefile"
|
|
then
|
|
"$top_srcdir/configure" \
|
|
--disable-xzdec \
|
|
--disable-lzmadec \
|
|
--disable-lzmainfo \
|
|
--disable-shared \
|
|
--enable-silent-rules \
|
|
CFLAGS="$CFLAGS --coverage --no-inline -O0"
|
|
fi
|
|
|
|
# Run the tests
|
|
make "$@" check
|
|
|
|
# Re-create the coverage directory
|
|
rm -rf "$COVERAGE_DIR"
|
|
mkdir -p "$COVERAGE_DIR/liblzma"
|
|
mkdir -p "$COVERAGE_DIR/xz"
|
|
|
|
# Run lcov with src/liblzma as the input directory and write the
|
|
# results out to the coverage directory
|
|
lcov -c -d "src/liblzma" -o "$COVERAGE_DIR/liblzma/liblzma.cov"
|
|
lcov -c -d "src/xz" -o "$COVERAGE_DIR/xz/xz.cov"
|
|
|
|
# Generate the reports
|
|
genhtml "$COVERAGE_DIR/liblzma/liblzma.cov" -o "$COVERAGE_DIR/liblzma"
|
|
genhtml "$COVERAGE_DIR/xz/xz.cov" -o "$COVERAGE_DIR/xz"
|
|
|
|
echo "Success! See:"
|
|
echo "file://$PWD/$COVERAGE_DIR/liblzma/index.html"
|
|
echo "file://$PWD/$COVERAGE_DIR/xz/index.html"
|