mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
some refactoring of the test suite
This commit is contained in:
@@ -16,4 +16,4 @@ class A(object):
|
||||
v3 = property(lambda self: self._v, None, (deleter))
|
||||
v4 = otherworldly # NOTE: not supported yet
|
||||
|
||||
<ref>a = A()
|
||||
<caret>a = A()
|
||||
|
||||
@@ -26,4 +26,4 @@ class A(object):
|
||||
|
||||
# deleter absent
|
||||
|
||||
<ref>a = A()
|
||||
<caret>a = A()
|
||||
|
||||
@@ -2,4 +2,4 @@ class A:
|
||||
def foo(self):
|
||||
|
||||
a = A()
|
||||
A.f<ref>oo(a)
|
||||
A.f<caret>oo(a)
|
||||
@@ -1,6 +1,6 @@
|
||||
def deco(fun):
|
||||
return fun
|
||||
|
||||
@<ref>deco
|
||||
@<caret>deco
|
||||
def foo():
|
||||
pass
|
||||
|
||||
@@ -6,6 +6,6 @@ def deco(prefix):
|
||||
return dfun
|
||||
return fun
|
||||
|
||||
@<ref>deco(1)
|
||||
@<caret>deco(1)
|
||||
def foo():
|
||||
pass
|
||||
|
||||
@@ -2,4 +2,4 @@ class A:
|
||||
def foo(self):
|
||||
|
||||
a = A()
|
||||
a.f<ref>oo()
|
||||
a.f<caret>oo()
|
||||
@@ -1,7 +1,7 @@
|
||||
def deco(fun):
|
||||
return fun
|
||||
|
||||
@<ref>deco
|
||||
@<caret>deco
|
||||
def foo():
|
||||
pass
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ def deco(prefix):
|
||||
return dfun
|
||||
return fun
|
||||
|
||||
@<ref>deco(1)
|
||||
@<caret>deco(1)
|
||||
def foo():
|
||||
pass
|
||||
|
||||
|
||||
@@ -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/";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 <T extends PsiElement> void assertResolvesTo(final Class<T> aClass, final String name) throws Exception {
|
||||
assertResolvesTo(aClass, name, null);
|
||||
}
|
||||
|
||||
private <T extends PsiElement> void assertResolvesTo(final Class<T> 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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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/";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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 <T extends PsiElement> void assertResolvesTo(final Class<T> aClass, final String name) {
|
||||
assertResolvesTo(aClass, name, null);
|
||||
}
|
||||
|
||||
protected <T extends PsiElement> void assertResolvesTo(final Class<T> 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user