Mercurial > lbo > hg > ylisp
changeset 30:656efbd10859
build: Enable coverage reporting with `make coverage`
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Tue, 20 Aug 2019 19:23:28 +0200 |
parents | 3e38ca5d5feb |
children | 57fb1b70b990 |
files | CMakeLists.txt coverage.sh src/CMakeLists.txt src/base/CMakeLists.txt |
diffstat | 4 files changed, 31 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Mon Aug 19 22:30:24 2019 +0200 +++ b/CMakeLists.txt Tue Aug 20 19:23:28 2019 +0200 @@ -28,3 +28,8 @@ ADD_CUSTOM_TARGET(doxygen ALL COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} VERBATIM) endif () + +ADD_CUSTOM_TARGET(coverage + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/coverage.sh ${YALL_TESTS} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/coverage.sh Tue Aug 20 19:23:28 2019 +0200 @@ -0,0 +1,17 @@ +#!/bin/bash + +# Run this from the build directory using `make coverage`. + +set -e + +KCOV="kcov" +KCOV_ARGS="--exclude-pattern=/usr/src,/usr/include,/usr/lib,_test.c" + +TESTS=`find . -name \*_test -executable -and -not -type l` +TESTS_BASENAME=`find . -name \*_test -and -executable -and -not -type l -exec /bin/basename {} \;` + +for BINARY in $TESTS; do + $KCOV $KCOV_ARGS . $BINARY +done + +$KCOV --merge --report $KCOV_ARGS . $TESTS_BASENAME
--- a/src/CMakeLists.txt Mon Aug 19 22:30:24 2019 +0200 +++ b/src/CMakeLists.txt Tue Aug 20 19:23:28 2019 +0200 @@ -8,7 +8,10 @@ TARGET_LINK_LIBRARIES(core base) +# Tests +ADD_COMPILE_OPTIONS(--coverage -ftest-coverage) + # Atom test. ADD_EXECUTABLE(atom_test atom_test.c) -TARGET_LINK_LIBRARIES(atom_test core) +TARGET_LINK_LIBRARIES(atom_test core gcov) ADD_TEST(NAME atom_test_t COMMAND ./atom_test)
--- a/src/base/CMakeLists.txt Mon Aug 19 22:30:24 2019 +0200 +++ b/src/base/CMakeLists.txt Tue Aug 20 19:23:28 2019 +0200 @@ -5,12 +5,15 @@ vec.c ) +# Tests +ADD_COMPILE_OPTIONS(--coverage -ftest-coverage) + # str test. ADD_EXECUTABLE(str_test str_test.c) -TARGET_LINK_LIBRARIES(str_test base) +TARGET_LINK_LIBRARIES(str_test base gcov) ADD_TEST(NAME str_test_t COMMAND ./str_test) # vec test. ADD_EXECUTABLE(vec_test vec_test.c) -TARGET_LINK_LIBRARIES(vec_test base) +TARGET_LINK_LIBRARIES(vec_test base gcov) ADD_TEST(NAME vec_test_t COMMAND ./vec_test)