From a2ca8fdd9d49942cf7da025619c10ea389dbb68d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 10 Apr 2015 15:05:35 +0200 Subject: [PATCH] java locator: provide navigation for java test framework console --- .../execution/JavaTestFrameworkRunnableState.java | 2 +- .../execution/testframework/JavaTestLocationProvider.java | 8 ++++---- .../junit_rt/src/com/intellij/junit4/SMTestSender.java | 8 +++++--- plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java | 6 ++---- .../src/org/testng/IDEATestNGRemoteListener.java | 4 +++- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java b/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java index 604da8461825..a7641e2a4c4f 100644 --- a/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java +++ b/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java @@ -96,7 +96,7 @@ public abstract class JavaTestFrameworkRunnableState 0 && p < locationData.length() - 1) { - String className = locationData.substring(0, p); + final String className = StringUtil.getPackageName(locationData); + if (!StringUtil.isEmpty(className)) { + final String methodName = StringUtil.getShortName(locationData); PsiClass[] classes = JavaPsiFacade.getInstance(project).findClasses(className, myScope); if (classes.length > 0) { results = ContainerUtil.newSmartList(); - String methodName = locationData.substring(p + 1); for (PsiClass aClass : classes) { PsiMethod[] methods = aClass.findMethodsByName(methodName, true); for (PsiMethod method : methods) { diff --git a/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java b/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java index 79eba31c199b..c3481145f71a 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java +++ b/plugins/junit_rt/src/com/intellij/junit4/SMTestSender.java @@ -173,8 +173,9 @@ class SMTestSender extends RunListener { private static void sendTree(JUnit4IdeaTestRunner runner, Object description, List tests) { if (tests.isEmpty()) { - System.out.println("##teamcity[suiteTreeNode name=\'" + JUnit4ReflectionUtil.getMethodName((Description)description) - + "\' locationHint=\'" + JUnit4ReflectionUtil.getClassName((Description)description) + "\']"); + final String methodName = JUnit4ReflectionUtil.getMethodName((Description)description); + System.out.println("##teamcity[suiteTreeNode name=\'" + methodName + + "\' locationHint=\'java:test://" + JUnit4ReflectionUtil.getClassName((Description)description) + "." + methodName + "\']"); } boolean pass = false; for (Iterator iterator = tests.iterator(); iterator.hasNext(); ) { @@ -182,7 +183,8 @@ class SMTestSender extends RunListener { final List childTests = runner.getChildTests(next); if (childTests.isEmpty() && !pass) { pass = true; - System.out.println("##teamcity[suiteTreeStarted name=\'" + JUnit4ReflectionUtil.getClassName((Description)description) + "\']"); + System.out.println("##teamcity[suiteTreeStarted name=\'" + JUnit4ReflectionUtil.getClassName((Description)description) + + "\' locationHint=\'java:suite://" + JUnit4ReflectionUtil.getClassName((Description)description) + "\']"); } sendTree(runner, next, childTests); } diff --git a/plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java b/plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java index 3b3de93b33f9..baa732ad087b 100644 --- a/plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java +++ b/plugins/testng_rt/src/org/testng/IDEARemoteTestNG.java @@ -18,8 +18,6 @@ package org.testng; import jetbrains.buildServer.messages.serviceMessages.ServiceMessage; import org.testng.collections.Lists; -import org.testng.remote.strprotocol.GenericMessage; -import org.testng.remote.strprotocol.MessageHelper; import org.testng.xml.XmlClass; import org.testng.xml.XmlInclude; import org.testng.xml.XmlSuite; @@ -48,11 +46,11 @@ public class IDEARemoteTestNG extends TestNG { int testCount= 0; for (XmlSuite suite : suites) { - System.out.println("##teamcity[suiteTreeStarted name=\'" + suite.getName() + "\']"); + System.out.println("##teamcity[suiteTreeStarted name=\'" + suite.getName() + "\' locationHint=\'java:suite://" + suite.getName() + "\']"); final List tests = suite.getTests(); for (XmlTest test : tests) { for (XmlClass aClass : test.getXmlClasses()) { - System.out.println("##teamcity[suiteTreeStarted name=\'" + aClass.getName() + "\']"); + System.out.println("##teamcity[suiteTreeStarted name=\'" + aClass.getName() + "\' locationHint=\'java:suite://" + aClass.getName() + "\']"); for (XmlInclude include : aClass.getIncludedMethods()) { System.out.println("##teamcity[suiteTreeNode name=\'" + include.getName() + "\']"); } diff --git a/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java b/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java index 047cadb43aeb..e04139ccba42 100644 --- a/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java +++ b/plugins/testng_rt/src/org/testng/IDEATestNGRemoteListener.java @@ -46,7 +46,9 @@ public class IDEATestNGRemoteListener implements ISuiteListener, IResultListener System.out.println("##teamcity[testSuiteStarted name =\'" + className + "\']"); myCurrentClassName = className; } - System.out.println("##teamcity[testStarted name=\'" + result.getMethod().getMethodName() + "\']"); + final String methodName = result.getMethod().getMethodName(); + System.out.println("##teamcity[testStarted name=\'" + + methodName + "\' locationHint=\'java:test://" + className + "." + methodName + "\']"); } public void onTestSuccess(ITestResult result) {