From e3fbc7dd4210d09ee9f86d1e98e431ff79280881 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 20 Apr 2017 17:25:26 +0200 Subject: [PATCH] testng: include invocation number onto configuration methods as they may conflict during parallel execution (IDEA-171382) --- .../TestNGTreeHierarchyTest.java | 54 +++++++++---------- .../org/testng/IDEATestNGRemoteListener.java | 8 ++- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/plugins/testng/testSources/com/theoryinpractice/testng/configuration/TestNGTreeHierarchyTest.java b/plugins/testng/testSources/com/theoryinpractice/testng/configuration/TestNGTreeHierarchyTest.java index 323dbdbbbcef..5c1157f31b57 100644 --- a/plugins/testng/testSources/com/theoryinpractice/testng/configuration/TestNGTreeHierarchyTest.java +++ b/plugins/testng/testSources/com/theoryinpractice/testng/configuration/TestNGTreeHierarchyTest.java @@ -226,32 +226,32 @@ public class TestNGTreeHierarchyTest { Assert.assertEquals("output: " + buf,"##teamcity[enteredTheMatrix]\n" + "\n" + - "##teamcity[testSuiteStarted name ='ATest' locationHint = 'java:suite://a.ATest']\n" + - "\n" + - "##teamcity[testStarted name='ATest.setUp' locationHint='java:test://a.ATest.setUp' config='true']\n" + - "\n" + - "##teamcity[testFinished name='ATest.setUp']\n" + - "\n" + - "##teamcity[testStarted name='ATest.test1' locationHint='java:test://a.ATest.test1|[0|]']\n" + - "\n" + - "##teamcity[testFinished name='ATest.test1']\n" + - "\n" + - "##teamcity[testStarted name='ATest.tearDown' locationHint='java:test://a.ATest.tearDown' config='true']\n" + - "\n" + - "##teamcity[testFinished name='ATest.tearDown']\n" + - "\n" + - "##teamcity[testStarted name='ATest.setUp' locationHint='java:test://a.ATest.setUp' config='true']\n" + - "\n" + - "##teamcity[testFinished name='ATest.setUp']\n" + - "\n" + - "##teamcity[testStarted name='ATest.test2' locationHint='java:test://a.ATest.test2|[0|]']\n" + - "\n" + - "##teamcity[testFinished name='ATest.test2']\n" + - "\n" + - "##teamcity[testStarted name='ATest.tearDown' locationHint='java:test://a.ATest.tearDown' config='true']\n" + - "\n" + - "##teamcity[testFinished name='ATest.tearDown']\n" + - "##teamcity[testSuiteFinished name='a.ATest']\n", StringUtil.convertLineSeparators(buf.toString())); + "##teamcity[testSuiteStarted name ='ATest' locationHint = 'java:suite://a.ATest']\n" + + "\n" + + "##teamcity[testStarted name='ATest.setUp' locationHint='java:test://a.ATest.setUp|[0|]' config='true']\n" + + "\n" + + "##teamcity[testFinished name='ATest.setUp']\n" + + "\n" + + "##teamcity[testStarted name='ATest.test1' locationHint='java:test://a.ATest.test1|[0|]']\n" + + "\n" + + "##teamcity[testFinished name='ATest.test1']\n" + + "\n" + + "##teamcity[testStarted name='ATest.tearDown' locationHint='java:test://a.ATest.tearDown|[0|]' config='true']\n" + + "\n" + + "##teamcity[testFinished name='ATest.tearDown']\n" + + "\n" + + "##teamcity[testStarted name='ATest.setUp (1)' locationHint='java:test://a.ATest.setUp|[1|]' config='true']\n" + + "\n" + + "##teamcity[testFinished name='ATest.setUp (1)']\n" + + "\n" + + "##teamcity[testStarted name='ATest.test2' locationHint='java:test://a.ATest.test2|[0|]']\n" + + "\n" + + "##teamcity[testFinished name='ATest.test2']\n" + + "\n" + + "##teamcity[testStarted name='ATest.tearDown (1)' locationHint='java:test://a.ATest.tearDown|[1|]' config='true']\n" + + "\n" + + "##teamcity[testFinished name='ATest.tearDown (1)']\n" + + "##teamcity[testSuiteFinished name='a.ATest']\n", StringUtil.convertLineSeparators(buf.toString())); } @Test @@ -269,7 +269,7 @@ public class TestNGTreeHierarchyTest { "\n" + "##teamcity[testSuiteStarted name ='ATest' locationHint = 'java:suite://a.ATest']\n" + "\n" + - "##teamcity[testStarted name='ATest.setUp' locationHint='java:test://a.ATest.setUp' config='true']\n" + + "##teamcity[testStarted name='ATest.setUp' locationHint='java:test://a.ATest.setUp|[0|]' config='true']\n" + "\n" + "##teamcity[testFailed name='ATest.setUp' details='java.lang.Exception|n' error='true' message='']\n" + "\n" + diff --git a/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java b/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java index 677ebb2b0eee..ab64cd55a631 100644 --- a/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java +++ b/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java @@ -126,6 +126,10 @@ public class IDEATestNGRemoteListener { public synchronized void onFinish(ITestContext context) {} public void onTestStart(ExposedTestResult result) { + onStartWithParameters(result, false); + } + + public void onStartWithParameters(ExposedTestResult result, boolean config) { final Object[] parameters = result.getParameters(); final String qualifiedName = result.getClassName() + result.getDisplayMethodName(); Integer invocationCount = myInvocationCounts.get(qualifiedName); @@ -134,7 +138,7 @@ public class IDEATestNGRemoteListener { } Integer normalizedIndex = normalizeInvocationCountInsideIncludedMethods(invocationCount, result); final String paramString = getParamsString(parameters, normalizedIndex); - onTestStart(result, paramString, normalizedIndex, false); + onTestStart(result, paramString, normalizedIndex, config); myInvocationCounts.put(qualifiedName, invocationCount + 1); } @@ -147,7 +151,7 @@ public class IDEATestNGRemoteListener { } public void onConfigurationStart(ExposedTestResult result) { - onTestStart(result, null, -1, true); + onStartWithParameters(result, true); } public void onConfigurationSuccess(ExposedTestResult result) {