diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a49c0bc7..8a49d6db 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -28,10 +28,11 @@ jobs: - name: Get LCov run: | - wget https://github.com/linux-test-project/lcov/releases/download/v1.16/lcov-1.16.tar.gz - tar -xzf lcov-1.16.tar.gz - cd lcov-1.16 - sudo make install + sudo apt-get install ca-certificates lcov + #wget https://github.com/linux-test-project/lcov/releases/download/v1.16/lcov-1.16.tar.gz + #tar -xzf lcov-1.16.tar.gz + #cd lcov-1.16 + #sudo make install - name: Configure run: | @@ -50,8 +51,8 @@ jobs: - name: Prepare coverage run: | - lcov --directory . --capture --output-file coverage.info - lcov --remove coverage.info '*/tests/*' '*/examples/*' '/usr/*' '*/book/*' '*/fuzz/*' --output-file coverage.info + lcov --ignore-errors gcov,mismatch --directory . --capture --output-file coverage.info + lcov --remove coverage.info '*/tests/*' '/usr/*' --output-file coverage.info lcov --list coverage.info working-directory: build diff --git a/cmake/CodeCoverage.cmake b/cmake/CodeCoverage.cmake index 3e3d61aa..0dcf2b0a 100644 --- a/cmake/CodeCoverage.cmake +++ b/cmake/CodeCoverage.cmake @@ -270,6 +270,8 @@ function(setup_target_for_coverage_lcov) ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} + --ignore-errors + mismatch -directory . -b @@ -281,6 +283,8 @@ function(setup_target_for_coverage_lcov) ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} + --ignore-errors + mismatch -c -i -d @@ -302,6 +306,8 @@ function(setup_target_for_coverage_lcov) -b ${BASEDIR} --capture + --ignore-errors + mismatch,gcov --output-file ${Coverage_NAME}.capture) # add baseline counters @@ -314,6 +320,8 @@ function(setup_target_for_coverage_lcov) ${Coverage_NAME}.base -a ${Coverage_NAME}.capture + --ignore-errors + mismatch,gcov --output-file ${Coverage_NAME}.total) # filter collected data to final coverage report @@ -322,14 +330,23 @@ function(setup_target_for_coverage_lcov) ${Coverage_LCOV_ARGS} --gcov-tool ${GCOV_PATH} + --ignore-errors + mismatch,mismatch,gcov --remove ${Coverage_NAME}.total ${LCOV_EXCLUDES} --output-file ${Coverage_NAME}.info) # Generate HTML output - set(LCOV_GEN_HTML_CMD ${GENHTML_PATH} ${GENHTML_EXTRA_ARGS} ${Coverage_GENHTML_ARGS} -o - ${Coverage_NAME} ${Coverage_NAME}.info) + set(LCOV_GEN_HTML_CMD + ${GENHTML_PATH} + ${GENHTML_EXTRA_ARGS} + --ignore-errors + mismatch,mismatch + ${Coverage_GENHTML_ARGS} + -o + ${Coverage_NAME} + ${Coverage_NAME}.info) if(${Coverage_SONARQUBE}) # Generate SonarQube output set(GCOVR_XML_CMD @@ -347,7 +364,7 @@ function(setup_target_for_coverage_lcov) COMMENT "SonarQube code coverage info report saved in ${Coverage_NAME}_sonarqube.xml.") endif() - if(CODE_COVERAGE_VERBOSE) + if(CODE_COVERAGE_VERBOSE OR 1) message(STATUS "Executed command report") message(STATUS "Command to clean up lcov: ") string(REPLACE ";" " " LCOV_CLEAN_CMD_SPACED "${LCOV_CLEAN_CMD}") diff --git a/include/CLI/TypeTools.hpp b/include/CLI/TypeTools.hpp index cbae1631..08fa0023 100644 --- a/include/CLI/TypeTools.hpp +++ b/include/CLI/TypeTools.hpp @@ -1385,7 +1385,7 @@ bool lexical_assign(const std::string &input, AssignTo &output) { } return lexical_cast(input, output); -} +} // LCOV_EXCL_LINE /// Assign a value through lexical cast operations template configurable(); + subcom->add_option("--val", two); + + args = {"--help"}; + CHECK_THROWS_AS(run(), CLI::CallForHelp); + + auto helpres = app.help(); + CHECK_THAT(helpres, Contains("--helptest")); +} + TEST_CASE_METHOD(TApp, "IniSubcommandConfigurableInQuotesAliasWithComment", "[config]") { TempFile tmpini{"TestIniTmp.ini"}; diff --git a/tests/HelpersTest.cpp b/tests/HelpersTest.cpp index 71dbee30..309dff5b 100644 --- a/tests/HelpersTest.cpp +++ b/tests/HelpersTest.cpp @@ -301,7 +301,7 @@ TEST_CASE("StringTools: binaryEscapeConversion2", "[helpers]") { CHECK(rstring == testString); } -TEST_CASE("StringTools: binaryEscapseConversion_withX", "[helpers]") { +TEST_CASE("StringTools: binaryEscapeConversion_withX", "[helpers]") { std::string testString("hippy\\x35mm\\XF3_helpX26fox19"); testString.push_back(0); testString.push_back(0); @@ -317,7 +317,7 @@ TEST_CASE("StringTools: binaryEscapseConversion_withX", "[helpers]") { CHECK(rstring == testString); } -TEST_CASE("StringTools: binaryEscapseConversion_withBrackets", "[helpers]") { +TEST_CASE("StringTools: binaryEscapeConversion_withBrackets", "[helpers]") { std::string vstr = R"raw('B"([\xb0\x0a\xb0/\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0\xb0])"')raw"; std::string testString("[");