junit 5 for assertion without message, constant assertion inspection

This commit is contained in:
Anna.Kozlova
2016-10-19 09:59:31 +02:00
parent 2824ee87e4
commit 00a3814bd4
4 changed files with 32 additions and 27 deletions
@@ -50,13 +50,8 @@ public class AssertEqualsHint {
return null;
}
final PsiClass containingClass = method.getContainingClass();
final boolean messageOnLastPosition = InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_JUPITER_API_ASSERTIONS) ||
InheritanceUtil.isInheritor(containingClass, "org.testng.Assert");
if (!InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT) &&
!InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_ASSERT) &&
!InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_TEST_CASE) &&
!InheritanceUtil.isInheritor(containingClass, "org.testng.AssertJUnit") &&
!messageOnLastPosition) {
final boolean messageOnLastPosition = isMessageOnLastPosition(containingClass);
if (!isMessageOnFirstPosition(containingClass) && !messageOnLastPosition) {
return null;
}
final PsiParameterList parameterList = method.getParameterList();
@@ -83,6 +78,18 @@ public class AssertEqualsHint {
return new AssertEqualsHint(argumentIndex, method);
}
public static boolean isMessageOnFirstPosition(PsiClass containingClass) {
return InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT) ||
InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_ASSERT) ||
InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_TEST_CASE) ||
InheritanceUtil.isInheritor(containingClass, "org.testng.AssertJUnit");
}
public static boolean isMessageOnLastPosition(PsiClass containingClass) {
return InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_JUPITER_API_ASSERTIONS) ||
InheritanceUtil.isInheritor(containingClass, "org.testng.Assert");
}
public static String areExpectedActualTypesCompatible(PsiMethodCallExpression expression) {
final AssertEqualsHint assertEqualsHint = create(expression);
if (assertEqualsHint == null) return null;
@@ -82,8 +82,9 @@ public class AssertsWithoutMessagesInspection extends BaseInspection {
return;
}
final PsiClass containingClass = method.getContainingClass();
if (!InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT) &&
!InheritanceUtil.isInheritor(containingClass, JUnitCommonClassNames.ORG_JUNIT_ASSERT)) {
final boolean messageOnFirstPosition = AssertEqualsHint.isMessageOnFirstPosition(containingClass);
final boolean messageOnLastPosition = AssertEqualsHint.isMessageOnLastPosition(containingClass);
if (!messageOnFirstPosition && !messageOnLastPosition) {
return;
}
final PsiParameterList parameterList = method.getParameterList();
@@ -98,7 +99,7 @@ public class AssertsWithoutMessagesInspection extends BaseInspection {
}
final PsiType stringType = TypeUtils.getStringType(expression);
final PsiParameter[] parameters = parameterList.getParameters();
final PsiType parameterType1 = parameters[0].getType();
final PsiType parameterType1 = parameters[messageOnFirstPosition ? 0 : parameters.length - 1].getType();
if (!parameterType1.equals(stringType)) {
registerMethodCallError(expression);
return;
@@ -106,7 +107,7 @@ public class AssertsWithoutMessagesInspection extends BaseInspection {
if (parameters.length != 2) {
return;
}
final PsiType parameterType2 = parameters[1].getType();
final PsiType parameterType2 = parameters[messageOnFirstPosition ? parameterCount - 1 : 0].getType();
if (!parameterType2.equals(stringType)) {
return;
}
@@ -31,7 +31,7 @@ import java.util.Set;
public class ConstantJUnitAssertArgumentInspection extends BaseInspection {
@NonNls
private static final Set<String> ASSERT_METHODS = new HashSet();
private static final Set<String> ASSERT_METHODS = new HashSet<>();
static {
ASSERT_METHODS.add("assertTrue");
@@ -60,28 +60,24 @@ public class ConstantJUnitAssertArgumentInspection extends BaseInspection {
return new ConstantJUnitAssertArgumentVisitor();
}
private static class ConstantJUnitAssertArgumentVisitor
extends BaseInspectionVisitor {
private static class ConstantJUnitAssertArgumentVisitor extends BaseInspectionVisitor {
@Override
public void visitMethodCallExpression(
PsiMethodCallExpression expression) {
final PsiReferenceExpression methodExpression =
expression.getMethodExpression();
@NonNls final String methodName =
methodExpression.getReferenceName();
public void visitMethodCallExpression(PsiMethodCallExpression expression) {
final PsiReferenceExpression methodExpression = expression.getMethodExpression();
@NonNls final String methodName = methodExpression.getReferenceName();
if (!ASSERT_METHODS.contains(methodName)) {
return;
}
final PsiMethod method = expression.resolveMethod();
if (method == null) {
return;
}
final PsiClass containingClass = method.getContainingClass();
if (!InheritanceUtil.isInheritor(containingClass,
JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT) &&
!InheritanceUtil.isInheritor(containingClass,
JUnitCommonClassNames.ORG_JUNIT_ASSERT)) {
final boolean messageOnFirstPosition = AssertEqualsHint.isMessageOnFirstPosition(containingClass);
final boolean messageOnLastPosition = AssertEqualsHint.isMessageOnLastPosition(containingClass);
if (!messageOnFirstPosition && !messageOnLastPosition) {
return;
}
final PsiExpressionList argumentList = expression.getArgumentList();
@@ -89,11 +85,11 @@ public class ConstantJUnitAssertArgumentInspection extends BaseInspection {
if (arguments.length == 0) {
return;
}
final PsiExpression lastArgument = arguments[arguments.length - 1];
if (!PsiUtil.isConstantExpression(lastArgument)) {
final PsiExpression argument = arguments[messageOnFirstPosition ? arguments.length - 1 : 0];
if (!PsiUtil.isConstantExpression(argument)) {
return;
}
registerError(lastArgument);
registerError(argument);
}
}
}
@@ -37,6 +37,7 @@ public class TestMethodWithoutAssertionInspectionBase extends BaseInspection {
methodMatcher = new MethodMatcher(true, "assertionMethods")
.add(JUnitCommonClassNames.ORG_JUNIT_ASSERT, "assert.*|fail.*")
.add(JUnitCommonClassNames.JUNIT_FRAMEWORK_ASSERT, "assert.*|fail.*")
.add(JUnitCommonClassNames.ORG_JUNIT_JUPITER_API_ASSERTIONS, "assert.*|fail.*")
.add("org.mockito.Mockito", "verify.*")
.add("org.mockito.InOrder", "verify")
.add("org.junit.rules.ExpectedException", "expect.*")