mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Add support for sending data to coveralls with lcov_html.sh via Cirrus
This commit is contained in:
parent
66eaf9c7cc
commit
e2053551cd
5 changed files with 128 additions and 21 deletions
|
@ -7,28 +7,96 @@
|
|||
# This depends on lcov to run.
|
||||
|
||||
function die {
|
||||
echo "$@"
|
||||
exit 1
|
||||
echo "$@"
|
||||
exit 1
|
||||
}
|
||||
function finish {
|
||||
rm -rf "$TMP"
|
||||
rm -rf "$TMP"
|
||||
}
|
||||
function verify_run {
|
||||
if bash -c "$1" > /dev/null 2>&1; then
|
||||
echo ${2:-"ok"}
|
||||
else
|
||||
die ${3:-"error, abort"}
|
||||
fi
|
||||
if bash -c "$1" > /dev/null 2>&1; then
|
||||
echo ${2:-"ok"}
|
||||
else
|
||||
die ${3:-"error, abort"}
|
||||
fi
|
||||
}
|
||||
trap finish EXIT
|
||||
trap finish EXIT
|
||||
|
||||
HTML_REPORT=1
|
||||
COVERALLS_REPO_TOKEN=""
|
||||
COVERAGE_HTML_DIR=""
|
||||
|
||||
function usage {
|
||||
usage="\
|
||||
Usage: $0 <options>
|
||||
|
||||
Generate coverage data for the Zeek code. This uses data generated during btest,
|
||||
so those should be run prior to calling this script. By default, this script
|
||||
generates an HTML report in the coverage-html directory in the root of the Zeek
|
||||
repo.
|
||||
|
||||
Options:
|
||||
--help Display this output.
|
||||
--html DIR This is the default mode, but this argument can be passed
|
||||
to make it explicit. It also can be used to pass an optional
|
||||
destination directory for the HTML output.
|
||||
--coveralls TOKEN Report coverage data to Coveralls.io using the specified
|
||||
repo token. Enabling this option disables the HTML report.
|
||||
This option requires the coveralls-lcov Ruby gem to be
|
||||
installed.
|
||||
"
|
||||
|
||||
echo "${usage}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
while (( "$#" )); do
|
||||
case "$1" in
|
||||
--html)
|
||||
HTML_REPORT=1
|
||||
if [ ${#2} -eq 0 ]; then
|
||||
COVERAGE_HTML_DIR="coverage-html"
|
||||
shift 1
|
||||
else
|
||||
COVERAGE_HTML_DIR=$2
|
||||
shift 2
|
||||
fi
|
||||
;;
|
||||
--coveralls)
|
||||
if [ ${#2} -eq 0 ]; then
|
||||
echo "ERROR: Coveralls repo token must be passed with --coveralls argument."
|
||||
echo
|
||||
usage
|
||||
fi
|
||||
|
||||
HTML_REPORT=0
|
||||
COVERALLS_REPO_TOKEN=$2
|
||||
shift 2
|
||||
;;
|
||||
--help)
|
||||
usage
|
||||
shift 1
|
||||
;;
|
||||
*)
|
||||
COVERAGE_HTML_DIR="${1:-"coverage-html"}"
|
||||
shift 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
TMP=".tmp.$$"
|
||||
COVERAGE_FILE="./$TMP/coverage.info"
|
||||
COVERAGE_HTML_DIR="${1:-"coverage-html"}"
|
||||
REMOVE_TARGETS="*.yy *.ll *.y *.l */bro.dir/* *.bif"
|
||||
|
||||
if [ -z "${COVERAGE_HTML_DIR}" ]; then
|
||||
COVERAGE_HTML_DIR="coverage-html"
|
||||
fi
|
||||
|
||||
# Files and directories that will be removed from the counts in step 5. Directories
|
||||
# need to be surrounded by escaped wildcards.
|
||||
REMOVE_TARGETS="*.yy *.ll *.y *.l \*/bro.dir/\* *.bif \*/zeek.dir/\* \*/rapidjson/\* \*/highwayhash/\* \*/caf/\* \*/src/3rdparty/\* \*/broker/3rdparty/\* \*/auxil/bifcl/\* \*/auxil/binpac/\*"
|
||||
|
||||
# 1. Move to base dir, create tmp dir
|
||||
cd ../../;
|
||||
cd ../../;
|
||||
mkdir "$TMP"
|
||||
|
||||
# 2. Check for .gcno and .gcda file presence
|
||||
|
@ -41,21 +109,28 @@ for pat in gcda gcno; do
|
|||
done
|
||||
echo "ok"
|
||||
|
||||
# 3. If lcov does not exist, abort process.
|
||||
# 3. If lcov does not exist, abort process.
|
||||
echo -n "Checking for lcov... "
|
||||
verify_run "which lcov" \
|
||||
"lcov installed on system, continue" \
|
||||
"lcov not installed, abort"
|
||||
|
||||
# 4. Create a "tracefile" through lcov, which is necessary to create html files later on.
|
||||
echo -n "Creating tracefile for html generation... "
|
||||
echo -n "Creating tracefile for html generation... "
|
||||
verify_run "lcov --no-external --capture --directory . --output-file $COVERAGE_FILE"
|
||||
|
||||
# 5. Remove a number of 3rdparty and "extra" files that shoudln't be included in the
|
||||
# Zeek coverage numbers.
|
||||
for TARGET in $REMOVE_TARGETS; do
|
||||
echo -n "Getting rid of $TARGET files from tracefile... "
|
||||
verify_run "lcov --remove $COVERAGE_FILE $TARGET --output-file $COVERAGE_FILE"
|
||||
echo -n "Getting rid of $TARGET files from tracefile... "
|
||||
verify_run "lcov --remove $COVERAGE_FILE $TARGET --output-file $COVERAGE_FILE"
|
||||
done
|
||||
|
||||
# 5. Create HTML files.
|
||||
echo -n "Creating HTML files... "
|
||||
verify_run "genhtml -o $COVERAGE_HTML_DIR $COVERAGE_FILE"
|
||||
# 6. Create HTML files or Coveralls report
|
||||
if [ $HTML_REPORT -eq 1 ]; then
|
||||
echo -n "Creating HTML files... "
|
||||
verify_run "genhtml -o $COVERAGE_HTML_DIR $COVERAGE_FILE"
|
||||
else
|
||||
echo -n "Reporting to Coveralls..."
|
||||
verify_run "coveralls-lcov -t ${COVERALLS_REPO_TOKEN} ${COVERAGE_FILE}"
|
||||
fi
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue