TestUtil -> TestFrameworks.getInstance()

This commit is contained in:
Dmitry Jemerov
2011-09-23 14:27:08 +02:00
parent f814a1e4f9
commit ee3ac50728
18 changed files with 95 additions and 50 deletions
@@ -27,11 +27,12 @@ import com.intellij.testIntegration.TestFramework;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.Nullable;
public class TestUtil {
private TestUtil() {
public class TestFrameworksImpl extends TestFrameworks {
private TestFrameworksImpl() {
}
public static boolean isTestClass(final PsiClass psiClass) {
@Override
public boolean isTestClass(final PsiClass psiClass) {
final TestFramework[] testFrameworks = Extensions.getExtensions(TestFramework.EXTENSION_NAME);
for (TestFramework framework : testFrameworks) {
if (framework.isTestClass(psiClass)) {
@@ -41,8 +42,9 @@ public class TestUtil {
return false;
}
@Override
@Nullable
public static PsiMethod findOrCreateSetUpMethod(final PsiClass psiClass) {
public PsiMethod findOrCreateSetUpMethod(final PsiClass psiClass) {
final TestFramework[] testFrameworks = Extensions.getExtensions(TestFramework.EXTENSION_NAME);
for (TestFramework framework : testFrameworks) {
if (framework.isTestClass(psiClass)) {
@@ -60,8 +62,9 @@ public class TestUtil {
return null;
}
@Override
@Nullable
public static PsiMethod findSetUpMethod(final PsiClass psiClass) {
public PsiMethod findSetUpMethod(final PsiClass psiClass) {
final TestFramework[] testFrameworks = Extensions.getExtensions(TestFramework.EXTENSION_NAME);
for (TestFramework framework : testFrameworks) {
if (framework.isTestClass(psiClass)) {
@@ -24,7 +24,7 @@
*/
package com.intellij.codeInspection.reference;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
@@ -36,7 +36,10 @@ import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
public class RefClassImpl extends RefJavaElementImpl implements RefClass {
private static final Set<RefElement> EMPTY_SET = Collections.emptySet();
@@ -124,7 +127,7 @@ public class RefClassImpl extends RefJavaElementImpl implements RefClass {
setServlet(servlet != null && psiClass.isInheritor(servlet, true));
}
if (!isApplet() && !isServlet()) {
final boolean isTestClass = TestUtil.isTestClass(psiClass);
final boolean isTestClass = TestFrameworks.getInstance().isTestClass(psiClass);
setTestCase(isTestClass);
if (isTestClass) {
for (RefClass refBase : getBaseClasses()) {
@@ -16,7 +16,7 @@
package com.intellij.codeInspection.testOnly;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInspection.BaseJavaLocalInspectionTool;
import com.intellij.codeInspection.InspectionsBundle;
import com.intellij.codeInspection.ProblemHighlightType;
@@ -82,7 +82,7 @@ public class TestOnlyInspection extends BaseJavaLocalInspectionTool {
private boolean isInsideTestClass(PsiCallExpression e) {
PsiClass c = getTopLevelParentOfType(e, PsiClass.class);
if (c == null) return false;
return TestUtil.isTestClass(c);
return TestFrameworks.getInstance().isTestClass(c);
}
private <T extends PsiElement> T getTopLevelParentOfType(PsiElement e, Class<T> c) {
@@ -16,7 +16,7 @@
package com.intellij.psi.impl;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.compiler.CompilerConfiguration;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.DumbService;
@@ -153,7 +153,7 @@ public class ElementPresentationUtil implements PlatformIcons {
return CLASS_KIND_EXCEPTION;
}
if (TestUtil.isTestClass(aClass)) {
if (TestFrameworks.getInstance().isTestClass(aClass)) {
return CLASS_KIND_JUNIT_TEST;
}
}
@@ -26,7 +26,8 @@ package com.intellij.refactoring.introduceField;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.codeInsight.ChangeContextUtil;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInsight.TestFrameworksImpl;
import com.intellij.codeInsight.highlighting.HighlightManager;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.navigation.NavigationUtil;
@@ -319,7 +320,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
final OccurrenceManager occurrenceManager,
final boolean replaceAll,
final PsiClass parentClass) throws IncorrectOperationException {
final PsiMethod setupMethod = TestUtil.findOrCreateSetUpMethod(parentClass);
final PsiMethod setupMethod = TestFrameworks.getInstance().findOrCreateSetUpMethod(parentClass);
assert setupMethod != null;
@@ -15,7 +15,7 @@
*/
package com.intellij.refactoring.introduceField;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.refactoring.JavaRefactoringSettings;
@@ -74,9 +74,9 @@ public class IntroduceFieldDialogPanel extends IntroduceFieldCentralPanel {
if (myRbInSetUp != null) myRbInSetUp.setEnabled(false);
}
final PsiMethod setUpMethod = TestUtil.findSetUpMethod(myParentClass);
final PsiMethod setUpMethod = TestFrameworks.getInstance().findSetUpMethod(myParentClass);
if (myInitializerExpression != null && PsiTreeUtil.isAncestor(setUpMethod, myInitializerExpression, false) && myRbInSetUp.isEnabled() ||
ourLastInitializerPlace == BaseExpressionToFieldHandler.InitializationPlace.IN_SETUP_METHOD && TestUtil.isTestClass(myParentClass) && myRbInSetUp.isEnabled()) {
ourLastInitializerPlace == BaseExpressionToFieldHandler.InitializationPlace.IN_SETUP_METHOD && TestFrameworks.getInstance().isTestClass(myParentClass) && myRbInSetUp.isEnabled()) {
myRbInSetUp.setSelected(true);
}
else if (ourLastInitializerPlace == BaseExpressionToFieldHandler.InitializationPlace.IN_CONSTRUCTOR) {
@@ -159,7 +159,7 @@ public class IntroduceFieldDialogPanel extends IntroduceFieldCentralPanel {
initializationPanel.add(myRbInFieldDeclaration);
initializationPanel.add(myRbInConstructor);
if (TestUtil.isTestClass(myParentClass)) {
if (TestFrameworks.getInstance().isTestClass(myParentClass)) {
myRbInSetUp = new JRadioButton();
myRbInSetUp.setFocusable(false);
myRbInSetUp.setText(RefactoringBundle.message("setup.method.radio"));
@@ -15,7 +15,7 @@
*/
package com.intellij.refactoring.introduceField;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.ide.ui.ListCellRendererWrapper;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
@@ -27,7 +27,9 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemListener;
/**
* User: anna
@@ -63,10 +65,10 @@ public class IntroduceFieldPopupPanel extends IntroduceFieldCentralPanel {
myInitialisersPlaceModel.removeAllElements();
}
final PsiMethod setUpMethod = TestUtil.findSetUpMethod(myParentClass);
final PsiMethod setUpMethod = TestFrameworks.getInstance().findSetUpMethod(myParentClass);
final boolean setupEnabled = myInitialisersPlaceModel.getIndexOf(BaseExpressionToFieldHandler.InitializationPlace.IN_SETUP_METHOD) > -1;
if (setupEnabled && (myInitializerExpression != null && PsiTreeUtil.isAncestor(setUpMethod, myInitializerExpression, false) ||
TestUtil.isTestClass(myParentClass))) {
TestFrameworks.getInstance().isTestClass(myParentClass))) {
myInitialisersPlaceModel.setSelectedItem(BaseExpressionToFieldHandler.InitializationPlace.IN_SETUP_METHOD);
}
else if (myInitialisersPlaceModel.getIndexOf(BaseExpressionToFieldHandler.InitializationPlace.IN_CONSTRUCTOR) > -1 && myParentClass.getConstructors().length > 0) {
@@ -128,7 +130,7 @@ public class IntroduceFieldPopupPanel extends IntroduceFieldCentralPanel {
myInitialisersPlaceModel.addElement(BaseExpressionToFieldHandler.InitializationPlace.IN_CURRENT_METHOD);
myInitialisersPlaceModel.addElement(BaseExpressionToFieldHandler.InitializationPlace.IN_FIELD_DECLARATION);
myInitialisersPlaceModel.addElement(BaseExpressionToFieldHandler.InitializationPlace.IN_CONSTRUCTOR);
if (TestUtil.isTestClass(myParentClass)) {
if (TestFrameworks.getInstance().isTestClass(myParentClass)) {
myInitialisersPlaceModel.addElement(BaseExpressionToFieldHandler.InitializationPlace.IN_SETUP_METHOD);
}
initializeInitializerPlace(myInitializerExpression, InplaceIntroduceFieldPopup.ourLastInitializerPlace);
@@ -16,7 +16,7 @@
package com.intellij.refactoring.introduceField;
import com.intellij.codeInsight.CodeInsightUtil;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInsight.navigation.NavigationUtil;
import com.intellij.ide.util.PsiClassListCellRenderer;
import com.intellij.openapi.application.ApplicationManager;
@@ -176,7 +176,7 @@ public abstract class LocalToFieldHandler {
private static PsiStatement addInitializationToSetUp(final PsiLocalVariable local, final PsiField field, final PsiElementFactory factory)
throws IncorrectOperationException {
PsiMethod inClass = TestUtil.findOrCreateSetUpMethod(field.getContainingClass());
PsiMethod inClass = TestFrameworks.getInstance().findOrCreateSetUpMethod(field.getContainingClass());
assert inClass != null;
PsiStatement assignment = createAssignment(local, field.getName(), factory);
final PsiCodeBlock body = inClass.getBody();
@@ -15,7 +15,7 @@
*/
package com.intellij.testIntegration;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
@@ -72,7 +72,7 @@ public class JavaTestFinder implements TestFinder {
if (klass.isEnum()
|| klass.isInterface()
|| klass.isAnnotationType()
|| TestUtil.isTestClass(klass)) {
|| TestFrameworks.getInstance().isTestClass(klass)) {
return false;
}
return true;
@@ -104,7 +104,7 @@ public class JavaTestFinder implements TestFinder {
for (String eachName : names) {
if (pattern.matcher(eachName).matches()) {
for (PsiClass eachClass : cache.getClassesByName(eachName, scope)) {
if (TestUtil.isTestClass(eachClass)) {
if (TestFrameworks.getInstance().isTestClass(eachClass)) {
classesWithProximities.add(
new Pair<PsiClass, Integer>(eachClass, TestFinderHelper.calcTestNameProximity(klassName, eachName)));
}
@@ -15,7 +15,7 @@
*/
package com.intellij.testIntegration;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils;
import com.intellij.codeInsight.generation.GenerateMembersUtil;
import com.intellij.codeInsight.template.Expression;
@@ -77,7 +77,7 @@ public class TestIntegrationUtils {
public static boolean isTest(@NotNull PsiElement element) {
PsiClass klass = findOuterClass(element);
return klass != null && TestUtil.isTestClass(klass);
return klass != null && TestFrameworks.getInstance().isTestClass(klass);
}
@Nullable
@@ -0,0 +1,38 @@
/*
* Copyright 2000-2011 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.codeInsight;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiMethod;
import org.jetbrains.annotations.Nullable;
/**
* @author yole
*/
public abstract class TestFrameworks {
public static TestFrameworks getInstance() {
return ServiceManager.getService(TestFrameworks.class);
}
public abstract boolean isTestClass(PsiClass psiClass);
@Nullable
public abstract PsiMethod findOrCreateSetUpMethod(PsiClass psiClass);
@Nullable
public abstract PsiMethod findSetUpMethod(PsiClass psiClass);
}
@@ -15,7 +15,7 @@
*/
package com.siyeh.ig.abstraction;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiIdentifier;
@@ -71,7 +71,7 @@ public class FeatureEnvyInspection extends BaseInspection {
if (ignoreTestCases) {
final PsiClass containingClass = method.getContainingClass();
if(containingClass != null &&
TestUtil.isTestClass(containingClass)){
TestFrameworks.getInstance().isTestClass(containingClass)){
return;
}
if (TestUtils.isJUnitTestMethod(method)) {
@@ -15,7 +15,7 @@
*/
package com.siyeh.ig.errorhandling;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInspection.ui.ListTable;
import com.intellij.codeInspection.ui.ListWrappingTableModel;
import com.intellij.openapi.actionSystem.ActionToolbar;
@@ -31,13 +31,8 @@ import com.siyeh.ig.ui.ExternalizableStringSet;
import com.siyeh.ig.ui.UiUtils;
import org.jetbrains.annotations.NotNull;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.*;
import java.awt.*;
import java.util.List;
public class BadExceptionDeclaredInspection extends BaseInspection {
@@ -146,7 +141,7 @@ public class BadExceptionDeclaredInspection extends BaseInspection {
if(ignoreTestCases){
final PsiClass containingClass = method.getContainingClass();
if(containingClass != null &&
TestUtil.isTestClass(containingClass)){
TestFrameworks.getInstance().isTestClass(containingClass)){
return;
}
if (TestUtils.isJUnitTestMethod(method)) {
@@ -15,7 +15,7 @@
*/
package com.siyeh.ig.errorhandling;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
import com.intellij.openapi.project.Project;
@@ -134,7 +134,7 @@ public class EmptyCatchBlockInspection extends BaseInspection {
final PsiClass containingClass =
PsiTreeUtil.getParentOfType(statement, PsiClass.class);
if (containingClass != null &&
TestUtil.isTestClass(containingClass)) {
TestFrameworks.getInstance().isTestClass(containingClass)) {
return;
}
}
@@ -15,7 +15,7 @@
*/
package com.siyeh.ig.errorhandling;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
@@ -29,7 +29,7 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.JComponent;
import javax.swing.*;
public class UnusedCatchParameterInspection extends BaseInspection {
@@ -95,7 +95,7 @@ public class UnusedCatchParameterInspection extends BaseInspection {
final PsiClass containingClass =
PsiTreeUtil.getParentOfType(statement, PsiClass.class);
if(containingClass != null &&
TestUtil.isTestClass(containingClass)){
TestFrameworks.getInstance().isTestClass(containingClass)){
return;
}
if (TestUtils.isPartOfJUnitTestMethod(statement)) {
@@ -16,7 +16,7 @@
package com.siyeh.ig.internationalization;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInsight.intention.AddAnnotationFix;
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
import com.intellij.psi.*;
@@ -206,7 +206,7 @@ public class StringConcatenationInspection extends BaseInspection {
final PsiClass containingClass =
PsiTreeUtil.getParentOfType(expression, PsiClass.class);
if (containingClass != null &&
TestUtil.isTestClass(containingClass)) {
TestFrameworks.getInstance().isTestClass(containingClass)) {
return;
}
}
@@ -16,7 +16,7 @@
package com.siyeh.ig.redundancy;
import com.intellij.analysis.AnalysisScope;
import com.intellij.codeInsight.TestUtil;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInspection.*;
import com.intellij.codeInspection.reference.*;
import com.intellij.openapi.roots.ProjectRootManager;
@@ -103,7 +103,7 @@ public class ElementOnlyUsedFromTestCodeInspection
private static boolean isInsideTestClass(@NotNull PsiElement e) {
final PsiClass aClass = getTopLevelParentClass(e);
return aClass != null && TestUtil.isTestClass(aClass);
return aClass != null && TestFrameworks.getInstance().isTestClass(aClass);
}
private static boolean isUnderTestSources(PsiElement e) {
+3
View File
@@ -250,6 +250,9 @@
serviceImplementation="com.intellij.psi.impl.source.codeStyle.JavaIndentHelper"
overrides="true"/>
<applicationService serviceInterface="com.intellij.codeInsight.TestFrameworks"
serviceImplementation="com.intellij.codeInsight.TestFrameworksImpl"/>
<projectService serviceInterface="com.intellij.ide.util.TreeClassChooserFactory"
serviceImplementation="com.intellij.ide.util.TreeClassChooserFactoryImpl"/>
<projectService serviceInterface="com.intellij.codeInsight.guess.GuessManager"