From 2ebfb3ab65d66f4a5194d6ea3c6e4d40edf8ec72 Mon Sep 17 00:00:00 2001 From: "Kirill.Safonov" Date: Wed, 17 Nov 2010 20:40:58 +0300 Subject: [PATCH] Export test results (IDEA-11707): ensure stable order in statistics --- .../export/TestResultsXmlFormatter.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/platform/testRunner/src/com/intellij/execution/testframework/export/TestResultsXmlFormatter.java b/platform/testRunner/src/com/intellij/execution/testframework/export/TestResultsXmlFormatter.java index 6038a9e54d90..913b76122837 100644 --- a/platform/testRunner/src/com/intellij/execution/testframework/export/TestResultsXmlFormatter.java +++ b/platform/testRunner/src/com/intellij/execution/testframework/export/TestResultsXmlFormatter.java @@ -27,8 +27,10 @@ import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; +import java.util.Comparator; import java.util.HashMap; import java.util.Map; +import java.util.TreeMap; public class TestResultsXmlFormatter { @@ -39,13 +41,14 @@ public class TestResultsXmlFormatter { private static final String ATTR_DURATION = "duration"; private static final String ELEM_COUNT = "count"; private static final String ATTR_VALUE = "value"; - + private static final String ELEM_OUTPUT = "output"; + private static final String ATTR_OUTPUT_TYPE = "type"; private static final String ATTR_STATUS = "status"; + private static final String TOTAL_STATUS = "total"; + private final RuntimeConfiguration myRuntimeConfiguration; private final ContentHandler myResultHandler; private final AbstractTestProxy myTestRoot; - private static final String ELEM_OUTPUT = "output"; - private static final String ATTR_OUTPUT_TYPE = "type"; public static void execute(AbstractTestProxy root, RuntimeConfiguration runtimeConfiguration, ContentHandler resultHandler) throws SAXException { @@ -61,12 +64,19 @@ public class TestResultsXmlFormatter { private void execute() throws SAXException { myResultHandler.startDocument(); - Map counts = new HashMap(); + TreeMap counts = new TreeMap(new Comparator() { + @Override + public int compare(String o1, String o2) { + if (TOTAL_STATUS.equals(o1) && !TOTAL_STATUS.equals(o2)) return -1; + if (TOTAL_STATUS.equals(o2) && !TOTAL_STATUS.equals(o1)) return 1; + return o1.compareTo(o2); + } + }); for (AbstractTestProxy node : myTestRoot.getAllTests()) { if (!node.isLeaf()) continue; String status = getStatusString(node); increment(counts, status); - increment(counts, "total"); + increment(counts, TOTAL_STATUS); } Map runAttrs = new HashMap();