fixed PY-11099 Test runner is trashed
authorEkaterina Tuzova <Ekaterina.Tuzova@jetbrains.com>
Mon, 14 Oct 2013 14:01:38 +0000 (16:01 +0200)
committerEkaterina Tuzova <Ekaterina.Tuzova@jetbrains.com>
Mon, 14 Oct 2013 14:01:38 +0000 (16:01 +0200)
python/src/com/jetbrains/python/testing/PythonTestConfigurationProducer.java
python/src/com/jetbrains/python/testing/doctest/PythonDocTestConfigurationProducer.java

index 3dcbabd5fb36868110eb32be529de8b849d6621c..a1e9dfc109e0ed4bdb3715fa154fe7fabcdf9c7e 100644 (file)
@@ -1,5 +1,6 @@
 package com.jetbrains.python.testing;
 
+import com.google.common.collect.Sets;
 import com.intellij.execution.Location;
 import com.intellij.execution.actions.ConfigurationContext;
 import com.intellij.execution.actions.RunConfigurationProducer;
@@ -9,6 +10,8 @@ import com.intellij.facet.FacetManager;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.module.ModuleType;
 import com.intellij.openapi.module.ModuleUtilCore;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.ProjectRootManager;
 import com.intellij.openapi.util.Ref;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
@@ -120,7 +123,7 @@ abstract public class PythonTestConfigurationProducer extends RunConfigurationPr
   private boolean setupConfigurationFromFolder(@NotNull final PsiDirectory element,
                                                       @NotNull final AbstractPythonTestRunConfiguration configuration) {
     final VirtualFile virtualFile = element.getVirtualFile();
-    if (!isTestFolder(virtualFile)) return false;
+    if (!isTestFolder(virtualFile, element.getProject())) return false;
     final String path = virtualFile.getPath();
 
     configuration.setTestType(AbstractPythonTestRunConfiguration.TestType.TEST_FOLDER);
@@ -182,9 +185,10 @@ abstract public class PythonTestConfigurationProducer extends RunConfigurationPr
     return true;
   }
 
-  protected boolean isTestFolder(@NotNull final VirtualFile virtualFile) {
+  protected boolean isTestFolder(@NotNull final VirtualFile virtualFile, @NotNull final Project project) {
     final String name = virtualFile.getName();
-    return name.toLowerCase().contains("test");
+    final VirtualFile[] roots = ProjectRootManager.getInstance(project).getContentSourceRoots();
+    return name.toLowerCase().contains("test") || Sets.newHashSet(roots).contains(virtualFile);
   }
 
   protected boolean isAvailable(@NotNull final Location location) {
index 3b1a85d7c153bc7e09f537ab817b842384f84f7f..1defe36d876d04472557600148899d1b6316a161 100644 (file)
@@ -5,7 +5,6 @@ package com.jetbrains.python.testing.doctest;
 
 import com.intellij.execution.Location;
 import com.intellij.openapi.module.Module;
-import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiFile;
 import com.intellij.psi.PsiRecursiveElementVisitor;
@@ -43,11 +42,6 @@ public class PythonDocTestConfigurationProducer extends PythonTestConfigurationP
     return !testCases.isEmpty();
   }
 
-  @Override
-  protected boolean isTestFolder(@NotNull final VirtualFile virtualFile) {
-    return true;
-  }
-
   protected boolean isAvailable(@NotNull final Location location) {
     final Module module = location.getModule();
     if (!isPythonModule(module)) return false;