Skip to content

Commit d39e9e7

Browse files
committed
feat: add code coverage support and expose parameter registration in tests
1 parent cced049 commit d39e9e7

File tree

4 files changed

+35
-13
lines changed

4 files changed

+35
-13
lines changed

.vscode/settings.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,9 @@
2424
"sonarlint.connectedMode.project": {
2525
"connectionId": "philips-software",
2626
"projectKey": "philips-software_amp-cucumber-cpp-runner"
27-
}
27+
},
28+
"cmake.postRunCoverageTarget": "generate-coverage-report",
29+
"cmake.coverageInfoFiles": [
30+
"${workspaceFolder}/.build/${command:cmake.activeConfigurePresetName}/lcov.info"
31+
]
2832
}

CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,19 @@ option(CCR_BUILD_TESTS "Enable building the tests" ${CCR_DEFAULTOPT})
3131

3232
if (CCR_BUILD_TESTS)
3333
ccr_enable_testing()
34+
35+
find_program(GCOVR_PATH gcovr)
36+
37+
if (NOT GCOVR_PATH)
38+
message(FATAL_ERROR "Could not find gcovr, which is required for code coverage IDE integration")
39+
endif()
40+
41+
add_custom_target(
42+
generate-coverage-report
43+
COMMAND ${GCOVR_PATH} --delete --lcov ${CMAKE_CURRENT_BINARY_DIR}/lcov.info
44+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
45+
COMMENT "Generating code coverage report in LCOV format"
46+
)
3447
endif()
3548

3649
set(CMAKE_CXX_STANDARD 20)

cucumber_cpp/library/cucumber_expression/ParameterRegistry.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,20 @@ namespace cucumber_cpp::library::cucumber_expression
6969
const static std::string stringSingleRegex{ R"__('([^'\\]*(\\.[^'\\]*)*)')__" };
7070
const static std::string wordRegex{ R"__([^\s]+)__" };
7171

72-
Add("int", { integerNegativeRegex, integerPositiveRegex }, CreateStreamConverter<std::int32_t>());
73-
Add("float", { floatRegex }, CreateStreamConverter<float>());
74-
Add("word", { wordRegex }, CreateStreamConverter<std::string>());
75-
Add("string", { stringDoubleRegex, stringSingleRegex }, CreateStringConverter());
76-
Add("", { ".*" }, CreateStreamConverter<std::string>());
77-
Add("bigdecimal", { floatRegex }, CreateStreamConverter<double>());
78-
Add("biginteger", { { integerNegativeRegex, integerPositiveRegex } }, CreateStreamConverter<std::int64_t>());
79-
Add("byte", { { integerNegativeRegex, integerPositiveRegex } }, CreateStreamConverter<std::int32_t>());
80-
Add("short", { { integerNegativeRegex, integerPositiveRegex } }, CreateStreamConverter<std::int32_t>());
81-
Add("long", { { integerNegativeRegex, integerPositiveRegex } }, CreateStreamConverter<std::int64_t>());
82-
Add("double", { floatRegex }, CreateStreamConverter<double>());
72+
ParameterRegistry::Add("int", { integerNegativeRegex, integerPositiveRegex }, CreateStreamConverter<std::int32_t>());
73+
ParameterRegistry::Add("float", { floatRegex }, CreateStreamConverter<float>());
74+
ParameterRegistry::Add("word", { wordRegex }, CreateStreamConverter<std::string>());
75+
ParameterRegistry::Add("string", { stringDoubleRegex, stringSingleRegex }, CreateStringConverter());
76+
ParameterRegistry::Add("", { ".*" }, CreateStreamConverter<std::string>());
77+
ParameterRegistry::Add("bigdecimal", { floatRegex }, CreateStreamConverter<double>());
78+
ParameterRegistry::Add("biginteger", { { integerNegativeRegex, integerPositiveRegex } }, CreateStreamConverter<std::int64_t>());
79+
ParameterRegistry::Add("byte", { { integerNegativeRegex, integerPositiveRegex } }, CreateStreamConverter<std::int32_t>());
80+
ParameterRegistry::Add("short", { { integerNegativeRegex, integerPositiveRegex } }, CreateStreamConverter<std::int32_t>());
81+
ParameterRegistry::Add("long", { { integerNegativeRegex, integerPositiveRegex } }, CreateStreamConverter<std::int64_t>());
82+
ParameterRegistry::Add("double", { floatRegex }, CreateStreamConverter<double>());
8383

8484
// extension
85-
Add("bool", { wordRegex }, CreateStreamConverter<bool>());
85+
ParameterRegistry::Add("bool", { wordRegex }, CreateStreamConverter<bool>());
8686
}
8787

8888
Parameter ParameterRegistry::Lookup(const std::string& name) const

cucumber_cpp/library/test/TestApplication.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,9 @@ namespace cucumber_cpp::library
124124

125125
EXPECT_THAT(stdoutString, testing::HasSubstr("1/2 passed"));
126126
}
127+
128+
TEST_F(TestApplication, ExposeParameterRegistration)
129+
{
130+
EXPECT_THAT(&Application{}.ParameterRegistration(), testing::NotNull());
131+
}
127132
}

0 commit comments

Comments
 (0)