From 9735f9facddb543712a6ca15d4f605f669d024d5 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 1 Jul 2010 14:00:22 +0400 Subject: [PATCH] some refactoring of the test suite --- python/testData/property/Classic.py | 2 +- python/testData/property/Decorated.py | 2 +- python/testData/resolve/callee/ClassCall.py | 2 +- python/testData/resolve/callee/DecoCall.py | 2 +- .../testData/resolve/callee/DecoParamCall.py | 2 +- .../testData/resolve/callee/InstanceCall.py | 2 +- .../testData/resolve/decorators/DecoCall.py | 2 +- .../resolve/decorators/DecoParamCall.py | 2 +- .../com/jetbrains/python/PyDecoratorTest.java | 10 +- .../python/PyMultiFileResolveTest.java | 22 +---- .../jetbrains/python/PyPropertyTestSuite.java | 5 +- .../jetbrains/python/PyResolveCalleeTest.java | 11 +-- .../com/jetbrains/python/PyResolveTest.java | 99 +++++++++---------- .../python/fixtures/PyResolveTestCase.java | 25 +++++ 14 files changed, 95 insertions(+), 93 deletions(-) diff --git a/python/testData/property/Classic.py b/python/testData/property/Classic.py index 60e367c679af..f2a22d092c27 100644 --- a/python/testData/property/Classic.py +++ b/python/testData/property/Classic.py @@ -16,4 +16,4 @@ class A(object): v3 = property(lambda self: self._v, None, (deleter)) v4 = otherworldly # NOTE: not supported yet -a = A() +a = A() diff --git a/python/testData/property/Decorated.py b/python/testData/property/Decorated.py index 5001dae8c5bb..ec162a99493a 100644 --- a/python/testData/property/Decorated.py +++ b/python/testData/property/Decorated.py @@ -26,4 +26,4 @@ class A(object): # deleter absent -a = A() +a = A() diff --git a/python/testData/resolve/callee/ClassCall.py b/python/testData/resolve/callee/ClassCall.py index 86690966b625..04db99328fd0 100644 --- a/python/testData/resolve/callee/ClassCall.py +++ b/python/testData/resolve/callee/ClassCall.py @@ -2,4 +2,4 @@ class A: def foo(self): a = A() -A.foo(a) \ No newline at end of file +A.foo(a) \ No newline at end of file diff --git a/python/testData/resolve/callee/DecoCall.py b/python/testData/resolve/callee/DecoCall.py index 01b73140e232..658b5d38749f 100644 --- a/python/testData/resolve/callee/DecoCall.py +++ b/python/testData/resolve/callee/DecoCall.py @@ -1,6 +1,6 @@ def deco(fun): return fun -@deco +@deco def foo(): pass diff --git a/python/testData/resolve/callee/DecoParamCall.py b/python/testData/resolve/callee/DecoParamCall.py index ac94593a3b7e..69338cef0faf 100644 --- a/python/testData/resolve/callee/DecoParamCall.py +++ b/python/testData/resolve/callee/DecoParamCall.py @@ -6,6 +6,6 @@ def deco(prefix): return dfun return fun -@deco(1) +@deco(1) def foo(): pass diff --git a/python/testData/resolve/callee/InstanceCall.py b/python/testData/resolve/callee/InstanceCall.py index ba2fd3bd774e..8d36f81e7e2f 100644 --- a/python/testData/resolve/callee/InstanceCall.py +++ b/python/testData/resolve/callee/InstanceCall.py @@ -2,4 +2,4 @@ class A: def foo(self): a = A() -a.foo() \ No newline at end of file +a.foo() \ No newline at end of file diff --git a/python/testData/resolve/decorators/DecoCall.py b/python/testData/resolve/decorators/DecoCall.py index 54d9a78a561d..6874ae8f1a2d 100644 --- a/python/testData/resolve/decorators/DecoCall.py +++ b/python/testData/resolve/decorators/DecoCall.py @@ -1,7 +1,7 @@ def deco(fun): return fun -@deco +@deco def foo(): pass diff --git a/python/testData/resolve/decorators/DecoParamCall.py b/python/testData/resolve/decorators/DecoParamCall.py index 8ae9ea0cd23c..f9741c306edf 100644 --- a/python/testData/resolve/decorators/DecoParamCall.py +++ b/python/testData/resolve/decorators/DecoParamCall.py @@ -6,7 +6,7 @@ def deco(prefix): return dfun return fun -@deco(1) +@deco(1) def foo(): pass diff --git a/python/testSrc/com/jetbrains/python/PyDecoratorTest.java b/python/testSrc/com/jetbrains/python/PyDecoratorTest.java index 8c7dccf30559..cbdb63f539c2 100644 --- a/python/testSrc/com/jetbrains/python/PyDecoratorTest.java +++ b/python/testSrc/com/jetbrains/python/PyDecoratorTest.java @@ -2,6 +2,7 @@ package com.jetbrains.python; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; +import com.jetbrains.python.fixtures.PyLightFixtureTestCase; import com.jetbrains.python.fixtures.PyResolveTestCase; import com.jetbrains.python.psi.PyArgumentList; import com.jetbrains.python.psi.PyDecorator; @@ -13,9 +14,9 @@ import com.jetbrains.python.psi.PyFunction; * User: dcheryasov * Date: Dec 28, 2008 3:50:23 AM */ -public class PyDecoratorTest extends PyResolveTestCase { +public class PyDecoratorTest extends PyLightFixtureTestCase { private PsiElement find() throws Exception { - PsiReference ref = configureByFile(getTestName(false) + ".py"); + PsiReference ref = myFixture.getReferenceAtCaretPosition("/resolve/decorators/" + getTestName(false) + ".py"); return ref.getElement(); } @@ -45,9 +46,4 @@ public class PyDecoratorTest extends PyResolveTestCase { assertEquals("argument count", 1, args.length); assertEquals("argument value", "1", args[0].getText()); } - - @Override - protected String getTestDataPath() { - return PythonTestUtil.getTestDataPath() + "/resolve/decorators/"; - } } diff --git a/python/testSrc/com/jetbrains/python/PyMultiFileResolveTest.java b/python/testSrc/com/jetbrains/python/PyMultiFileResolveTest.java index ca8f0cca679a..70bc9fc1bf82 100644 --- a/python/testSrc/com/jetbrains/python/PyMultiFileResolveTest.java +++ b/python/testSrc/com/jetbrains/python/PyMultiFileResolveTest.java @@ -7,13 +7,13 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.psi.*; import com.intellij.psi.impl.PsiManagerImpl; -import com.jetbrains.python.fixtures.PyLightFixtureTestCase; +import com.jetbrains.python.fixtures.PyResolveTestCase; import com.jetbrains.python.psi.*; /** * @author yole */ -public class PyMultiFileResolveTest extends PyLightFixtureTestCase { +public class PyMultiFileResolveTest extends PyResolveTestCase { private static void checkInitPyDir(PsiElement elt, String dirname) throws Exception { assertTrue(elt instanceof PyFile); @@ -183,21 +183,6 @@ public class PyMultiFileResolveTest extends PyLightFixtureTestCase { assertResolvesTo(PyFunction.class, "do_stuff", "/src/pack2.py"); } - private void assertResolvesTo(final Class aClass, final String name) throws Exception { - assertResolvesTo(aClass, name, null); - } - - private void assertResolvesTo(final Class aClass, - final String name, - String containingFilePath) throws Exception { - final PsiElement element = doResolve(); - assertInstanceOf(element, aClass); - assertEquals(name, ((PsiNamedElement) element).getName()); - if (containingFilePath != null) { - assertEquals(containingFilePath, element.getContainingFile().getVirtualFile().getPath()); - } - } - private PsiFile prepareFile() throws Exception { String testName = getTestName(true); String fileName = getTestName(false) + ".py"; @@ -215,7 +200,8 @@ public class PyMultiFileResolveTest extends PyLightFixtureTestCase { return PythonTestUtil.getTestDataPath() + "/resolve/multiFile/"; } - private PsiElement doResolve() throws Exception { + @Override + protected PsiElement doResolve() throws Exception { PsiFile psiFile = prepareFile(); int offset = findMarkerOffset(psiFile); final PsiReference ref = psiFile.findReferenceAt(offset); diff --git a/python/testSrc/com/jetbrains/python/PyPropertyTestSuite.java b/python/testSrc/com/jetbrains/python/PyPropertyTestSuite.java index 735131ea5a86..93b0163bf3f2 100644 --- a/python/testSrc/com/jetbrains/python/PyPropertyTestSuite.java +++ b/python/testSrc/com/jetbrains/python/PyPropertyTestSuite.java @@ -3,6 +3,7 @@ package com.jetbrains.python; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; +import com.jetbrains.python.fixtures.PyLightFixtureTestCase; import com.jetbrains.python.fixtures.PyResolveTestCase; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; @@ -23,7 +24,7 @@ public class PyPropertyTestSuite { return new TestSuite(PyClassicPropertyTest.class); } - abstract static class PyPropertyTest extends PyResolveTestCase { + abstract static class PyPropertyTest extends PyLightFixtureTestCase { protected PyClass myClass; protected LanguageLevel myLanguageLevel = LanguageLevel.PYTHON26; @@ -32,7 +33,7 @@ public class PyPropertyTestSuite { @Override protected void setUp() throws Exception { super.setUp(); - PsiReference ref = configureByFile("property/"+ getFileName()); + PsiReference ref = myFixture.getReferenceAtCaretPosition("property/"+ getFileName()); final Project project = ref.getElement().getContainingFile().getProject(); project.putUserData(PyBuiltinCache.TEST_SDK, PythonMockSdk.findOrCreate()); PythonLanguageLevelPusher.setForcedLanguageLevel(project, myLanguageLevel); diff --git a/python/testSrc/com/jetbrains/python/PyResolveCalleeTest.java b/python/testSrc/com/jetbrains/python/PyResolveCalleeTest.java index 1e6172e9c3bf..d4a90e2919d7 100644 --- a/python/testSrc/com/jetbrains/python/PyResolveCalleeTest.java +++ b/python/testSrc/com/jetbrains/python/PyResolveCalleeTest.java @@ -2,7 +2,7 @@ package com.jetbrains.python; import com.intellij.psi.PsiReference; import com.intellij.psi.util.PsiTreeUtil; -import com.jetbrains.python.fixtures.PyResolveTestCase; +import com.jetbrains.python.fixtures.PyLightFixtureTestCase; import com.jetbrains.python.psi.PyCallExpression; import com.jetbrains.python.psi.PyFunction; @@ -13,10 +13,10 @@ import java.util.EnumSet; * User: dcheryasov * Date: Aug 21, 2008 */ -public class PyResolveCalleeTest extends PyResolveTestCase { +public class PyResolveCalleeTest extends PyLightFixtureTestCase { private PyCallExpression.PyMarkedCallee resolveCallee() throws Exception { - PsiReference ref = configureByFile(getTestName(false) + ".py"); + PsiReference ref = myFixture.getReferenceAtCaretPosition("/resolve/callee/" + getTestName(false) + ".py"); PyCallExpression call = PsiTreeUtil.getParentOfType(ref.getElement(), PyCallExpression.class); return call.resolveCallee(); } @@ -44,9 +44,4 @@ public class PyResolveCalleeTest extends PyResolveTestCase { assertNotNull(resolved.getCallable()); assertTrue(resolved.getFlags().equals(EnumSet.noneOf(PyFunction.Flag.class))); } - - @Override - protected String getTestDataPath() { - return PythonTestUtil.getTestDataPath() + "/resolve/callee/"; - } } diff --git a/python/testSrc/com/jetbrains/python/PyResolveTest.java b/python/testSrc/com/jetbrains/python/PyResolveTest.java index d843952eab9b..c332084c844d 100644 --- a/python/testSrc/com/jetbrains/python/PyResolveTest.java +++ b/python/testSrc/com/jetbrains/python/PyResolveTest.java @@ -12,7 +12,7 @@ import com.jetbrains.python.psi.impl.PyBuiltinCache; import com.jetbrains.python.psi.resolve.ImportedResolveResult; public class PyResolveTest extends PyResolveTestCase { - private PsiElement resolve() { + protected PsiElement doResolve() { PsiReference ref = configureByFile("resolve/" + getTestName(false) + ".py"); final Project project = ref.getElement().getContainingFile().getProject(); project.putUserData(PyBuiltinCache.TEST_SDK, PythonMockSdk.findOrCreate()); @@ -27,17 +27,16 @@ public class PyResolveTest extends PyResolveTestCase { } public void testClass() { - PsiElement target = resolve(); - assertTrue(target instanceof PyClass); + assertResolvesTo(PyClass.class, "Test"); } public void testFunc() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyFunction); } public void testToConstructor() { - PsiElement target = resolve(); + PsiElement target = doResolve(); assertTrue(target instanceof PyFunction); assertEquals(((PyFunction)target).getName(), PyNames.INIT); } @@ -61,7 +60,7 @@ public class PyResolveTest extends PyResolveTestCase { } // NOTE: maybe this test does not belong exactly here; still it's the best place currently. public void testComplexCallee() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); PyExpression assigned = ((PyAssignmentStatement)targetElement.getContext()).getAssignedValue(); assertTrue(assigned instanceof PyCallExpression); PsiElement callee = ((PyCallExpression)assigned).getCallee(); @@ -69,191 +68,191 @@ public class PyResolveTest extends PyResolveTestCase { } public void testVar() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testDefaultInClass() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertNotNull(targetElement); assertTrue(targetElement instanceof PyTargetExpression); assertEquals(((PyTargetExpression)targetElement).getName(), "FOO"); } public void testQualifiedFunc() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyFunction); } public void testQualifiedVar() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testQualifiedTarget() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testQualifiedFalseTarget() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertNull(targetElement); } public void testInnerFuncVar() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testTupleInComprh() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testForStatement() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testExceptClause() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testLookAhead() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testLookAheadCapped() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testTryExceptElse() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testGlobal() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(targetElement.getParent() instanceof PyAssignmentStatement); } public void testLambda() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyNamedParameter); } public void testLambdaParameterOutside() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testSuperField() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testFieldInCondition() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testMultipleFields() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testClassPeerMembers() { - PsiElement target = resolve(); + PsiElement target = doResolve(); assertTrue(target instanceof PyFunction); } public void testTuple() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(targetElement.getParent() instanceof PyAssignmentStatement); } public void testMultiTarget() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(targetElement.getParent() instanceof PyAssignmentStatement); } public void testMultiTargetTuple() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertNotNull(PsiTreeUtil.getParentOfType(targetElement, PyAssignmentStatement.class)); // it's deep in a tuple } public void testWithStatement() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(targetElement.getParent() instanceof PyWithItem); } public void testTupleInExcept() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(PsiTreeUtil.getParentOfType(targetElement, PyExceptPart.class) != null); } public void testDocStringClass() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyStringLiteralExpression); assertEquals("Docstring of class Foo", ((PyStringLiteralExpression)targetElement).getStringValue()); } public void testDocStringInstance() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyStringLiteralExpression); assertEquals("Docstring of class Foo", ((PyStringLiteralExpression)targetElement).getStringValue()); } public void testDocStringFunction() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyStringLiteralExpression); assertEquals("Docstring of function bar", ((PyStringLiteralExpression)targetElement).getStringValue()); } public void testDocStringInvalid() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertNull(targetElement); } public void testFieldNotInInit() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); } public void testClassIsNotMemberOfItself() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertNull(targetElement); } public void testSuper() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyFunction); assertEquals("A", ((PyFunction) targetElement).getContainingClass().getName()); } public void testStackOverflow() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertNull(targetElement); } public void testProperty() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyFunction); assertEquals("set_full_name", ((PyFunction)targetElement).getName()); } public void testLambdaWithParens() { // PY-882 - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyParameter); } @@ -264,41 +263,41 @@ public class PyResolveTest extends PyResolveTestCase { } public void testClassPrivateInClass() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(targetElement.getParent() instanceof PyAssignmentStatement); } public void testClassPrivateInMethod() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(targetElement.getParent() instanceof PyAssignmentStatement); } public void testClassPrivateInMethodNested() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(targetElement.getParent() instanceof PyAssignmentStatement); } public void testClassPrivateInherited() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertTrue(targetElement instanceof PyTargetExpression); assertTrue(targetElement.getParent() instanceof PyAssignmentStatement); } public void testClassPrivateOutsideClass() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertNull(targetElement); } public void testClassPrivateOutsideInstance() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertNull(targetElement); } public void testClassNameEqualsMethodName() { - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertInstanceOf(targetElement, PyFunction.class); } @@ -311,12 +310,12 @@ public class PyResolveTest extends PyResolveTestCase { } public void testIsInstance() { // PY-1133 - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertInstanceOf(targetElement, PyNamedParameter.class); } public void testListComprehension() { // PY-1143 - PsiElement targetElement = resolve(); + PsiElement targetElement = doResolve(); assertInstanceOf(targetElement, PyTargetExpression.class); } } \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/fixtures/PyResolveTestCase.java b/python/testSrc/com/jetbrains/python/fixtures/PyResolveTestCase.java index 02a8b716056e..9f1515b947ac 100644 --- a/python/testSrc/com/jetbrains/python/fixtures/PyResolveTestCase.java +++ b/python/testSrc/com/jetbrains/python/fixtures/PyResolveTestCase.java @@ -5,6 +5,8 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiNamedElement; import com.intellij.psi.PsiReference; import com.intellij.testFramework.TestDataFile; import org.jetbrains.annotations.NonNls; @@ -47,4 +49,27 @@ public abstract class PyResolveTestCase extends PyLightFixtureTestCase { final PsiReference reference = myFixture.getFile().findReferenceAt(offset); return reference; } + + protected abstract PsiElement doResolve() throws Exception; + + protected void assertResolvesTo(final Class aClass, final String name) { + assertResolvesTo(aClass, name, null); + } + + protected void assertResolvesTo(final Class aClass, + final String name, + String containingFilePath) { + final PsiElement element; + try { + element = doResolve(); + } + catch (Exception e) { + throw new RuntimeException(e); + } + assertInstanceOf(element, aClass); + assertEquals(name, ((PsiNamedElement) element).getName()); + if (containingFilePath != null) { + assertEquals(containingFilePath, element.getContainingFile().getVirtualFile().getPath()); + } + } }