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

@@ -67,6 +67,15 @@ namespace Catch {
return rss.str();
}
static void normalizeNamespaceMarkers(std::string& str) {
std::size_t pos = str.find( "::" );
while ( pos != str.npos ) {
str.replace( pos, 2, "." );
pos += 1;
pos = str.find( "::", pos );
}
}
} // anonymous namespace
JunitReporter::JunitReporter( ReporterConfig&& _config )
@@ -170,6 +179,8 @@ namespace Catch {
if ( !m_config->name().empty() )
className = static_cast<std::string>(m_config->name()) + '.' + className;
normalizeNamespaceMarkers(className);
writeSection( className, "", rootSection, stats.testInfo->okToFail() );
}