prefer tests over main on test methods (DEA-121541)

This commit is contained in:
Anna Kozlova
2014-03-14 21:34:24 +01:00
parent 8b37b2b5d6
commit 4e081bc204
3 changed files with 19 additions and 1 deletions
@@ -15,6 +15,7 @@
*/
package com.intellij.execution.application;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.execution.JavaExecutionUtil;
import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationContext;
@@ -82,8 +83,14 @@ public class ApplicationConfigurationProducer extends JavaRunConfigurationProduc
@Override
public boolean isConfigurationFromContext(ApplicationConfiguration appConfiguration, ConfigurationContext context) {
final PsiClass aClass = ApplicationConfigurationType.getMainClass(context.getPsiLocation());
final PsiElement location = context.getPsiLocation();
final PsiClass aClass = ApplicationConfigurationType.getMainClass(location);
if (aClass != null && Comparing.equal(JavaExecutionUtil.getRuntimeQualifiedName(aClass), appConfiguration.MAIN_CLASS_NAME)) {
final PsiMethod method = PsiTreeUtil.getParentOfType(location, PsiMethod.class, false);
if (method != null && TestFrameworks.getInstance().isTestMethod(method)) {
return false;
}
final Module configurationModule = appConfiguration.getConfigurationModule().getModule();
if (Comparing.equal(context.getModule(), configurationModule)) return true;
@@ -40,6 +40,8 @@ public abstract class TestFrameworks {
public abstract PsiMethod findTearDownMethod(PsiClass psiClass);
protected abstract boolean hasConfigMethods(PsiClass psiClass);
public abstract boolean isTestMethod(PsiMethod method);
public boolean isTestOrConfig(PsiClass psiClass) {
return isTestClass(psiClass) || hasConfigMethods(psiClass);
@@ -100,4 +100,13 @@ public class TestFrameworksImpl extends TestFrameworks {
}
return false;
}
@Override
public boolean isTestMethod(PsiMethod method) {
final TestFramework[] testFrameworks = Extensions.getExtensions(TestFramework.EXTENSION_NAME);
for (TestFramework framework : testFrameworks) {
if (framework.isTestMethod(method)) return true;
}
return false;
}
}