sm java test locator: accept param names with dot inside

This commit is contained in:
Anna Kozlova
2015-04-14 16:34:46 +02:00
parent 08a5ba094f
commit 9476fcf548
2 changed files with 16 additions and 30 deletions
@@ -47,25 +47,21 @@ public class JavaTestLocationProvider implements TestLocationProvider {
public List<Location> getLocation(@NotNull String protocolId, @NotNull String locationData, Project project) {
List<Location> results = Collections.emptyList();
final int idx = locationData.indexOf("[");
final String paramName = idx >= 0 ? locationData.substring(idx) : null;
if (idx >= 0) {
locationData = locationData.substring(0, idx);
}
final JavaPsiFacade javaPsiFacade = JavaPsiFacade.getInstance(project);
if (SUITE_PROTOCOL.equals(protocolId)) {
locationData = StringUtil.trimEnd(locationData, ".");
PsiClass[] classes = javaPsiFacade.findClasses(locationData, myScope);
if (classes.length > 0) {
results = ContainerUtil.newSmartList();
for (PsiClass aClass : classes) {
results.add(new PsiLocation<PsiClass>(project, aClass));
}
}
else {
//parameter root for parameterized tests: ClassName.[paramName]
final String className = StringUtil.getPackageName(locationData);
classes = javaPsiFacade.findClasses(className, myScope);
if (classes.length > 0) {
final String paramName = StringUtil.getShortName(locationData);
results = ContainerUtil.newSmartList();
for (PsiClass aClass : classes) {
results.add(PsiMemberParameterizedLocation.getParameterizedLocation(aClass, paramName));
}
results.add(paramName != null ? PsiMemberParameterizedLocation.getParameterizedLocation(aClass, paramName)
: new PsiLocation<PsiClass>(project, aClass));
}
}
}
@@ -80,18 +76,8 @@ public class JavaTestLocationProvider implements TestLocationProvider {
PsiMethod[] methods = aClass.findMethodsByName(methodName, true);
if (methods.length > 0) {
for (PsiMethod method : methods) {
results.add(MethodLocation.elementInClass(method, aClass));
}
}
else {
//parameterized tests: ClassName.testName[paramName]
final int paramIdx = methodName.indexOf("[");
if (paramIdx > -1 && methodName.endsWith("]")) {
final String paramName = methodName.substring(paramIdx);
methods = aClass.findMethodsByName(methodName.substring(0, paramIdx), true);
for (PsiMethod method : methods) {
results.add(new PsiMemberParameterizedLocation(project, method, aClass, paramName));
}
results.add(paramName != null ? new PsiMemberParameterizedLocation(project, method, aClass, paramName)
: MethodLocation.elementInClass(method, aClass));
}
}
}
@@ -87,10 +87,10 @@ public class JUnitRerunFailedTestsTest extends LightCodeInsightFixtureTestCase
final SMTestProxy rootProxy = new SMTestProxy("MyTest", true, "java:suite://MyTest");
rootProxy.setLocator(locationProvider);
final SMTestProxy proxyParam = new SMTestProxy("[0]", true, "java:suite://MyTest.[0]");
final SMTestProxy proxyParam = new SMTestProxy("[0.java]", true, "java:suite://MyTest.[0.java]");
proxyParam.setLocator(locationProvider);
final SMTestProxy parameterizedTestProxy = new SMTestProxy("testName1[0]", false, "java:test://MyTest.testName1[0]");
final SMTestProxy parameterizedTestProxy = new SMTestProxy("testName1[0.java]", false, "java:test://MyTest.testName1[0.java]");
parameterizedTestProxy.setLocator(locationProvider);
final Location rootLocation = rootProxy.getLocation(project, searchScope);
@@ -100,15 +100,15 @@ public class JUnitRerunFailedTestsTest extends LightCodeInsightFixtureTestCase
final Location proxyParamLocation = proxyParam.getLocation(project, searchScope);
assertNotNull(proxyParamLocation);
assertInstanceOf(proxyParamLocation, PsiMemberParameterizedLocation.class);
assertEquals("[0]", ((PsiMemberParameterizedLocation)proxyParamLocation).getParamSetName());
assertEquals("[0.java]", ((PsiMemberParameterizedLocation)proxyParamLocation).getParamSetName());
assertEquals(testClass, proxyParamLocation.getPsiElement());
final Location parameterizedTestProxyLocation = parameterizedTestProxy.getLocation(project, searchScope);
assertNotNull(parameterizedTestProxyLocation);
assertInstanceOf(parameterizedTestProxyLocation, PsiMemberParameterizedLocation.class);
assertEquals("[0]", ((PsiMemberParameterizedLocation)parameterizedTestProxyLocation).getParamSetName());
assertEquals("[0.java]", ((PsiMemberParameterizedLocation)parameterizedTestProxyLocation).getParamSetName());
assertEquals(testClass.getMethods()[0], parameterizedTestProxyLocation.getPsiElement());
assertEquals(testClass, ((PsiMemberParameterizedLocation)parameterizedTestProxyLocation).getContainingClass());
assertEquals("MyTest,testName1[0]", TestMethods.getTestPresentation(parameterizedTestProxy, project, searchScope));
assertEquals("MyTest,testName1[0.java]", TestMethods.getTestPresentation(parameterizedTestProxy, project, searchScope));
}
}