some refactoring of the test suite

This commit is contained in:
Dmitry Jemerov
2010-07-01 21:53:34 +04:00
parent cdf76f7eed
commit 9735f9facd
14 changed files with 95 additions and 93 deletions
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -26,4 +26,4 @@ class A(object):
# deleter absent
<ref>a = A()
<caret>a = A()
+1 -1
View File
@@ -2,4 +2,4 @@ class A:
def foo(self):
a = A()
A.f<ref>oo(a)
A.f<caret>oo(a)
+1 -1
View File
@@ -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());
}
}
}