Normalize C++ namespace in JUnit's reporter classname field

Closes #2468
This commit is contained in:
Martin Hořeňovský
2022-07-17 14:00:04 +02:00
parent 1bd233866c
commit 9c9f35068e
3 changed files with 38 additions and 0 deletions

View File

@@ -553,6 +553,17 @@ set_tests_properties("Colours::ColourModeCanBeExplicitlySetToAnsi"
PASS_REGULAR_EXPRESSION "\\[1\;32mAll tests passed"
)
add_test(NAME "Reporters::JUnit::NamespacesAreNormalized"
COMMAND
$<TARGET_FILE:SelfTest>
--reporter junit
"A TEST_CASE_METHOD testing junit classname normalization"
)
set_tests_properties("Reporters::JUnit::NamespacesAreNormalized"
PROPERTIES
PASS_REGULAR_EXPRESSION "testcase classname=\"SelfTest(\.exe)?\\.A\\.B\\.TestClass\""
)
if (CATCH_ENABLE_CONFIGURE_TESTS)
foreach(testName "DefaultReporter" "Disable" "DisableStringification"
"ExperimentalRedirect")

View File

@@ -114,4 +114,20 @@ namespace Inner
{
REQUIRE(Template_Fixture_2<TestType>{}.m_a.size() < 2);
}
} // namespace
// We want a class in nested namespace so we can test JUnit's classname normalization.
namespace {
namespace A {
namespace B {
class TestClass {};
}
}
} // namespace
TEST_CASE_METHOD( A::B::TestClass,
"A TEST_CASE_METHOD testing junit classname normalization",
"[class][approvals]" ) {
SUCCEED();
}