diff --git a/java/execution/impl/src/com/intellij/execution/junit2/info/LocationUtil.java b/java/execution/impl/src/com/intellij/execution/junit2/info/LocationUtil.java new file mode 100644 index 000000000000..338701e3af6e --- /dev/null +++ b/java/execution/impl/src/com/intellij/execution/junit2/info/LocationUtil.java @@ -0,0 +1,52 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.execution.junit2.info; + +import com.intellij.execution.Location; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtil; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiPackage; +import com.intellij.psi.search.GlobalSearchScope; +import org.jetbrains.annotations.NotNull; + +/** + * User: anna + * Date: 2/20/12 + */ +public class LocationUtil { + public static boolean isJarAttached(@NotNull Location location, final PsiPackage aPackage, final String fqn) { + final JavaPsiFacade facade = JavaPsiFacade.getInstance(location.getProject()); + boolean testngJarFound = false; + final Module locationModule = location.getModule(); + if (locationModule != null) { + testngJarFound = facade.findClass(fqn, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(locationModule, true)) != null; + } + else { + for (PsiDirectory directory : aPackage.getDirectories()) { + final Module module = ModuleUtil.findModuleForFile(directory.getVirtualFile(), location.getProject()); + if (module != null) { + if (facade.findClass(fqn, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, true)) != null) { + testngJarFound = true; + break; + } + } + } + } + return testngJarFound; + } +} diff --git a/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java b/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java index c068b5d61975..080fcc333ce8 100644 --- a/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java +++ b/plugins/junit/src/com/intellij/execution/junit/AllInPackageConfigurationProducer.java @@ -20,14 +20,10 @@ import com.intellij.execution.JavaRunConfigurationExtensionManager; import com.intellij.execution.Location; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleUtil; +import com.intellij.execution.junit2.info.LocationUtil; import com.intellij.openapi.project.Project; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPackage; -import com.intellij.psi.search.GlobalSearchScope; public class AllInPackageConfigurationProducer extends JUnitConfigurationProducer { @@ -38,24 +34,7 @@ public class AllInPackageConfigurationProducer extends JUnitConfigurationProduce final PsiElement element = location.getPsiElement(); myPackage = checkPackage(element); if (myPackage == null) return null; - final JavaPsiFacade facade = JavaPsiFacade.getInstance(project); - boolean junitJarFound = false; - final Module locationModule = location.getModule(); - if (locationModule != null) { - junitJarFound = facade.findClass(JUnitUtil.TESTCASE_CLASS, - GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(locationModule, true)) != null; - } else { - for (PsiDirectory directory : myPackage.getDirectories()) { - final Module module = ModuleUtil.findModuleForFile(directory.getVirtualFile(), project); - if (module != null) { - if (facade.findClass(JUnitUtil.TESTCASE_CLASS, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, true)) != null) { - junitJarFound = true; - break; - } - } - } - } - if (!junitJarFound) return null; + if (!LocationUtil.isJarAttached(location, myPackage, JUnitUtil.TESTCASE_CLASS)) return null; RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); final JUnitConfiguration configuration = (JUnitConfiguration)settings.getConfiguration(); final JUnitConfiguration.Data data = configuration.getPersistentData(); diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPackageConfigurationProducer.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPackageConfigurationProducer.java index 94996edd9d1c..5bf6ac939085 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPackageConfigurationProducer.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGPackageConfigurationProducer.java @@ -19,14 +19,10 @@ import com.intellij.execution.JavaRunConfigurationExtensionManager; import com.intellij.execution.Location; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleUtil; +import com.intellij.execution.junit2.info.LocationUtil; import com.intellij.openapi.project.Project; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPackage; -import com.intellij.psi.search.GlobalSearchScope; import com.theoryinpractice.testng.model.TestData; import com.theoryinpractice.testng.model.TestType; import com.theoryinpractice.testng.util.TestNGUtil; @@ -39,18 +35,7 @@ public class TestNGPackageConfigurationProducer extends TestNGConfigurationProdu final PsiElement element = location.getPsiElement(); myPackage = checkPackage(element); if (myPackage == null) return null; - final JavaPsiFacade facade = JavaPsiFacade.getInstance(project); - boolean testngJarFound = false; - for (PsiDirectory directory : myPackage.getDirectories()) { - final Module module = ModuleUtil.findModuleForFile(directory.getVirtualFile(), project); - if (module != null) { - if (facade.findClass(TestNGUtil.TEST_ANNOTATION_FQN, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, true)) != null) { - testngJarFound = true; - break; - } - } - } - if (!testngJarFound) return null; + if (!LocationUtil.isJarAttached(location, myPackage, TestNGUtil.TEST_ANNOTATION_FQN)) return null; RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); final TestNGConfiguration configuration = (TestNGConfiguration)settings.getConfiguration(); final TestData data = configuration.data;