java locator: provide navigation for java test framework console

This commit is contained in:
Anna Kozlova
2015-04-10 20:03:48 +02:00
parent 01c4172efb
commit a2ca8fdd9d
5 changed files with 15 additions and 13 deletions
@@ -96,7 +96,7 @@ public abstract class JavaTestFrameworkRunnableState<T extends ModuleBasedConfig
testConsoleProperties.setIfUndefined(TestConsoleProperties.HIDE_PASSED_TESTS, false);
final BaseTestsOutputConsoleView consoleView =
SMTestRunnerConnectionUtil.createConsoleWithCustomLocator(getFrameworkName(), testConsoleProperties, getEnvironment(), null);
SMTestRunnerConnectionUtil.createConsoleWithCustomLocator(getFrameworkName(), testConsoleProperties, getEnvironment(), new JavaTestLocationProvider(testConsoleProperties.getScope()));
final SMTestRunnerResultsForm viewer = ((SMTRunnerConsoleView)consoleView).getResultsViewer();
Disposer.register(getConfiguration().getProject(), consoleView);
@@ -18,6 +18,7 @@ package com.intellij.execution.testframework;
import com.intellij.execution.Location;
import com.intellij.execution.PsiLocation;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiMethod;
@@ -54,13 +55,12 @@ public class JavaTestLocationProvider implements TestLocationProvider {
}
}
else if (TEST_PROTOCOL.equals(protocolId)) {
int p = locationData.lastIndexOf('.');
if (p > 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) {