@Nullability; ensure create configurations for project classes only

This commit is contained in:
Anna Kozlova
2015-06-16 21:01:05 +03:00
parent 12a17e8031
commit ac898e2b62
3 changed files with 16 additions and 3 deletions
@@ -28,13 +28,14 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.ClassUtil;
import com.intellij.psi.util.PsiClassUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -183,8 +184,14 @@ public class JavaExecutionUtil {
return name == null || name.startsWith(ExecutionBundle.message("run.configuration.unnamed.name.prefix"));
}
@Nullable
public static Location stepIntoSingleClass(@NotNull final Location location) {
PsiElement element = location.getPsiElement();
final VirtualFile virtualFile = PsiUtilCore.getVirtualFile(element);
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(location.getProject()).getFileIndex();
if (virtualFile == null || !fileIndex.isInSource(virtualFile)) {
return null;
}
if (!(element instanceof PsiClassOwner)) {
if (PsiTreeUtil.getParentOfType(element, PsiClass.class) != null) return location;
element = PsiTreeUtil.getParentOfType(element, PsiClassOwner.class);
@@ -52,6 +52,9 @@ public abstract class JUnitConfigurationProducer extends JavaRunConfigurationPro
? ((PsiMemberParameterizedLocation)contextLocation).getParamSetName() : null;
assert contextLocation != null;
Location location = JavaExecutionUtil.stepIntoSingleClass(contextLocation);
if (location == null) {
return false;
}
final PsiElement element = location.getPsiElement();
final PsiClass testClass = JUnitUtil.getTestClass(element);
final PsiMethod testMethod = JUnitUtil.getTestMethod(element, false);
@@ -49,6 +49,9 @@ public abstract class TestNGConfigurationProducer extends JavaRunConfigurationPr
final RunConfiguration predefinedConfiguration = context.getOriginalConfiguration(TestNGConfigurationType.getInstance());
final Location contextLocation = context.getLocation();
Location location = JavaExecutionUtil.stepIntoSingleClass(contextLocation);
if (location == null) {
return false;
}
final PsiElement element = location.getPsiElement();
RunnerAndConfigurationSettings template = RunManager.getInstance(location.getProject()).getConfigurationTemplate(getConfigurationFactory());
final Module predefinedModule = ((TestNGConfiguration)template.getConfiguration()).getConfigurationModule().getModule();