mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-10 13:17:09 +07:00
fixed PY-9329 Instance attribute defined outside init: disable inspection in testCases methods which start with setUp
This commit is contained in:
@@ -2,7 +2,6 @@ package com.jetbrains.python.inspections;
|
||||
|
||||
import com.intellij.codeInspection.LocalInspectionToolSession;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.psi.PsiElementVisitor;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.PyNames;
|
||||
@@ -52,10 +51,8 @@ public class PyAttributeOutsideInitInspection extends PyInspection {
|
||||
public void visitPyFunction(PyFunction node) {
|
||||
final PyClass containingClass = node.getContainingClass();
|
||||
if (containingClass == null) return;
|
||||
if (PythonUnitTestUtil.isUnitTestCaseClass(containingClass) || ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
final String functionName = node.getName();
|
||||
if (functionName != null && functionName.startsWith("setUp"))
|
||||
return;
|
||||
if (PythonUnitTestUtil.isUnitTestCaseClass(containingClass)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, PyTargetExpression> attributesInInit = new HashMap<String, PyTargetExpression>();
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.jetbrains.python.testing;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.containers.Stack;
|
||||
@@ -50,6 +51,11 @@ public class PythonUnitTestUtil {
|
||||
}
|
||||
|
||||
private static boolean isUnitTestCaseClass(PyClass cls, HashSet<String> testQualifiedNames) {
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
for (PyExpression expression : cls.getSuperClassExpressions()) {
|
||||
if (expression.getText().equals("TestCase")) return true;
|
||||
}
|
||||
}
|
||||
for (PyClassLikeType type : cls.getAncestorTypes(TypeEvalContext.codeInsightFallback())) {
|
||||
if (type != null && testQualifiedNames.contains(type.getClassQName())) {
|
||||
return true;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
__author__ = 'ktisha'
|
||||
|
||||
from unittest import TestCase
|
||||
class MyTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.my = 1
|
||||
|
||||
def test(self):
|
||||
self.my = 2
|
||||
+4
@@ -23,6 +23,10 @@ public class PyAttributeOutsideInitInspectionTest extends PyTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testUnitTest() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testFromSuperClassWithoutInit() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user