Created script to generate code coverage reports.
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.
This commit is contained in:
parent
86a30b0255
commit
d1bfa3dc70
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
.deps
|
.deps
|
||||||
.libs
|
.libs
|
||||||
|
*.gcda
|
||||||
|
*.gcno
|
||||||
*.la
|
*.la
|
||||||
*.lo
|
*.lo
|
||||||
*.o
|
*.o
|
||||||
|
@ -32,6 +34,8 @@ build-aux/ltmain.sh
|
||||||
build-aux/missing
|
build-aux/missing
|
||||||
build-aux/test-driver
|
build-aux/test-driver
|
||||||
|
|
||||||
|
coverage
|
||||||
|
|
||||||
/src/liblzma/liblzma.pc
|
/src/liblzma/liblzma.pc
|
||||||
/src/lzmainfo/lzmainfo
|
/src/lzmainfo/lzmainfo
|
||||||
/src/xz/xz
|
/src/xz/xz
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
#!/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"
|
Loading…
Reference in New Issue