From e21e210eab4b7917d2a01e72b2db07f481cd60fa Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 5 May 2015 15:14:20 +0200 Subject: [PATCH] junit: compact hide suites hierarchy as it won't be available in testStarted/Finished --- .../JUnitTreeByDescriptionHierarchyTest.java | 23 +++++++++++++++++++ .../src/com/intellij/junit4/SMTestSender.java | 5 +++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java b/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java index 39a55728fbd6..7b0bad01a350 100644 --- a/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java +++ b/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java @@ -63,6 +63,29 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[suiteTreeEnded name='TestB']\n"); } + @Test + public void test2SuitesWithTheSameTest() throws Exception { + final Description root = Description.createSuiteDescription("root"); + final String className = "ATest"; + final String methodName = "test1"; + for( String suiteName : new String[] {"ASuite1", "ASuite2"}) { + final Description aSuite = Description.createSuiteDescription(suiteName); + root.addChild(aSuite); + final Description aTest = Description.createSuiteDescription(className); + aSuite.addChild(aTest); + aTest.addChild(Description.createTestDescription(className, methodName)); + } + final Description description = Description.createSuiteDescription(className); + root.addChild(description); + description.addChild(Description.createTestDescription(className, methodName)); + + doTest(root, "##teamcity[suiteTreeStarted name='ATest' locationHint='java:suite://ATest']\n" + + "##teamcity[suiteTreeNode name='test1' locationHint='java:test://ATest.test1']\n" + + "##teamcity[suiteTreeNode name='test1' locationHint='java:test://ATest.test1']\n" + + "##teamcity[suiteTreeNode name='test1' locationHint='java:test://ATest.test1']\n" + + "##teamcity[suiteTreeEnded name='ATest']\n"); + } + @Test public void testSingleMethod() throws Exception { final Description rootDescription = Description.createTestDescription("TestA", "testName"); diff --git a/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java b/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java index c8a2c6b8993d..baa3303a90d9 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java +++ b/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java @@ -255,11 +255,14 @@ public class SMTestSender extends RunListener { private static void groupTests(Object description, Map found) { if (!isParameter((Description)description)) { - final ArrayList childTests = ((Description)description).getChildren(); + ArrayList childTests = ((Description)description).getChildren(); List children = (List)found.get(description); if (children == null) { children = new ArrayList(); found.put(description, children); + } else { + childTests = new ArrayList(childTests); + childTests.removeAll(children); } children.addAll(childTests); for (Iterator iterator = childTests.iterator(); iterator.hasNext(); ) {