removed dependencies on junit from production code

This commit is contained in:
nik
2012-09-07 10:15:42 +04:00
parent 620c90b10d
commit eea3368a3c
6 changed files with 22 additions and 79 deletions
-1
View File
@@ -11,7 +11,6 @@
<orderEntry type="module" module-name="execution-openapi" />
<orderEntry type="module" module-name="java-runtime" />
<orderEntry type="module" module-name="debugger-impl" />
<orderEntry type="library" name="JUnit4" level="project" />
<orderEntry type="library" name="jgoodies-forms" level="project" />
<orderEntry type="module" module-name="testRunner" exported="" />
<orderEntry type="module" module-name="compiler-openapi" />
@@ -24,9 +24,9 @@ import com.intellij.execution.JavaExecutionUtil;
import com.intellij.execution.Location;
import com.intellij.execution.RunnerAndConfigurationSettings;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.junit.JUnitUtil;
import com.intellij.execution.junit.JavaRuntimeConfigurationProducerBase;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.psi.JavaPsiFacade;
@@ -36,6 +36,7 @@ import com.intellij.psi.PsiManager;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiClassUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class AppletConfigurationProducer extends JavaRuntimeConfigurationProducerBase {
private PsiClass myPsiClass;
@@ -60,7 +61,7 @@ public class AppletConfigurationProducer extends JavaRuntimeConfigurationProduce
RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context);
final AppletConfiguration configuration = (AppletConfiguration)settings.getConfiguration();
configuration.MAIN_CLASS_NAME = JavaExecutionUtil.getRuntimeQualifiedName(myPsiClass);
configuration.setModule(new JUnitUtil.ModuleOfClass().convert(myPsiClass));
configuration.setModule(myPsiClass.isValid() ? ModuleUtilCore.findModuleForPsiElement(myPsiClass) : null);
configuration.setName(configuration.getGeneratedName());
return settings;
}
@@ -70,6 +71,7 @@ public class AppletConfigurationProducer extends JavaRuntimeConfigurationProduce
}
@Nullable
private static PsiClass getAppletClass(PsiElement element, final PsiManager manager) {
while (element != null) {
if (element instanceof PsiClass) {
@@ -20,7 +20,6 @@ import com.intellij.execution.*;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.execution.testframework.SourceScope;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Condition;
@@ -30,18 +29,13 @@ import com.intellij.psi.search.searches.ClassInheritorsSearch;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PsiClassUtil;
import com.intellij.util.Processor;
import com.intellij.util.containers.Convertor;
import junit.runner.BaseTestRunner;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runners.Parameterized;
import java.util.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
@SuppressWarnings({"UtilityClassWithoutPrivateConstructor"})
public class JUnitUtil {
@@ -51,6 +45,12 @@ public class JUnitUtil {
@NonNls private static final String TEST_ANNOTATION = "org.junit.Test";
@NonNls public static final String RUN_WITH = "org.junit.runner.RunWith";
@NonNls public static final String SUITE_METHOD_NAME = "suite";
private static final String BEFORE_ANNOTATION_NAME = "org.junit.Before";
private static final String AFTER_ANNOTATION_NAME = "org.junit.After";
private static final String PARAMETRIZED_PARAMETERS_ANNOTATION_NAME = "org.junit.runners.Parameterized.Parameters";
private static final String AFTER_CLASS_ANNOTATION_NAME = "org.junit.AfterClass";
private static final String BEFORE_CLASS_ANNOTATION_NAME = "org.junit.BeforeClass";
private static final String PARAMETERIZED_CLASS_NAME = "org.junit.runners.Parameterized";
public static boolean isSuiteMethod(@NotNull PsiMethod psiMethod) {
if (!psiMethod.hasModifierProperty(PsiModifier.PUBLIC)) return false;
@@ -78,7 +78,7 @@ public class JUnitUtil {
if (psiMethod.hasModifierProperty(PsiModifier.ABSTRACT)) return false;
if (AnnotationUtil.isAnnotated(aClass, RUN_WITH, true)) return true;
if (psiMethod.getParameterList().getParametersCount() > 0) return false;
if (psiMethod.hasModifierProperty(PsiModifier.STATIC) && BaseTestRunner.SUITE_METHODNAME.equals(psiMethod.getName())) return false;
if (psiMethod.hasModifierProperty(PsiModifier.STATIC) && SUITE_METHOD_NAME.equals(psiMethod.getName())) return false;
if (!psiMethod.getName().startsWith("test")) return false;
PsiClass testCaseClass = getTestCaseClassOrNull(location);
return testCaseClass != null && psiMethod.getContainingClass().isInheritor(testCaseClass, true);
@@ -91,15 +91,6 @@ public class JUnitUtil {
return testCaseClass != null && aClass.isInheritor(testCaseClass, true);
}
/**
*
* @param aClassLocation
* @return true if aClassLocation can be used as JUnit test class.
*/
private static boolean isTestClass(final Location<? extends PsiClass> aClassLocation) {
return isTestClass(aClassLocation.getPsiElement());
}
public static boolean isTestClass(final PsiClass psiClass) {
return isTestClass(psiClass, true, true);
}
@@ -151,7 +142,7 @@ public class JUnitUtil {
final PsiAnnotationMemberValue value = attribute.getValue();
if (value instanceof PsiClassObjectAccessExpression ) {
final PsiTypeElement typeElement = ((PsiClassObjectAccessExpression)value).getOperand();
if (typeElement.getType().getCanonicalText().equals(Parameterized.class.getName())) {
if (typeElement.getType().getCanonicalText().equals(PARAMETERIZED_CLASS_NAME)) {
return false;
}
}
@@ -223,13 +214,13 @@ public class JUnitUtil {
return true;
}
if (psiMethod.hasModifierProperty(PsiModifier.STATIC)) {
if (AnnotationUtil.isAnnotated(psiMethod, Arrays.asList(BeforeClass.class.getName(), AfterClass.class.getName(),
Parameterized.Parameters.class.getName().replace('$', '.')))) {
if (AnnotationUtil.isAnnotated(psiMethod, Arrays.asList(BEFORE_CLASS_ANNOTATION_NAME, AFTER_CLASS_ANNOTATION_NAME,
PARAMETRIZED_PARAMETERS_ANNOTATION_NAME))) {
return true;
}
}
else {
if (AnnotationUtil.isAnnotated(psiMethod, Arrays.asList(Before.class.getName(), After.class.getName()))) return true;
if (AnnotationUtil.isAnnotated(psiMethod, Arrays.asList(BEFORE_ANNOTATION_NAME, AFTER_ANNOTATION_NAME))) return true;
}
}
return false;
@@ -298,55 +289,6 @@ public class JUnitUtil {
return null;
}
/**
* @param collection
* @param comparator returns 0 iff elemets are incomparable.
* @return maximum elements
*/
public static <T> Collection<T> findMaximums(final Collection<T> collection, final Comparator<T> comparator) {
final ArrayList<T> maximums = new ArrayList<T>();
loop:
for (final T candidate : collection) {
for (final T element : collection) {
if (comparator.compare(element, candidate) > 0) continue loop;
}
maximums.add(candidate);
}
return maximums;
}
/*public static Map<Module, Collection<Module>> buildAllDependencies(final Project project) {
final Module[] modules = ModuleManager.getInstance(project).getSortedModules();
final HashMap<Module, Collection<Module>> lessers = new HashMap<Module, Collection<Module>>();
int prevProcessedCount = 0;
while (modules.length > lessers.size()) {
for (int i = 0; i < modules.length; i++) {
final Module module = modules[i];
if (lessers.containsKey(module)) continue;
final Module[] dependencies = ModuleRootManager.getInstance(module).getDependencies();
if (lessers.keySet().containsAll(Arrays.asList(dependencies))) {
final HashSet<Module> allDependencies = new HashSet<Module>();
for (int j = 0; j < dependencies.length; j++) {
final Module dependency = dependencies[j];
allDependencies.add(dependency);
allDependencies.addAll(lessers.get(dependency));
}
lessers.put(module, allDependencies);
}
}
if (lessers.size() == prevProcessedCount) return null;
prevProcessedCount = lessers.size();
}
return lessers;
}*/
public static class ModuleOfClass implements Convertor<PsiClass, Module> {
public Module convert(final PsiClass psiClass) {
if (psiClass == null || !psiClass.isValid()) return null;
return ModuleUtil.findModuleForPsiElement(psiClass);
}
}
public static class NoJUnitException extends CantRunException {
public NoJUnitException() {
super(ExecutionBundle.message("no.junit.error.message"));
@@ -23,8 +23,8 @@ import com.intellij.execution.configurations.JavaParameters;
import com.intellij.execution.configurations.RunConfigurationModule;
import com.intellij.execution.configurations.RuntimeConfigurationWarning;
import com.intellij.execution.configurations.SimpleJavaParameters;
import com.intellij.execution.junit.JUnitUtil;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.Sdk;
@@ -78,7 +78,7 @@ public class JavaParametersUtil {
if (psiFile == null) throw CantRunException.classNotFound(mainClassName, module);
final VirtualFile virtualFile = psiFile.getVirtualFile();
if (virtualFile == null) throw CantRunException.classNotFound(mainClassName, module);
Module classModule = new JUnitUtil.ModuleOfClass().convert(psiClass);
Module classModule = psiClass.isValid() ? ModuleUtilCore.findModuleForPsiElement(psiClass) : null;
if (classModule == null) classModule = module;
ModuleFileIndex fileIndex = ModuleRootManager.getInstance(classModule).getFileIndex();
if (fileIndex.isInSourceContent(virtualFile)) {
+1 -1
View File
@@ -29,7 +29,7 @@
</SOURCES>
</library>
</orderEntry>
<orderEntry type="library" name="JUnit4" level="project" />
<orderEntry type="library" scope="TEST" name="JUnit4" level="project" />
<orderEntry type="library" scope="TEST" name="Mocks" level="project" />
<orderEntry type="module" module-name="testFramework" scope="TEST" />
<orderEntry type="library" name="swingx" level="project" />
+1 -1
View File
@@ -10,7 +10,7 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="core-api" />
<orderEntry type="module" module-name="java-psi-api" />
<orderEntry type="library" name="JUnit4" level="project" />
<orderEntry type="library" scope="TEST" name="JUnit4" level="project" />
<orderEntry type="module" module-name="lang-api" />
<orderEntry type="module" module-name="openapi" />
<orderEntry type="module" module-name="java-impl" scope="TEST" />