Move test coverage generation into Makefile

Add the necessary compiler flags to the Makefile to actually make
coverage reports available locally, too.

The coverage files have to get cleaned every time before the test gets
run. Otherwise, it would sum up the coverage over multiple test runs.
This commit is contained in:
Benedikt Heine 2018-03-15 02:54:01 +01:00
parent eba6913faa
commit b4ce81b1c9
3 changed files with 20 additions and 6 deletions

3
.gitignore vendored
View File

@ -1,5 +1,8 @@
dunst dunst
*.o *.o
*.gcda
*.gcno
*.gcov
core core
vgcore.* vgcore.*
dunst.1 dunst.1

View File

@ -26,8 +26,8 @@ before_install:
script: script:
- CFLAGS="-Werror" make all dunstify test-valgrind doc-doxygen - CFLAGS="-Werror" make all dunstify test-valgrind doc-doxygen
- make clean - CFLAGS="-Werror" make clean
- CFLAGS="-Werror -fprofile-arcs -ftest-coverage -O0" make test - CFLAGS="-Werror" make test-coverage
matrix: matrix:
include: include:

View File

@ -69,8 +69,8 @@ dunst: ${OBJ} main.o
dunstify: dunstify.o dunstify: dunstify.o
${CC} -o ${@} dunstify.o ${CFLAGS} ${LDFLAGS} ${CC} -o ${@} dunstify.o ${CFLAGS} ${LDFLAGS}
.PHONY: test test-valgrind .PHONY: test test-valgrind test-coverage
test: test/test test: test/test clean-coverage-run
cd test && ./test cd test && ./test
test-valgrind: test/test test-valgrind: test/test
@ -84,6 +84,9 @@ test-valgrind: test/test
--error-exitcode=123 \ --error-exitcode=123 \
./test ./test
test-coverage: CFLAGS += -fprofile-arcs -ftest-coverage -O0
test-coverage: test
test/test: ${OBJ} ${TEST_OBJ} test/test: ${OBJ} ${TEST_OBJ}
${CC} -o ${@} ${TEST_OBJ} ${OBJ} ${CFLAGS} ${LDFLAGS} ${CC} -o ${@} ${TEST_OBJ} ${OBJ} ${CFLAGS} ${LDFLAGS}
@ -104,8 +107,8 @@ service-systemd:
@sed "s|##PREFIX##|$(PREFIX)|" dunst.systemd.service.in > dunst.systemd.service @sed "s|##PREFIX##|$(PREFIX)|" dunst.systemd.service.in > dunst.systemd.service
endif endif
.PHONY: clean clean-dunst clean-dunstify clean-doc clean-tests .PHONY: clean clean-dunst clean-dunstify clean-doc clean-tests clean-coverage clean-coverage-run
clean: clean-dunst clean-dunstify clean-doc clean-tests clean: clean-dunst clean-dunstify clean-doc clean-tests clean-coverage clean-coverage-run
clean-dunst: clean-dunst:
rm -f dunst ${OBJ} main.o rm -f dunst ${OBJ} main.o
@ -123,6 +126,14 @@ clean-doc:
clean-tests: clean-tests:
rm -f test/test test/*.o rm -f test/test test/*.o
clean-coverage: clean-coverage-run
find . -type f -name '*.gcno' -delete
find . -type f -name '*.gcna' -delete
# Cleans the coverage data before every run to not double count any lines
clean-coverage-run:
find . -type f -name '*.gcov' -delete
find . -type f -name '*.gcda' -delete
.PHONY: install install-dunst install-doc \ .PHONY: install install-dunst install-doc \
install-service install-service-dbus install-service-systemd \ install-service install-service-dbus install-service-systemd \
uninstall \ uninstall \