summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lcov-report/README34
-rw-r--r--lcov-report/lcov-report.cmds.example8
-rwxr-xr-xlcov-report/lcov-report.sh146
3 files changed, 118 insertions, 70 deletions
diff --git a/lcov-report/README b/lcov-report/README
index e73f51a..542d718 100644
--- a/lcov-report/README
+++ b/lcov-report/README
@@ -1,27 +1,35 @@
-A small script to create gcov/lcov code coverage reports of tests run
-on the libreoffice source code.
+lcov-report.sh
+ A small script to create gcov/lcov code coverage reports of tests run
+ on the libreoffice source code.
-Usage: lcov-report.sh [-b] -c [FILE] -s [DIRECTORY] -t [DIRECTORY] -w [DIRECTORY]
+Usage: lcov-report.sh [-a|-b|-c] -s [DIRECTORY] -t [DIRECTORY] -w [DIRECTORY]
--s
- Specify the location where the libreoffice source code is
- located. This flag is mandatory.
-
--c
- Specify the file containing the libreoffice test commands to run.
- In it's simplest form, this file could contain a single line
- reading something like 'cd $SRCDIR && make check'. This flag
- is mandatory.
-b
+ Run lcov commands before you run your tests. This creates a
+ baseline lcov tracefile. You can only supply one of '-a', '-b'
+ or '-c' simultaneously.
+
+-a
+ Run lcov commands after you run your tests. This creates a
+ tracefile that contains the resukts of your tests, and combines
+ it with the baseline. You can only supply one of '-a', '-b' or
+ '-c' simultaneously.
+
+-c
Specifies to build the libreoffice sources in the location
specified by the '-s' flag. This flag is optional. If you
choose to omit it, you must make sure the libreoffice source
code is built using the appropriate FLAGS ('-fprofile-arcs
- -ftest-coverage').
+ -ftest-coverage'). You can only supply one of '-a', '-b' or
+ '-c' simultaneously.
+
+-s
+ Specify the location where the libreoffice source code is
+ located. This flag is mandatory.
-t
Specifies the directory in which to contain the lcov
diff --git a/lcov-report/lcov-report.cmds.example b/lcov-report/lcov-report.cmds.example
deleted file mode 100644
index a577fde..0000000
--- a/lcov-report/lcov-report.cmds.example
+++ /dev/null
@@ -1,8 +0,0 @@
-cd "$SRC_DIR"
-make check
-MY_EXITCODE=$?
-if [ "$MY_EXITCODE" != "0" ]
-then
- echo "ERROR: make check failed with exitcode $MY_EXITCODE" >&2
- exit "$MY_EXITCODE"
-fi
diff --git a/lcov-report/lcov-report.sh b/lcov-report/lcov-report.sh
index 607405e..c3f6420 100755
--- a/lcov-report/lcov-report.sh
+++ b/lcov-report/lcov-report.sh
@@ -15,39 +15,99 @@
init()
{
-if [ "$SRC_DIR" = "/" -o "$TRACEFILE_DIR" = "/" -o "$HTML_DIR" = "/" ]
+if [ -n "$SOURCE_COMPILE" -a -n "$BEFORE" -o -n "$SOURCE_COMPILE" -a -n "$AFTER" -o -n "$BEFORE" -a -n "$AFTER" ]
then
- echo "ERROR: Dont use the root '/' directory for storage." >&2
+ echo "ERROR: You can only supply one of '-a', '-b' or '-c' simultaneously." >&2
exit 1
fi
-if [ ! -d "$SRC_DIR" ]
+if [ -n "$AFTER" -a -z "$HTML_DIR" ]
+then
+ echo "ERROR: When specifying '-a', you also need to specify '-w'." >&2
+ exit 1
+fi
+
+if [ -n "$AFTER" -a -z "$SRC_DIR" ]
then
- echo "ERROR: Failed to locate directory $SRC_DIR." >&2
+ echo "ERROR: When specifying '-a', you also need to specify '-s'." >&2
exit 1
fi
-rm -rf "$TRACEFILE_DIR" "$HTML_DIR"
+if [ -n "$BEFORE" -a -z "$SRC_DIR" ]
+then
+ echo "ERROR: When specifying '-b', you also need to specify '-s'." >&2
+ exit 1
+fi
-mkdir "$TRACEFILE_DIR"
-if [ "$?" != "0" ]
+if [ -n "$BEFORE" -o -n "$AFTER" ]
+then
+ if [ -z "$TRACEFILE_DIR" ]
+ then
+ echo "ERROR: When specifying '-a' or '-b', you also need to specify '-t'." >&2
+ exit 1
+ fi
+fi
+
+if [ "$SRC_DIR" = "/" -o "$TRACEFILE_DIR" = "/" -o "$HTML_DIR" = "/" ]
then
- echo "ERROR: Failed to create directory $TRACEFILE_DIR." >&2
+ echo "ERROR: Dont use the root '/' directory for storage." >&2
exit 1
fi
-mkdir "$HTML_DIR"
-if [ "$?" != "0" ]
+if [ ! -d "$SRC_DIR" ]
then
- echo "ERROR: Failed to create directory $HTML_DIR." >&2
+ echo "ERROR: Failed to locate source code directory $SRC_DIR." >&2
exit 1
fi
-if [ ! -f "$TEST_CMDS_FILE" ]
+if [ ! -d "$SRC_DIR"/.git ]
then
- echo "ERROR: Failed to find test command file $TEST_CMDS_FILE." >&2
+ echo "ERROR: $SRC_DIR is not a git repository." >&2
exit 1
fi
+
+if [ -n "$BEFORE" -a ! -d "$TRACEFILE_DIR" ]
+then
+ mkdir "$TRACEFILE_DIR"
+ if [ "$?" != "0" ]
+ then
+ echo "ERROR: Failed to create tracefile directory $TRACEFILE_DIR." >&2
+ exit 1
+ fi
+fi
+
+if [ -n "$BEFORE" -a -d "$TRACEFILE_DIR" ]
+then
+ rm -rf "$TRACEFILE_DIR"
+ mkdir "$TRACEFILE_DIR"
+ if [ "$?" != "0" ]
+ then
+ echo "ERROR: Failed to create tracefile directory $TRACEFILE_DIR." >&2
+ exit 1
+ fi
+
+fi
+
+if [ -n "$AFTER" -a ! -d "$HTML_DIR" ]
+then
+ mkdir "$HTML_DIR"
+ if [ "$?" != "0" ]
+ then
+ echo "ERROR: Failed to create html directory $HTML_DIR." >&2
+ exit 1
+ fi
+fi
+
+if [ -n "$AFTER" -a -d "$HTML_DIR" ]
+then
+ rm -rf "$HTML_DIR"
+ mkdir "$HTML_DIR"
+ if [ "$?" != "0" ]
+ then
+ echo "ERROR: Failed to create html directory $HTML_DIR." >&2
+ exit 1
+ fi
+fi
}
lcov_cleanup()
@@ -96,18 +156,6 @@ then
fi
}
-run_tests()
-{
-/bin/sh "$TEST_CMDS_FILE"
-MY_EXITCODE=$?
-if [ "$MY_EXITCODE" != "0" ]
-then
- echo "ERROR: failed to run tests from testfile $TEST_CMDS_FILE with exitcode $MY_EXITCODE." >&2
- exit "$MY_EXITCODE"
-fi
-}
-
-
lcov_tracefile_tests()
{
lcov --rc geninfo_auto_base=1 --no-external --capture --directory "$SRC_DIR" --output-file "$TRACEFILE_DIR"/lcov_test.info
@@ -144,11 +192,6 @@ fi
lcov_mkhtml()
{
cd "$SRC_DIR"
-if [ ! -d "$SRC_DIR"/.git ]
-then
- echo "ERROR: $SRC_DIR is not a git repository." >&2
- exit 1
-fi
COMMIT_SHA1=$(git log --date=iso | head -3 | awk '/^commit/ {print $2}')
COMMIT_DATE=$(git log --date=iso | head -3 | awk '/^Date/ {print $2}')
@@ -173,9 +216,10 @@ fi
usage()
{
- echo >&2 "Usage: lcov-report.sh [-b] -c [FILE] -s [DIRECTORY] -t [DIRECTORY] -w [DIRECTORY]
- -b build libreoffice sources
- -c file containing test commands to run
+ echo >&2 "Usage: lcov-report.sh [-a|-b|-c] -s [DIRECTORY] -t [DIRECTORY] -w [DIRECTORY]
+ -b run lcov commands before your tests
+ -a run lcov commands after your tests
+ -c compile libreoffice sources
-s source code directory
-t tracefile directory
-w html (www) directory"
@@ -191,7 +235,7 @@ then
usage
fi
-while getopts ":s:t:w:c:b" opt
+while getopts ":s:t:w:abc" opt
do
case $opt in
s)
@@ -203,11 +247,14 @@ do
w)
export HTML_DIR="$OPTARG"
;;
+ c)
+ export SOURCE_COMPILE=TRUE
+ ;;
b)
- export SOURCE_BUILD=TRUE
+ export BEFORE=TRUE
;;
- c)
- export TEST_CMDS_FILE="$OPTARG"
+ a)
+ export AFTER=TRUE
;;
*)
usage
@@ -215,23 +262,24 @@ do
esac
done
-
init
-lcov_cleanup
+if [ "$BEFORE" = "TRUE" ]
+then
+ lcov_cleanup
+ lcov_tracefile_baseline
+fi
-if [ "$SOURCE_BUILD" = "TRUE" ]
+if [ "$SOURCE_COMPILE" = "TRUE" ]
then
source_build
fi
-lcov_tracefile_baseline
-
-run_tests
-
-lcov_tracefile_tests
-lcov_tracefile_join
-lcov_tracefile_cleanup
-
-lcov_mkhtml
+if [ "$AFTER" = "TRUE" ]
+then
+ lcov_tracefile_tests
+ lcov_tracefile_join
+ lcov_tracefile_cleanup
+ lcov_mkhtml
+fi