diff --git a/.travis.yml b/.travis.yml index fa2918f3..f1e538f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -99,10 +99,10 @@ matrix: before_script: - pip install --user cpp-coveralls after_success: - - coveralls --build-root test --include single_header/nlohmann --gcov 'gcov-4.9' --gcov-options '\-lp' + - coveralls --build-root test --include include/nlohmann --gcov 'gcov-4.9' --gcov-options '\-lp' env: - COMPILER=g++-4.9 - - CMAKE_OPTIONS=-DJSON_Coverage=ON + - CMAKE_OPTIONS=-DJSON_Coverage=ON -DJSON_MultipleHeader=ON # Coverity (only for branch coverity_scan) diff --git a/Makefile b/Makefile index 30b8ba9a..1cfa5101 100644 --- a/Makefile +++ b/Makefile @@ -81,7 +81,7 @@ clean: coverage: mkdir build_coverage - cd build_coverage ; CXX=g++-5 cmake .. -GNinja -DJSON_Coverage=ON + cd build_coverage ; CXX=g++-5 cmake .. -GNinja -DJSON_Coverage=ON -DJSON_MultipleHeaders=ON cd build_coverage ; ninja cd build_coverage ; ctest -j10 cd build_coverage ; ninja lcov_html diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a4021923..d53d5c4b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -40,11 +40,14 @@ if(JSON_Coverage) string(REGEX MATCH "^[0-9]+" GCC_VERSION "${CMAKE_CXX_COMPILER_VERSION}") find_program(GCOV_BIN NAMES gcov-${GCC_VERSION} gcov HINTS ${COMPILER_PATH}) + # collect all source files from the chosen include dir + file(GLOB_RECURSE SOURCE_FILES ${NLOHMANN_JSON_INCLUDE_BUILD_DIR}*.hpp) + # add target to collect coverage information and generate HTML file # (filter script from https://stackoverflow.com/a/43726240/266378) add_custom_target(lcov_html COMMAND lcov --directory . --capture --output-file json.info --gcov-tool ${GCOV_BIN} --rc lcov_branch_coverage=1 - COMMAND lcov -e json.info ${CMAKE_SOURCE_DIR}/single_include/nlohmann/json.hpp --output-file json.info.filtered --rc lcov_branch_coverage=1 + COMMAND lcov -e json.info ${SOURCE_FILES} --output-file json.info.filtered --rc lcov_branch_coverage=1 COMMAND ${CMAKE_SOURCE_DIR}/test/thirdparty/imapdl/filterbr.py json.info.filtered > json.info.filtered.noexcept COMMAND genhtml --title "JSON for Modern C++" --legend --demangle-cpp --output-directory html --show-details --branch-coverage json.info.filtered.noexcept COMMENT "Generating HTML report test/html/index.html"