mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
junit convention inspections should work in Groovy
This commit is contained in:
@@ -234,7 +234,7 @@ public class ExpectedHighlightingData {
|
||||
final Set<String> markers = highlightingTypes.keySet();
|
||||
final String typesRx = "(?:" + StringUtil.join(markers, ")|(?:") + ")";
|
||||
final String openingTagRx = "<(" + typesRx + ")" +
|
||||
"(?:\\s+descr=\"((?:[^\"\\\\]|\\\\\"|\\\\\\\\\"|\\\\\\[|\\\\\\])*)\")?" +
|
||||
"(?:\\s+descr=\"((?:[^\"]|\\\\\"|\\\\\\\\\"|\\\\\\[|\\\\\\])*)\")?" +
|
||||
"(?:\\s+type=\"([0-9A-Z_]+)\")?" +
|
||||
"(?:\\s+foreground=\"([0-9xa-f]+)\")?" +
|
||||
"(?:\\s+background=\"([0-9xa-f]+)\")?" +
|
||||
|
||||
@@ -1292,11 +1292,11 @@
|
||||
key="junit4.test.method.in.class.extending.junit3.testcase.display.name" groupBundle="messages.InspectionsBundle"
|
||||
groupKey="group.names.junit.issues" enabledByDefault="true" level="WARNING"
|
||||
implementationClass="com.siyeh.ig.junit.JUnit4AnnotatedMethodInJUnit3TestCaseInspection"/>
|
||||
<localInspection language="JAVA" shortName="JUnitAbstractTestClassNamingConvention" bundle="com.siyeh.InspectionGadgetsBundle"
|
||||
<localInspection shortName="JUnitAbstractTestClassNamingConvention" bundle="com.siyeh.InspectionGadgetsBundle"
|
||||
key="junit.abstract.test.class.naming.convention.display.name" groupBundle="messages.InspectionsBundle"
|
||||
groupKey="group.names.junit.issues" enabledByDefault="false" level="WARNING"
|
||||
implementationClass="com.siyeh.ig.junit.JUnitAbstractTestClassNamingConventionInspection"/>
|
||||
<localInspection language="JAVA" shortName="JUnitTestClassNamingConvention" bundle="com.siyeh.InspectionGadgetsBundle"
|
||||
<localInspection shortName="JUnitTestClassNamingConvention" bundle="com.siyeh.InspectionGadgetsBundle"
|
||||
key="junit.test.class.naming.convention.display.name" groupBundle="messages.InspectionsBundle"
|
||||
groupKey="group.names.junit.issues" enabledByDefault="false" level="WARNING"
|
||||
implementationClass="com.siyeh.ig.junit.JUnitTestClassNamingConventionInspection"/>
|
||||
|
||||
@@ -78,7 +78,7 @@ public abstract class BaseInspectionVisitor extends JavaElementVisitor {
|
||||
|
||||
protected final void registerClassError(@NotNull PsiClass aClass,
|
||||
Object... infos) {
|
||||
final PsiElement nameIdentifier;
|
||||
PsiElement nameIdentifier;
|
||||
if (aClass instanceof PsiEnumConstantInitializer) {
|
||||
final PsiEnumConstantInitializer enumConstantInitializer =
|
||||
(PsiEnumConstantInitializer)aClass;
|
||||
@@ -93,7 +93,10 @@ public abstract class BaseInspectionVisitor extends JavaElementVisitor {
|
||||
else {
|
||||
nameIdentifier = aClass.getNameIdentifier();
|
||||
}
|
||||
if (nameIdentifier == null) {
|
||||
if (nameIdentifier != null && !nameIdentifier.isPhysical()) {
|
||||
nameIdentifier = nameIdentifier.getNavigationElement();
|
||||
}
|
||||
if (nameIdentifier == null || !nameIdentifier.isPhysical()) {
|
||||
registerError(aClass.getContainingFile(), infos);
|
||||
}
|
||||
else {
|
||||
|
||||
+8
-1
@@ -16,6 +16,7 @@
|
||||
package com.siyeh.ig.junit;
|
||||
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.PsiTypeParameter;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
@@ -89,7 +90,13 @@ public class JUnitAbstractTestClassNamingConventionInspection
|
||||
private class NamingConventionsVisitor extends BaseInspectionVisitor {
|
||||
|
||||
@Override
|
||||
public void visitClass(@NotNull PsiClass aClass) {
|
||||
public void visitElement(PsiElement element) {
|
||||
if (!(element instanceof PsiClass)) {
|
||||
super.visitElement(element);
|
||||
return;
|
||||
}
|
||||
|
||||
PsiClass aClass = (PsiClass)element;
|
||||
if (aClass.isInterface() || aClass.isEnum() ||
|
||||
aClass.isAnnotationType()) {
|
||||
return;
|
||||
|
||||
+8
-6
@@ -15,10 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.junit;
|
||||
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.PsiTypeParameter;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
@@ -89,9 +86,14 @@ public class JUnitTestClassNamingConventionInspection
|
||||
}
|
||||
|
||||
private class NamingConventionsVisitor extends BaseInspectionVisitor {
|
||||
|
||||
@Override
|
||||
public void visitClass(@NotNull PsiClass aClass) {
|
||||
public void visitElement(PsiElement element) {
|
||||
if (!(element instanceof PsiClass)) {
|
||||
super.visitElement(element);
|
||||
return;
|
||||
}
|
||||
|
||||
PsiClass aClass = (PsiClass)element;
|
||||
if (aClass.isInterface() || aClass.isEnum() ||
|
||||
aClass.isAnnotationType()) {
|
||||
return;
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
<orderEntry type="module" module-name="IntelliLang-xml" scope="TEST" />
|
||||
<orderEntry type="module" module-name="jps-builders" />
|
||||
<orderEntry type="module" module-name="spellchecker" />
|
||||
<orderEntry type="module" module-name="InspectionGadgetsPlugin" scope="TEST" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
|
||||
+7
@@ -20,6 +20,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.impl.light.LightIdentifier;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author ven
|
||||
@@ -32,6 +33,12 @@ public class JavaIdentifier extends LightIdentifier {
|
||||
myElement = element;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PsiElement getNavigationElement() {
|
||||
return myElement;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid() {
|
||||
return myElement.isValid();
|
||||
|
||||
@@ -28,6 +28,8 @@ import com.intellij.testFramework.IdeaTestUtil
|
||||
import com.intellij.testFramework.LightProjectDescriptor
|
||||
import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
|
||||
import com.siyeh.ig.junit.JUnitAbstractTestClassNamingConventionInspection
|
||||
import com.siyeh.ig.junit.JUnitTestClassNamingConventionInspection
|
||||
import org.jetbrains.annotations.NotNull
|
||||
import org.jetbrains.plugins.groovy.codeInspection.assignment.GroovyAssignabilityCheckInspection
|
||||
import org.jetbrains.plugins.groovy.codeInspection.assignment.GroovyResultOfAssignmentUsedInspection
|
||||
@@ -557,4 +559,9 @@ class A {
|
||||
myFixture.enableInspections(GroovyAssignabilityCheckInspection)
|
||||
myFixture.checkHighlighting(true, false, false);
|
||||
}
|
||||
|
||||
public void testJUnitConvention() {
|
||||
myFixture.addClass("package junit.framework; public class TestCase {}")
|
||||
doTest(new JUnitTestClassNamingConventionInspection(), new JUnitAbstractTestClassNamingConventionInspection())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import junit.framework.TestCase
|
||||
|
||||
class SpecialGoodTest extends TestCase {
|
||||
class <warning descr="JUnit test class name 'MyVeryInner' doesn't match regex '[A-Z][A-Za-z\d]*Test'">MyVeryInner</warning> extends SpecialGoodTest {}
|
||||
}
|
||||
class <warning descr="JUnit test class name 'SpecialBad' doesn't match regex '[A-Z][A-Za-z\d]*Test'">SpecialBad</warning> extends TestCase { }
|
||||
abstract class <warning descr="Abstract JUnit test class name 'SpecialAbstract' doesn't match regex '[A-Z][A-Za-z\d]*TestCase'">SpecialAbstract</warning> extends TestCase { }
|
||||
abstract class SpecialAbstractTestCase extends TestCase { }
|
||||
Reference in New Issue
Block a user