ctest: export test labels to junit xml

With this patch, the junit files written by ctest also contain the
test labels as testcase properties, see
https://github.com/testmoapp/junitxml#properties

The name for the property is "cmake_labels", where "cmake_"
is used namespace-like. This could be done the same way
if we export more properties to junit.
Also this makes it clear to consumers that this is coming
from cmake, and the list is a cmake-formatted string.
This commit is contained in:
Alex Neundorf
2023-07-17 22:47:53 +02:00
parent 8086ce2706
commit b11e8afbfa

View File

@@ -2617,6 +2617,21 @@ bool cmCTestTestHandler::WriteJUnitXML()
xml.EndElement(); // </failure>
}
xml.StartElement("properties");
if ((result.Properties) && (!result.Properties->Labels.empty())) {
xml.StartElement("property");
xml.Attribute("name", "cmake_labels");
// Pass the property as a cmake-formatted list, consumers will know
// anyway that this information is coming from cmake, so it should
// be ok to put it here as a cmake-list.
xml.Attribute("value", cmList::to_string(result.Properties->Labels));
// if we export more properties, this should be done the same way,
// i.e. prefix the property name with "cmake_", and it it can be
// a list, write it cmake-formatted.
xml.EndElement(); // </property>
}
xml.EndElement(); // </properties>
// Note: compressed test output is unconditionally disabled when
// --output-junit is specified.
xml.Element("system-out", result.Output);