From 63165db061c9fbae6b0cd82bbcd580eb963ea9cf Mon Sep 17 00:00:00 2001 From: Sylvain Joubert Date: Mon, 9 Feb 2026 18:03:41 +0100 Subject: [PATCH] instrumentation: Fix ctest output of Build.xml when targets have labels Fixes #27585 --- Source/CTest/cmCTestBuildHandler.cxx | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx index 046ae3d589..a4683957d0 100644 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -620,7 +620,6 @@ void cmCTestBuildHandler::GenerateInstrumentationXML(cmXMLWriter& xml) if (target_name == "." || target_name == "..") { continue; } - std::string target_type = "UNKNOWN"; xml.StartElement("Target"); xml.Attribute("name", target_name); @@ -644,19 +643,23 @@ void cmCTestBuildHandler::GenerateInstrumentationXML(cmXMLWriter& xml) target_data = cmake_content["targets"]; } } - // Extract targetType and targetLabels - if (target_data.isObject() && target_data.isMember(target_name)) { + bool target_has_data = + target_data.isObject() && target_data.isMember(target_name); + // Extract targetType + std::string target_type = "UNKNOWN"; + if (target_has_data) { target_type = target_data[target_name]["type"].asString(); - if (!target_data[target_name]["labels"].empty()) { - xml.StartElement("Labels"); - for (auto const& json_label_item : - target_data[target_name]["labels"]) { - xml.Element("Label", json_label_item.asString()); - } - xml.EndElement(); // Labels - } } xml.Attribute("type", target_type); + // Extract targetLabels + if (target_has_data && !target_data[target_name]["labels"].empty()) { + xml.StartElement("Labels"); + for (auto const& json_label_item : + target_data[target_name]["labels"]) { + xml.Element("Label", json_label_item.asString()); + } + xml.EndElement(); // Labels + } // Write instrumendation data for this target. std::string target_subdir = cmStrCat("build/targets/", target_name);