Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMartin Hořeňovský2022-07-17 14:00:04 +0200
committerMartin Hořeňovský2022-07-17 19:15:20 +0200
commit9c9f35068edaa1290789c56f241fc54e7de0eeb0 (patch)
tree21e6acbce31ac5fcf0145e627bc88ce2e0cec935 /src
parent1bd233866c5ba1d94fbea34b260685b4b4ecb796 (diff)
downloadcatch3-9c9f35068edaa1290789c56f241fc54e7de0eeb0.tar.gz
Normalize C++ namespace in JUnit's reporter classname field
Closes #2468
Diffstat (limited to 'src')
-rw-r--r--src/catch2/reporters/catch_reporter_junit.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/catch2/reporters/catch_reporter_junit.cpp b/src/catch2/reporters/catch_reporter_junit.cpp
index 37546cd7..c24d1efa 100644
--- a/src/catch2/reporters/catch_reporter_junit.cpp
+++ b/src/catch2/reporters/catch_reporter_junit.cpp
@@ -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() );
}