summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaarten Hoes <hoes.maarten@gmail.com>2014-11-08 23:10:51 +0100
committerNorbert Thiebaud <nthiebaud@gmail.com>2014-11-08 22:55:43 +0000
commita9b64f309fdae9135d7223f0aec55d95a7517f13 (patch)
tree2a76934231a8b44b3eb6667cdb47c57a24bc162c
parentfd188bda674ab20148dadcd802bcbbc78b8ca921 (diff)
shell script to generate lcov code coverage reports.
Change-Id: I684207b6aad4549a9f333ab800dae0ed0b507bab Reviewed-on: https://gerrit.libreoffice.org/12315 Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> Tested-by: Norbert Thiebaud <nthiebaud@gmail.com>
-rwxr-xr-xlcov-report/lcov-report.sh116
1 files changed, 116 insertions, 0 deletions
diff --git a/lcov-report/lcov-report.sh b/lcov-report/lcov-report.sh
new file mode 100755
index 0000000..7f5c2b6
--- /dev/null
+++ b/lcov-report/lcov-report.sh
@@ -0,0 +1,116 @@
+#!/bin/sh
+
+SRC_DIR=/home/buildslave/source/libo-core
+TRACEFILE_DIR=/home/buildslave/lcov
+HTML_DIR=/home/buildslave/lcov/html
+
+if [ ! -d "$SRC_DIR" ]
+then
+ echo "ERROR: Failed to locate directory $SRC_DIR" >&2
+ exit 1
+fi
+
+rm -rf "$TRACEFILE_DIR" "$HTML_DIR"
+
+mkdir "$TRACEFILE_DIR"
+if [ "$?" != "0" ]
+then
+ echo "ERROR: Failed to create directory $TRACEFILE_DIR" >&2
+fi
+
+mkdir "$HTML_DIR"
+if [ "$?" != "0" ]
+then
+ echo "ERROR: Failed to create directory $HTML_DIR" >&2
+fi
+
+lcov --zerocounters --directory "$SRC_DIR"
+
+cd "$SRC_DIR"
+make distclean
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo "ERROR: make distclean failed with exitcode $MY_EXITCODE" >&2
+ exit "$MY_EXITCODE"
+fi
+
+./autogen.sh
+
+LDFLAGS+='-fprofile-arcs' CFLAGS+='-fprofile-arcs -ftest-coverage' CXXFLAGS+='-fprofile-arcs -ftest-coverage' CPPFLAGS+='-fprofile-arcs -ftest-coverage' ./configure --disable-online-update --without-system-libs --without-system-headers
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo "ERROR: configure failed with exitcode $MY_EXITCODE" >&2
+ exit "$MY_EXITCODE"
+fi
+
+make build-nocheck
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo "ERROR: make build-nocheck failed with exitcode $MY_EXITCODE" >&2
+ exit "$MY_EXITCODE"
+fi
+
+
+lcov --rc geninfo_auto_base=1 --no-external --capture --initial --directory "$SRC_DIR" --output-file "$TRACEFILE_DIR"/libreoffice_base.info
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo "ERROR: tracefile $TRACEFILE_DIR/libreoffice_base.info generation failed with exitcode $MY_EXITCODE" >&2
+ exit "$MY_EXITCODE"
+fi
+
+make check
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo "ERROR: make check failed with exitcode $MY_EXITCODE" >&2
+ exit "$MY_EXITCODE"
+fi
+
+lcov --rc geninfo_auto_base=1 --no-external --capture --directory "$SRC_DIR" --output-file "$TRACEFILE_DIR"/libreoffice_test.info
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo "ERROR: tracefile $TRACEFILE_DIR/libreoffice_test.info generation failed with exitcode $MY_EXITCODE" >&2
+ exit "$MY_EXITCODE"
+fi
+
+lcov --rc geninfo_auto_base=1 --add-tracefile "$TRACEFILE_DIR"/libreoffice_base.info --add-tracefile "$TRACEFILE_DIR"/libreoffice_test.info --output-file "$TRACEFILE_DIR"/libreoffice_total.info
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo "ERROR: tracefile generation $TRACEFILE_DIR/libreoffice_total.info failed with exitcode $MY_EXITCODE" >&2
+ exit "$MY_EXITCODE"
+fi
+
+lcov --rc geninfo_auto_base=1 --remove "$TRACEFILE_DIR"/libreoffice_total.info "/usr/include/*" "/usr/lib/*" "$SRC_DIR/*/UnpackedTarball/*" "$SRC_DIR/workdir/*" "$SRC_DIR/instdir/*" "$SRC_DIR/external/*" -o "$TRACEFILE_DIR"/libreoffice_filtered.info
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo "ERROR: tracefile generation $TRACEFILE_DIR/libreoffice_filtered.info failed with exitcode $MY_EXITCODE" >&2
+ exit "$MY_EXITCODE"
+fi
+
+cd "$SRC_DIR"
+COMMIT_SHA1=$(git log --date=iso | head -3 | awk '/^commit/ {print $2}')
+COMMIT_DATE=$(git log --date=iso | head -3 | awk '/^Date/ {print $2}')
+COMMIT_TIME=$(git log --date=iso | head -3 | awk '/^Date/ {print $3}')
+mkdir "$HTML_DIR"/master~"$COMMIT_DATE"_"$COMMIT_TIME"
+MY_EXITCODE=$?
+if [ ! -d "$HTML_DIR"/master~"$COMMIT_DATE"_"$COMMIT_TIME" ]
+then
+ echo >&2 ERROR: failed to create subdirectory in $HTML_DIR/master~"$COMMIT_DATE"_"$COMMIT_TIME" with exitcode $MY_EXITCODE
+ exit "$MY_EXITCODE"
+fi
+
+genhtml --rc geninfo_auto_base=1 --prefix "$SRC_DIR" --ignore-errors source "$TRACEFILE_DIR"/libreoffice_filtered.info --legend --title "commit $COMMIT_SHA1" --output-directory="$HTML_DIR"/master~"$COMMIT_DATE"_"$COMMIT_TIME"
+MY_EXITCODE=$?
+if [ "$MY_EXITCODE" != "0" ]
+then
+ echo >&2 ERROR: Generation of html files in $HTML_DIR/master~"$COMMIT_DATE"_"$COMMIT_TIME" failed with exitcode $MY_EXITCODE
+ exit "$MY_EXITCODE"
+fi
+