From 710891ee880cd9dabac66d51b2d76325cd48cb8f Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 12 Sep 2016 13:22:23 +0300 Subject: [PATCH] junit: ensure control operations are started from the new line (IDEA-158135) --- .../JUnitTreeByDescriptionHierarchyTest.java | 91 ++++++++++++++++--- .../intellij/junit4/JUnit4TestListener.java | 8 +- 2 files changed, 80 insertions(+), 19 deletions(-) diff --git a/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java b/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java index 25e535bba1ba..02278e0692b2 100644 --- a/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java +++ b/plugins/junit/test/com/intellij/execution/junit/JUnitTreeByDescriptionHierarchyTest.java @@ -68,34 +68,45 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + + "\n" + "##teamcity[testSuiteStarted name='TestA']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + "\n" + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "\n" + "##teamcity[testFinished name='testName|[0|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[1|]']\n" + "\n" + "##teamcity[testStarted name='testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + "\n" + "##teamcity[testFinished name='testName|[1|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[1|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='TestA']\n" + + "\n" + "##teamcity[testSuiteStarted name='TestB']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + "\n" + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestB.testName|[0|]']\n" + "\n" + "##teamcity[testFinished name='testName|[0|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[1|]']\n" + "\n" + "##teamcity[testStarted name='testName|[1|]' locationHint='java:test://a.TestB.testName|[1|]']\n" + "\n" + "##teamcity[testFinished name='testName|[1|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[1|]']\n" + - "##teamcity[testSuiteFinished name='TestB']\n"); + "##teamcity[testSuiteFinished name='TestB']"); } @Test @@ -119,6 +130,7 @@ public class JUnitTreeByDescriptionHierarchyTest { } sender.testRunFinished(new Result()); Assert.assertEquals("output: " + buf, "##teamcity[enteredTheMatrix]\n" + + "\n" + "##teamcity[testSuiteStarted name='ATest' locationHint='java:suite://ATest']\n" + "\n" + "##teamcity[testStarted name='ATest.test1' locationHint='java:test://ATest.test1']\n" + @@ -128,7 +140,8 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[testStarted name='ATest.test2' locationHint='java:test://ATest.test2']\n" + "\n" + "##teamcity[testFinished name='ATest.test2']\n" + - "##teamcity[testSuiteFinished name='ATest']\n", StringUtil.convertLineSeparators(buf.toString())); + "\n" + + "##teamcity[testSuiteFinished name='ATest']", StringUtil.convertLineSeparators(buf.toString())); } @Test @@ -151,19 +164,22 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[suiteTreeEnded name='MyTest']\n" + "##teamcity[treeEnded]\n", "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + + "\n" + "##teamcity[testSuiteStarted name='MyTest']\n" + "\n" + "##teamcity[testStarted name='MyTest.testMe' locationHint='java:test://a.MyTest.testMe']\n" + "\n" + "##teamcity[testFinished name='MyTest.testMe']\n" + + "\n" + "##teamcity[testSuiteFinished name='MyTest']\n" + + "\n" + "##teamcity[testSuiteStarted name='MyTest']\n" + "\n" + "##teamcity[testStarted name='MyTest.testMe' locationHint='java:test://b.MyTest.testMe']\n" + "\n" + "##teamcity[testFinished name='MyTest.testMe']\n" + - "##teamcity[testSuiteFinished nam" + - "e='MyTest']\n"); + "\n" + + "##teamcity[testSuiteFinished name='MyTest']"); } @Test @@ -184,18 +200,22 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[treeEnded]\n", //start "##teamcity[rootName name = 'TestA' comment = 'a' location = 'java:suite://a.TestA']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + "\n" + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "\n" + "##teamcity[testFinished name='testName|[0|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[1|]']\n" + "\n" + "##teamcity[testStarted name='testName|[1|]' locationHint='java:test://a.TestA.testName|[1|]']\n" + "\n" + "##teamcity[testFinished name='testName|[1|]']\n" + - "##teamcity[testSuiteFinished name='|[1|]']\n"); + "\n" + + "##teamcity[testSuiteFinished name='|[1|]']"); } @Test @@ -222,18 +242,22 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[treeEnded]\n", //start "##teamcity[rootName name = 'TestA' comment = 'a' location = 'java:suite://a.TestA']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + "\n" + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "\n" + "##teamcity[testFinished name='testName|[0|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + "\n" + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://a.TestA.testName|[0|]']\n" + "\n" + "##teamcity[testFinished name='testName|[0|]']\n" + - "##teamcity[testSuiteFinished name='|[0|]']\n"); + "\n" + + "##teamcity[testSuiteFinished name='|[0|]']"); } @Test @@ -260,18 +284,22 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[treeEnded]\n", //start "##teamcity[rootName name = 'TestA' comment = 'a' location = 'java:suite://a.TestA']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[0: with - 1.1|]']\n" + "\n" + "##teamcity[testStarted name='testName|[0: with - 1.1|]' locationHint='java:test://a.TestA.testName|[0: with - 1.1|]']\n" + "\n" + "##teamcity[testFinished name='testName|[0: with - 1.1|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[0: with - 1.1|]']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[1: with - 2.1|]']\n" + "\n" + "##teamcity[testStarted name='testName|[1: with - 2.1|]' locationHint='java:test://a.TestA.testName|[1: with - 2.1|]']\n" + "\n" + "##teamcity[testFinished name='testName|[1: with - 2.1|]']\n" + - "##teamcity[testSuiteFinished name='|[1: with - 2.1|]']\n"); + "\n" + + "##teamcity[testSuiteFinished name='|[1: with - 2.1|]']"); } @Test @@ -307,22 +335,29 @@ public class JUnitTreeByDescriptionHierarchyTest { //started "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + + "\n" + "##teamcity[testSuiteStarted name='ASuite1']\n" + + "\n" + "##teamcity[testSuiteStarted name='ATest']\n" + "\n" + "##teamcity[testStarted name='ATest.test1' locationHint='java:test://ATest.test1']\n" + "\n" + "##teamcity[testFinished name='ATest.test1']\n" + + "\n" + "##teamcity[testSuiteFinished name='ATest']\n" + + "\n" + "##teamcity[testSuiteFinished name='ASuite1']\n" + + "\n" + "##teamcity[testSuiteStarted name='ASuite2']\n" + + "\n" + "##teamcity[testSuiteStarted name='ATest']\n" + "\n" + "##teamcity[testStarted name='ATest.test1' locationHint='java:test://ATest.test1']\n" + "\n" + "##teamcity[testFinished name='ATest.test1']\n" + + "\n" + "##teamcity[testSuiteFinished name='ATest']\n" + - "##teamcity[testSuiteFinished name='ASuite2']\n"); + "##teamcity[testSuiteFinished name='ASuite2']"); } private static void doTest(Description root, List tests, String expectedTree, String expectedStart) throws Exception { @@ -371,6 +406,7 @@ public class JUnitTreeByDescriptionHierarchyTest { sender.testRunFinished(new Result()); Assert.assertEquals("output: " + buf, "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + + "\n" + "##teamcity[testSuiteStarted name='TestA']\n" + "\n" + "##teamcity[testStarted name='TestA.testName' locationHint='java:test://TestA.testName']\n" + @@ -378,7 +414,8 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[testIgnored name='TestA.testName' details='java.lang.Exception|n' error='true' message='']\n" + "\n" + "##teamcity[testFinished name='TestA.testName']\n" + - "##teamcity[testSuiteFinished name='TestA']\n", StringUtil.convertLineSeparators(buf.toString())); + "\n" + + "##teamcity[testSuiteFinished name='TestA']", StringUtil.convertLineSeparators(buf.toString())); } @Test @@ -408,11 +445,13 @@ public class JUnitTreeByDescriptionHierarchyTest { sender.testRunFinished(new Result()); Assert.assertEquals("output: " + buf, "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + + "\n" + "##teamcity[testStarted name='Class Configuration' locationHint='java:suite://TestA' ]\n" + "\n" + "##teamcity[testFailed name='Class Configuration' details='java.lang.Exception|n' error='true' message='']\n" + "\n" + "##teamcity[testFinished name='Class Configuration']\n" + + "\n" + "##teamcity[testSuiteStarted name='TestA']\n" + "\n" + "##teamcity[testStarted name='TestA.testName' locationHint='java:test://TestA.testName']\n" + @@ -420,7 +459,8 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[testIgnored name='TestA.testName']\n" + "\n" + "##teamcity[testFinished name='TestA.testName']\n" + - "##teamcity[testSuiteFinished name='TestA']\n", StringUtil.convertLineSeparators(buf.toString())); + "\n" + + "##teamcity[testSuiteFinished name='TestA']", StringUtil.convertLineSeparators(buf.toString())); } @Test @@ -497,17 +537,20 @@ public class JUnitTreeByDescriptionHierarchyTest { sender.testRunFinished(new Result()); Assert.assertEquals("output: " + buf, "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + + "\n" + "##teamcity[testSuiteStarted name='TestA']\n" + "\n" + "##teamcity[testStarted name='TestA.testName' locationHint='java:test://TestA.testName']\n" + "\n" + "##teamcity[testFinished name='TestA.testName']\n" + + "\n" + "##teamcity[testStarted name='Class Configuration' locationHint='java:suite://TestA' ]\n" + "\n" + "##teamcity[testFailed name='Class Configuration' details='java.lang.Exception|n' error='true' message='']\n" + "\n" + "##teamcity[testFinished name='Class Configuration']\n" + - "##teamcity[testSuiteFinished name='TestA']\n", StringUtil.convertLineSeparators(buf.toString())); + "\n" + + "##teamcity[testSuiteFinished name='TestA']", StringUtil.convertLineSeparators(buf.toString())); } @Test @@ -541,7 +584,9 @@ public class JUnitTreeByDescriptionHierarchyTest { sender.testRunFinished(new Result()); Assert.assertEquals("output: " + buf, "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + + "\n" + "##teamcity[testSuiteStarted name='TestA']\n" + + "\n" + "##teamcity[testSuiteStarted name='param']\n" + "\n" + "##teamcity[testStarted name='TestA.testName' locationHint='java:test://TestA.testName']\n" + @@ -549,8 +594,9 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[testIgnored name='TestA.testName' details='java.lang.Exception|n' error='true' message='']\n" + "\n" + "##teamcity[testFinished name='TestA.testName']\n" + + "\n" + "##teamcity[testSuiteFinished name='param']\n" + - "##teamcity[testSuiteFinished name='TestA']\n", StringUtil.convertLineSeparators(buf.toString())); + "##teamcity[testSuiteFinished name='TestA']", StringUtil.convertLineSeparators(buf.toString())); buf.setLength(0); //testStarted and testFinished are called by the framework @@ -601,18 +647,22 @@ public class JUnitTreeByDescriptionHierarchyTest { sender.testRunFinished(new Result()); Assert.assertEquals("output: " + buf, "##teamcity[enteredTheMatrix]\n" + + "\n" + "##teamcity[testSuiteStarted name='TestA' locationHint='java:suite://a.TestA']\n" + "\n" + "##teamcity[testStarted name='TestA.testName' locationHint='java:test://a.TestA.testName']\n" + "\n" + "##teamcity[testFinished name='TestA.testName']\n" + + "\n" + "##teamcity[testSuiteFinished name='TestA']\n" + + "\n" + "##teamcity[testSuiteStarted name='TestB' locationHint='java:suite://a.TestB']\n" + "\n" + "##teamcity[testStarted name='TestB.testName' locationHint='java:test://a.TestB.testName']\n" + "\n" + "##teamcity[testFinished name='TestB.testName']\n" + - "##teamcity[testSuiteFinished name='TestB']\n", StringUtil.convertLineSeparators(buf.toString())); + "\n" + + "##teamcity[testSuiteFinished name='TestB']", StringUtil.convertLineSeparators(buf.toString())); } private static JUnit4TestListener createListener(final StringBuffer buf) { @@ -655,6 +705,7 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[rootName name = 'ATest' location = 'java:suite://ATest']\n" + + "\n" + "##teamcity[testSuiteStarted name='testName']\n" + "\n" + "##teamcity[testStarted name='ATest.testName|[0|]' locationHint='java:test://ATest.testName|[0|]']\n" + @@ -664,7 +715,8 @@ public class JUnitTreeByDescriptionHierarchyTest { "##teamcity[testStarted name='ATest.testName|[1|]' locationHint='java:test://ATest.testName|[1|]']\n" + "\n" + "##teamcity[testFinished name='ATest.testName|[1|]']\n" + - "##teamcity[testSuiteFinished name='testName']\n"); + "\n" + + "##teamcity[testSuiteFinished name='testName']"); } @Test @@ -700,28 +752,37 @@ public class JUnitTreeByDescriptionHierarchyTest { //start "##teamcity[rootName name = 'root' location = 'java:suite://root']\n" + + "\n" + "##teamcity[testSuiteStarted name='ATest']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[0|]']\n" + "\n" + "##teamcity[testStarted name='testName|[0|]' locationHint='java:test://ATest.testName|[0|]']\n" + "\n" + "##teamcity[testFinished name='testName|[0|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[0|]']\n" + + "\n" + "##teamcity[testSuiteStarted name='|[1|]']\n" + "\n" + "##teamcity[testStarted name='testName|[1|]' locationHint='java:test://ATest.testName|[1|]']\n" + "\n" + "##teamcity[testFinished name='testName|[1|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='|[1|]']\n" + + "\n" + "##teamcity[testSuiteFinished name='ATest']\n" + + "\n" + "##teamcity[testSuiteStarted name='suite']\n" + + "\n" + "##teamcity[testSuiteStarted name='ATest']\n" + "\n" + "##teamcity[testStarted name='ATest.test' locationHint='java:test://ATest.test']\n" + "\n" + "##teamcity[testFinished name='ATest.test']\n" + + "\n" + "##teamcity[testSuiteFinished name='ATest']\n" + - "##teamcity[testSuiteFinished name='suite']\n"); + "##teamcity[testSuiteFinished name='suite']"); } diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java index aa5ff995547d..b0885a7761cb 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java @@ -86,7 +86,7 @@ public class JUnit4TestListener extends RunListener { dumpQueue(true); for (int i = myStartedSuites.size() - 1; i>= 0; i--) { Object parent = JUnit4ReflectionUtil.getClassName((Description)myStartedSuites.get(i)); - myPrintStream.println("##teamcity[testSuiteFinished name=\'" + escapeName(getShortName((String)parent)) + "\']"); + myPrintStream.print("\n##teamcity[testSuiteFinished name=\'" + escapeName(getShortName((String)parent)) + "\']"); } myStartedSuites.clear(); } @@ -131,7 +131,7 @@ public class JUnit4TestListener extends RunListener { for (int i = myStartedSuites.size() - 1; i >= idx; i--) { currentClass = (Description)myStartedSuites.remove(i); myFinishedCount = 0; - myPrintStream.println("##teamcity[testSuiteFinished name=\'" + escapeName(getShortName(JUnit4ReflectionUtil.getClassName(currentClass))) + "\']"); + myPrintStream.println("\n##teamcity[testSuiteFinished name=\'" + escapeName(getShortName(JUnit4ReflectionUtil.getClassName(currentClass))) + "\']"); } for (int i = idx; i < parentsHierarchy.size(); i++) { @@ -139,7 +139,7 @@ public class JUnit4TestListener extends RunListener { final String fqName = JUnit4ReflectionUtil.getClassName(descriptionFromHistory); final String className = getShortName(fqName); if (!className.equals(myRootName)) { - myPrintStream.println("##teamcity[testSuiteStarted name=\'" + escapeName(className) + "\'" + (parents == null ? getClassLocation(fqName) : "") + "]"); + myPrintStream.println("\n##teamcity[testSuiteStarted name=\'" + escapeName(className) + "\'" + (parents == null ? getClassLocation(fqName) : "") + "]"); myStartedSuites.add(descriptionFromHistory); } } @@ -252,7 +252,7 @@ public class JUnit4TestListener extends RunListener { } myCurrentTest = description; - myPrintStream.println("##teamcity[testStarted name=\'" + escapeName(CLASS_CONFIGURATION) + "\' " + getClassLocation(JUnit4ReflectionUtil.getClassName(description)) + " ]"); + myPrintStream.println("\n##teamcity[testStarted name=\'" + escapeName(CLASS_CONFIGURATION) + "\' " + getClassLocation(JUnit4ReflectionUtil.getClassName(description)) + " ]"); } private void testFailure(Failure failure, Description description, String messageName, String methodName) {