Skip to content

Commit c1bbc59

Browse files
committed
apply the logic by classname
1 parent c044bba commit c1bbc59

1 file changed

Lines changed: 21 additions & 11 deletions

File tree

.gitlab/TagInitializationErrors.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
import javax.xml.transform.stream.StreamResult;
77
import java.io.File;
88
import java.util.ArrayList;
9+
import java.util.LinkedHashMap;
910
import java.util.List;
11+
import java.util.Map;
1012

1113
/**
1214
* Tags intermediate initializationError retries with dd_tags[test.final_status]=skip.
@@ -30,23 +32,31 @@ public static void main(String[] args) throws Exception {
3032
}
3133
var doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);
3234
var testcases = doc.getElementsByTagName("testcase");
33-
List<Element> initErrorCases = new ArrayList<>();
35+
Map<String, List<Element>> byClassname = new LinkedHashMap<>();
3436
for (int i = 0; i < testcases.getLength(); i++) {
3537
var e = (Element) testcases.item(i);
3638
if ("initializationError".equals(e.getAttribute("name"))) {
37-
initErrorCases.add(e);
39+
byClassname.computeIfAbsent(e.getAttribute("classname"), k -> new ArrayList<>()).add(e);
3840
}
3941
}
40-
if (initErrorCases.size() <= 1) return;
41-
for (int i = 0; i < initErrorCases.size() - 1; i++) {
42-
var testcase = initErrorCases.get(i);
43-
var properties = doc.createElement("properties");
44-
var property = doc.createElement("property");
45-
property.setAttribute("name", "dd_tags[test.final_status]");
46-
property.setAttribute("value", "skip");
47-
properties.appendChild(property);
48-
testcase.appendChild(properties);
42+
boolean modified = false;
43+
for (var group : byClassname.values()) {
44+
if (group.size() <= 1) continue;
45+
for (int i = 0; i < group.size() - 1; i++) {
46+
var testcase = group.get(i);
47+
var existingProperties = testcase.getElementsByTagName("properties");
48+
var properties = existingProperties.getLength() > 0
49+
? (Element) existingProperties.item(0)
50+
: doc.createElement("properties");
51+
var property = doc.createElement("property");
52+
property.setAttribute("name", "dd_tags[test.final_status]");
53+
property.setAttribute("value", "skip");
54+
properties.appendChild(property);
55+
if (existingProperties.getLength() == 0) testcase.appendChild(properties);
56+
modified = true;
57+
}
4958
}
59+
if (!modified) return;
5060
var transformer = TransformerFactory.newInstance().newTransformer();
5161
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
5262
transformer.transform(new DOMSource(doc), new StreamResult(xmlFile));

0 commit comments

Comments
 (0)