Mercurial > lbo > hg > ylisp
changeset 56:1ac96e2f167c
build: Use lcov instead of kcov (faster, better counting)
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 23 Aug 2019 16:13:02 +0200 |
parents | 11a36d53bf37 |
children | aff8b46c1fb9 |
files | CMakeLists.txt coverage.sh kcoverage.sh lcoverage.sh src/CMakeLists.txt src/base/CMakeLists.txt |
diffstat | 6 files changed, 73 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/CMakeLists.txt Fri Aug 23 15:35:01 2019 +0200 +++ b/CMakeLists.txt Fri Aug 23 16:13:02 2019 +0200 @@ -8,6 +8,10 @@ # SET(CMAKE_EXPORT_COMPILE_COMMANDS ON) +if (CMAKE_BUILD_TYPE STREQUAL "") + SET(CMAKE_BUILD_TYPE "Debug") +endif () + if (CMAKE_BUILD_TYPE STREQUAL "Release") ADD_COMPILE_OPTIONS(-O3) else () @@ -40,8 +44,12 @@ endif () GET_PROPERTY(ALL_TEST_EXECUTABLES GLOBAL PROPERTY YALL_TESTS) +ADD_CUSTOM_TARGET(kcoverage + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/kcoverage.sh ${ALL_TEST_EXECUTABLES} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) ADD_CUSTOM_TARGET(coverage - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/coverage.sh ${ALL_TEST_EXECUTABLES} + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lcoverage.sh ${ALL_TEST_EXECUTABLES} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) ADD_CUSTOM_TARGET(valgrind @@ -49,4 +57,5 @@ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) -MESSAGE("${ALL_TEST_EXECUTABLES}") +MESSAGE("Test binaries: ${ALL_TEST_EXECUTABLES}") +MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
--- a/coverage.sh Fri Aug 23 15:35:01 2019 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -#!/bin/bash - -# Expects a list of test executables as arguments. -# Run this from the build directory using `make coverage`. - -set -ex - -KCOV="kcov" -KCOV_ARGS="--exclude-pattern=/usr/src,/usr/include,/usr/lib,_test.c" - -TESTS=$@ -TESTS_BASENAME=`basename -a $TESTS` - -for BINARY in $TESTS; do - $KCOV $KCOV_ARGS . $BINARY -done - -$KCOV --merge --report-only $KCOV_ARGS . $TESTS -xdg-open kcov-merged/index.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kcoverage.sh Fri Aug 23 16:13:02 2019 +0200 @@ -0,0 +1,19 @@ +#!/bin/bash + +# Expects a list of test executables as arguments. +# Run this from the build directory using `make coverage`. + +set -ex + +KCOV="kcov" +KCOV_ARGS="--exclude-pattern=/usr/src,/usr/include,/usr/lib,_test.c" + +TESTS=$@ +TESTS_BASENAME=`basename -a $TESTS` + +for BINARY in $TESTS; do + $KCOV $KCOV_ARGS . $BINARY +done + +$KCOV --merge --report-only $KCOV_ARGS . $TESTS +xdg-open kcov-merged/index.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lcoverage.sh Fri Aug 23 16:13:02 2019 +0200 @@ -0,0 +1,23 @@ +#!/bin/bash + +# Expects a list of test executables as arguments. +# Run this from the build directory using `make coverage`. + +set -ex + +GENHTML="genhtml" +LCOV="lcov" +LCOV_ARGS="--base-directory . --directory . --exclude *_test.c" + +TESTS=$@ +TESTS_BASENAME=`basename -a $TESTS` + +HTMLOUT="lcov-merged" +MERGED_TRACES="merged.info" + +$LCOV $LCOV_ARGS --zerocounters +make test + +$LCOV $LCOV_ARGS -c -o $MERGED_TRACES +$GENHTML -o ${HTMLOUT}/ $MERGED_TRACES +xdg-open ${HTMLOUT}/index.html
--- a/src/CMakeLists.txt Fri Aug 23 15:35:01 2019 +0200 +++ b/src/CMakeLists.txt Fri Aug 23 16:13:02 2019 +0200 @@ -2,17 +2,22 @@ ADD_SUBDIRECTORY(base/) +# Tests +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + ADD_COMPILE_OPTIONS(--coverage) +endif () + ADD_LIBRARY(core STATIC atom.c expr.c func.c value.c) -TARGET_LINK_LIBRARIES(core base) - -# Tests -# We don't need these options for kcov. -#ADD_COMPILE_OPTIONS(--coverage -ftest-coverage) +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + TARGET_LINK_LIBRARIES(core base gcov) +else () + TARGET_LINK_LIBRARIES(core base) +endif () # Atom test. ADD_EXECUTABLE(atom_test atom_test.c)
--- a/src/base/CMakeLists.txt Fri Aug 23 15:35:01 2019 +0200 +++ b/src/base/CMakeLists.txt Fri Aug 23 16:13:02 2019 +0200 @@ -1,19 +1,25 @@ cmake_minimum_required(VERSION 3.14) +# Tests +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + ADD_COMPILE_OPTIONS(--coverage) +endif () + ADD_LIBRARY(base STATIC str.c vec.c ) -# Tests -ADD_COMPILE_OPTIONS(--coverage -ftest-coverage) +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + TARGET_LINK_LIBRARIES(base gcov) +endif () # str test. ADD_EXECUTABLE(str_test str_test.c) -TARGET_LINK_LIBRARIES(str_test base gcov) +TARGET_LINK_LIBRARIES(str_test base) YADD_TEST(str_test) # vec test. ADD_EXECUTABLE(vec_test vec_test.c) -TARGET_LINK_LIBRARIES(vec_test base gcov) +TARGET_LINK_LIBRARIES(vec_test base) YADD_TEST(vec_test)