From 819731653c9674b30508cc18d21787824ac49f3f Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Fri, 4 Feb 2011 15:29:58 +0300 Subject: [PATCH] Revert "Merge branch 'master' of git.labs.intellij.net:idea/ultimate" This reverts commit 8c63477c4990c0667109c41ec0db1336ef689d68, reversing changes made to 3478dde5d0c91ad1cce33478d005748849dcb85f. --- python/build/pycharm.sh | 4 +-- python/build/pycharm_build.gant | 2 +- python/helpers/pycharm/django_settings.py | 3 +- python/helpers/pycharm/tcunittest.py | 9 ++---- python/python-ide.iml | 1 - .../resources/idea/PythonApplicationInfo.xml | 2 +- python/resources/pycharm_about.png | Bin 22629 -> 22373 bytes python/resources/pycharm_logo.png | Bin 27676 -> 27458 bytes python/src/META-INF/python-plugin-common.xml | 3 -- .../controlflow/PyControlFlowBuilder.java | 30 ++++++++---------- .../python/psi/PyCallExpression.java | 25 ++++----------- .../python/psi/impl/PyCallExpressionImpl.java | 16 +++------- .../python/psi/impl/PyDecoratorImpl.java | 15 +++------ .../classes/PyClassRefactoringUtil.java | 8 ++--- .../testData/codeInsight/controlflow/if.txt | 20 ++++++------ .../codeInsight/controlflow/manyifs.py | 13 -------- .../codeInsight/controlflow/manyifs.txt | 27 ---------------- .../pullup/duplicateImport/Class.py | 9 ------ .../duplicateImport/SuperClass.after.py | 10 ------ .../pullup/duplicateImport/SuperClass.py | 5 --- .../refactoring/pullup/multiFile/Class.py | 5 --- .../pullup/multiFile/SuperClass.after.py | 6 ---- .../pullup/multiFile/SuperClass.py | 3 -- .../python/PyControlFlowBuilderTest.java | 4 --- .../refactoring/classes/PyPullUpTest.java | 22 +------------ 25 files changed, 49 insertions(+), 193 deletions(-) delete mode 100644 python/testData/codeInsight/controlflow/manyifs.py delete mode 100644 python/testData/codeInsight/controlflow/manyifs.txt delete mode 100644 python/testData/refactoring/pullup/duplicateImport/Class.py delete mode 100644 python/testData/refactoring/pullup/duplicateImport/SuperClass.after.py delete mode 100644 python/testData/refactoring/pullup/duplicateImport/SuperClass.py delete mode 100644 python/testData/refactoring/pullup/multiFile/Class.py delete mode 100644 python/testData/refactoring/pullup/multiFile/SuperClass.after.py delete mode 100644 python/testData/refactoring/pullup/multiFile/SuperClass.py diff --git a/python/build/pycharm.sh b/python/build/pycharm.sh index fc7c4db0735a..fbd1150e7627 100644 --- a/python/build/pycharm.sh +++ b/python/build/pycharm.sh @@ -26,7 +26,7 @@ if [ -z "$PYCHARM_JDK" ]; then fi if [ -z "$PYCHARM_JDK" ]; then echo ERROR: cannot start PyCharm. - echo No JDK found to run PyCharm. Please validate either PYCHARM_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation. + echo No JDK found to run PyCharm. Please validate either PYCHARM_JDK, JDK_HOME or JAVA_HOME points to valid JDK installation. echo echo Press Enter to continue. read IGNORE @@ -47,7 +47,7 @@ if [ $OPEN_JDK -eq 0 ]; then echo THIS IS STRICTLY UNSUPPORTED DUE TO KNOWN PERFORMANCE AND GRAPHICS PROBLEMS echo echo NOTE: If you have both Sun JDK and OpenJDK installed - echo please validate either PYCHARM_JDK or JDK_HOME environment variable points to valid Sun JDK installation + echo please validate either PYCHARM_JDK or JDK_HOME points to valid Sun JDK installation echo echo Press Enter to continue. read IGNORE diff --git a/python/build/pycharm_build.gant b/python/build/pycharm_build.gant index b79c0b886e24..e61775a07613 100644 --- a/python/build/pycharm_build.gant +++ b/python/build/pycharm_build.gant @@ -280,7 +280,7 @@ def build_searchable_options() { ant.copy(file: "$home/build/idea.license", todir: paths.ideaSystem) ant.copy(file: "$home/build/pycharm.license", todir: paths.ideaSystem) ant.java(classname: "com.intellij.idea.Main", fork: "true") { - jvmarg(line: "-ea -Xmx250m -Didea.home.path=$home -Didea.system.path=${paths.ideaSystem} -Didea.config.path=${paths.ideaConfig} -Didea.platform.prefix=Python -Didea.no.jre.check=true") + jvmarg(line: "-ea -Xmx250m -Didea.home.path=$home -Didea.system.path=${paths.ideaSystem} -Didea.config.path=${paths.ideaConfig} -Didea.platform.prefix=Python") jvmarg(value: "-Xbootclasspath/a:${boot.output}") arg(line: "traverseUI ${dest_dir}/searchableOptions.xml") diff --git a/python/helpers/pycharm/django_settings.py b/python/helpers/pycharm/django_settings.py index 7adfc3579fbb..fa6ca43ccd58 100644 --- a/python/helpers/pycharm/django_settings.py +++ b/python/helpers/pycharm/django_settings.py @@ -4,8 +4,6 @@ settings_file = os.getenv('PYCHARM_DJANGO_SETTINGS_MODULE') if not settings_file: settings_file = 'settings' -print ("Importing Django settings module " + settings_file) - try: settings_module = __import__(settings_file) @@ -21,3 +19,4 @@ except ImportError: TEST_RUNNER = 'pycharm.django_test_runner.run_tests' +print ("pycharm django settings imported") # XXX \ No newline at end of file diff --git a/python/helpers/pycharm/tcunittest.py b/python/helpers/pycharm/tcunittest.py index 6a93b219b5a3..055401764e38 100644 --- a/python/helpers/pycharm/tcunittest.py +++ b/python/helpers/pycharm/tcunittest.py @@ -69,10 +69,8 @@ class TeamcityTestResult(TestResult): error_value = err[1][0] if error_value.startswith("'") or error_value.startswith('"'): - # let's unescape strings to show sexy multiline diff in PyCharm. - # By default all caret return chars are escaped by testing framework - first = self._unescape(self.find_first(err[1][0])) - second = self._unescape(self.find_second(err[1][0])) + first = self.find_first(err[1][0]) + second = self.find_second(err[1][0]) else: first = second = "" err = self.formatErr(err) @@ -120,9 +118,6 @@ class TeamcityTestResult(TestResult): self.messages.testSuiteFinished(self.current_suite) self.current_suite = None - def _unescape(self, text): - return text.decode('string_escape') - class TeamcityTestRunner: def __init__(self, stream=sys.stdout): self.stream = stream diff --git a/python/python-ide.iml b/python/python-ide.iml index 355bd899c650..40af0d8cc13f 100644 --- a/python/python-ide.iml +++ b/python/python-ide.iml @@ -18,7 +18,6 @@ - diff --git a/python/resources/idea/PythonApplicationInfo.xml b/python/resources/idea/PythonApplicationInfo.xml index 2a2904e01f38..3b7e04e9ce9d 100644 --- a/python/resources/idea/PythonApplicationInfo.xml +++ b/python/resources/idea/PythonApplicationInfo.xml @@ -1,6 +1,6 @@ - + diff --git a/python/resources/pycharm_about.png b/python/resources/pycharm_about.png index 06efada6504ce192f76a3264b28fc60d1b2535a9..a8c363ad1f847c727661051a8c940990828b9fd6 100644 GIT binary patch delta 21656 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 diff --git a/python/resources/pycharm_logo.png b/python/resources/pycharm_logo.png index 1f7299480a6340cfbeb52dea1f84f4e5e7aa4313..543cd08a9accf2c52f3979f138d0487db5d0697b 100644 GIT binary patch delta 26534 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 JPDHLkV1mGZy!HS9 diff --git a/python/src/META-INF/python-plugin-common.xml b/python/src/META-INF/python-plugin-common.xml index 97f0fc596bb6..ee2c0e57d935 100644 --- a/python/src/META-INF/python-plugin-common.xml +++ b/python/src/META-INF/python-plugin-common.xml @@ -277,9 +277,6 @@ - - diff --git a/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java b/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java index d212d6751be2..74e5d54e5ec0 100644 --- a/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java +++ b/python/src/com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.java @@ -204,9 +204,8 @@ public class PyControlFlowBuilder extends PyRecursiveElementVisitor { condition.accept(assertionEvaluator); } // Set the head as the last instruction of condition - PyElement lastCondition = condition; - Instruction lastBranchingPoint = getPrevInstruction(condition); - myBuilder.prevInstruction = lastBranchingPoint; + Instruction head = getPrevInstruction(condition); + myBuilder.prevInstruction = head; final PyStatementList thenStatements = ifPart.getStatementList(); if (thenStatements != null) { myBuilder.startConditionalNode(thenStatements, condition, true); @@ -224,26 +223,24 @@ public class PyControlFlowBuilder extends PyRecursiveElementVisitor { }); myBuilder.addPendingEdge(node, myBuilder.prevInstruction); } - for (final PyIfPart part : node.getElifParts()) { - // Set the head as the false branch - myBuilder.prevInstruction = lastBranchingPoint; - myBuilder.startConditionalNode(part, lastCondition, false); + for (PyIfPart part : node.getElifParts()) { + // restore head + myBuilder.prevInstruction = head; condition = part.getCondition(); if (condition != null) { - lastCondition = condition; - lastBranchingPoint = getPrevInstruction(lastCondition); condition.accept(this); } // Set the head as the last instruction of condition - myBuilder.prevInstruction = getPrevInstruction(lastCondition); - myBuilder.startConditionalNode(part, lastCondition, true); + head = getPrevInstruction(condition); + myBuilder.prevInstruction = head; + myBuilder.startConditionalNode(ifPart, condition, true); final PyStatementList statementList = part.getStatementList(); if (statementList != null) { statementList.accept(this); } myBuilder.processPending(new ControlFlowBuilder.PendingProcessor() { public void process(final PsiElement pendingScope, final Instruction instruction) { - if (pendingScope != null && PsiTreeUtil.isAncestor(part, pendingScope, false)) { + if (pendingScope != null && PsiTreeUtil.isAncestor(ifPart, pendingScope, false)) { myBuilder.addPendingEdge(node, instruction); } else { @@ -253,16 +250,15 @@ public class PyControlFlowBuilder extends PyRecursiveElementVisitor { }); myBuilder.addPendingEdge(node, myBuilder.prevInstruction); } + // restore head + myBuilder.prevInstruction = head; final PyElsePart elseBranch = node.getElsePart(); if (elseBranch != null) { - // Set the head as the false branch - myBuilder.prevInstruction = lastBranchingPoint; - myBuilder.startConditionalNode(elseBranch, lastCondition, false); + myBuilder.startConditionalNode(elseBranch, condition, false); elseBranch.accept(this); myBuilder.addPendingEdge(node, myBuilder.prevInstruction); - } else { - myBuilder.addPendingEdge(node, lastBranchingPoint); } + } @Override diff --git a/python/src/com/jetbrains/python/psi/PyCallExpression.java b/python/src/com/jetbrains/python/psi/PyCallExpression.java index 366205c1c756..0dd3b300cd4c 100644 --- a/python/src/com/jetbrains/python/psi/PyCallExpression.java +++ b/python/src/com/jetbrains/python/psi/PyCallExpression.java @@ -1,6 +1,5 @@ package com.jetbrains.python.psi; -import com.intellij.psi.PsiElement; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -30,17 +29,6 @@ public interface PyCallExpression extends PyExpression { @NotNull PyExpression[] getArguments(); - /** - * If the list of arguments has at least {@code index} elements and the index'th element is of type argClass, - * returns it. Otherwise, returns null. - * - * @param index argument index - * @param argClass argument expected type - * @return the argument or null - */ - @Nullable - T getArgument(int index, Class argClass); - void addArgument(PyExpression expression); /** @@ -73,10 +61,9 @@ public interface PyCallExpression extends PyExpression { /** * Method-oriented constructor. - * - * @param function the method (or any other callable, but why bother then). - * @param flags result of decorators or wrapping. - * @param offset implicit argument offset; parameters up to this are implicitly filled in the call. + * @param function the method (or any other callable, but why bother then). + * @param flags result of decorators or wrapping. + * @param offset implicit argument offset; parameters up to this are implicitly filled in the call. * @param implicitlyResolved value for {@link #isImplicitlyResolved()} */ public PyMarkedCallee(@NotNull Callable function, EnumSet flags, int offset, boolean implicitlyResolved) { @@ -90,7 +77,7 @@ public interface PyCallExpression extends PyExpression { myCallable = callable; myFlags = EnumSet.noneOf(PyFunction.Flag.class); myImplicitOffset = 0; - myImplicitlyResolved = implicitlyResolved; + myImplicitlyResolved = implicitlyResolved; } public Callable getCallable() { @@ -103,8 +90,8 @@ public interface PyCallExpression extends PyExpression { /** * @return number of implicitly passed positional parameters; 0 means no parameters are passed implicitly. - * Note that a *args is never marked as passed implicitly. - * E.g. for a function like foo(a, b, *args) always holds getImplicitOffset() < 2. + * Note that a *args is never marked as passed implicitly. + * E.g. for a function like foo(a, b, *args) always holds getImplicitOffset() < 2. */ public int getImplicitOffset() { return myImplicitOffset; diff --git a/python/src/com/jetbrains/python/psi/impl/PyCallExpressionImpl.java b/python/src/com/jetbrains/python/psi/impl/PyCallExpressionImpl.java index 0564ad356396..c0395d16bf6b 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyCallExpressionImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyCallExpressionImpl.java @@ -47,12 +47,6 @@ public class PyCallExpressionImpl extends PyElementImpl implements PyCallExpress return argList != null ? argList.getArguments() : PyExpression.EMPTY_ARRAY; } - @Override - public T getArgument(int index, Class argClass) { - PyExpression[] args = getArguments(); - return args.length >= index && argClass.isInstance(args[index]) ? argClass.cast(args[index]) : null; - } - public void addArgument(PyExpression expression) { PyCallExpressionHelper.addArgument(this, expression); } @@ -62,7 +56,7 @@ public class PyCallExpressionImpl extends PyElementImpl implements PyCallExpress } public boolean isCalleeText(@NotNull String... nameCandidates) { - return PyCallExpressionHelper.isCalleeText(this, nameCandidates); + return PyCallExpressionHelper.isCalleeText(this, nameCandidates); } @Override @@ -106,7 +100,7 @@ public class PyCallExpressionImpl extends PyElementImpl implements PyCallExpress if (target instanceof Callable) { final Callable callable = (Callable)target; if (context.allowReturnTypes()) { - return callable.getReturnType(context, (PyReferenceExpression)callee); + return callable.getReturnType(context, (PyReferenceExpression) callee); } if (callable instanceof PyFunction) { final PyType docStringType = ((PyFunction)callable).getReturnTypeFromDocString(); @@ -124,7 +118,7 @@ public class PyCallExpressionImpl extends PyElementImpl implements PyCallExpress else { final PyType type = context.getType(callee); if (type instanceof PyClassType) { - PyClassType classType = (PyClassType)type; + PyClassType classType = (PyClassType) type; if (classType.isDefinition()) { return new PyClassType(classType.getPyClass(), false); } @@ -157,7 +151,7 @@ public class PyCallExpressionImpl extends PyElementImpl implements PyCallExpress final PsiElement element = qRef == null ? null : qRef.resolve(); if (element instanceof PyParameter) { final PyParameterList parameterList = PsiTreeUtil.getParentOfType(element, PyParameterList.class); - if (parameterList != null && element == parameterList.getParameters()[0]) { + if (parameterList != null && element == parameterList.getParameters() [0]) { return getSuperCallType(context, containingClass, args[1]); } } @@ -207,7 +201,7 @@ public class PyCallExpressionImpl extends PyElementImpl implements PyCallExpress final PyClass[] supers = pyClass.getSuperClasses(); if (supers.length > 0) { if (supers.length == 1) { - return new PyClassType(supers[0], false); + return new PyClassType(supers [0], false); } List superTypes = new ArrayList(); for (PyClass aSuper : supers) { diff --git a/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java b/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java index 57ca267f0268..bd7b96dd3a99 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyDecoratorImpl.java @@ -9,6 +9,7 @@ import com.jetbrains.python.PyTokenTypes; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.resolve.PyResolveUtil; import com.jetbrains.python.psi.stubs.PyDecoratorStub; +import com.jetbrains.python.psi.PyDecorator; import com.jetbrains.python.psi.types.PyType; import com.jetbrains.python.psi.types.TypeEvalContext; import org.jetbrains.annotations.NonNls; @@ -36,7 +37,7 @@ public class PyDecoratorImpl extends PyPresentableElementImpl i @Override public String getName() { final PyQualifiedName qname = getQualifiedName(); - return qname != null ? qname.getLastComponent() : null; + return qname != null? qname.getLastComponent() : null; } @Nullable @@ -100,12 +101,6 @@ public class PyDecoratorImpl extends PyPresentableElementImpl i return argList != null ? argList.getArguments() : PyExpression.EMPTY_ARRAY; } - @Override - public T getArgument(int index, Class argClass) { - PyExpression[] args = getArguments(); - return args.length >= index && argClass.isInstance(args[index]) ? argClass.cast(args[index]) : null; - } - public void addArgument(PyExpression expression) { PyCallExpressionHelper.addArgument(this, expression); } @@ -113,7 +108,7 @@ public class PyDecoratorImpl extends PyPresentableElementImpl i public PyMarkedCallee resolveCallee(TypeEvalContext context) { PyMarkedCallee callee = PyCallExpressionHelper.resolveCallee(this, context); if (callee == null) return null; - if (!hasArgumentList()) { + if (! hasArgumentList()) { // NOTE: that +1 thing looks fishy callee = new PyMarkedCallee(callee.getCallable(), callee.getFlags(), callee.getImplicitOffset() + 1, callee.isImplicitlyResolved()); } @@ -137,9 +132,7 @@ public class PyDecoratorImpl extends PyPresentableElementImpl i node.replaceChild(name_node, nameElement); return this; } - else { - throw new IncorrectOperationException("No name node"); - } + else throw new IncorrectOperationException("No name node"); } // TODO: create a custom version of public PyType getType() diff --git a/python/src/com/jetbrains/python/refactoring/classes/PyClassRefactoringUtil.java b/python/src/com/jetbrains/python/refactoring/classes/PyClassRefactoringUtil.java index 06d5ddc5f79b..213143e0e21a 100644 --- a/python/src/com/jetbrains/python/refactoring/classes/PyClassRefactoringUtil.java +++ b/python/src/com/jetbrains/python/refactoring/classes/PyClassRefactoringUtil.java @@ -197,12 +197,12 @@ public class PyClassRefactoringUtil { } private static void rememberNamedReferences(final List methods) { - for (final PyFunction method : methods) { + for (PyFunction method : methods) { method.acceptChildren(new PyRecursiveElementVisitor() { @Override public void visitPyReferenceExpression(PyReferenceExpression node) { super.visitPyReferenceExpression(node); - rememberReference(node, method); + rememberReference(node); } }); } @@ -210,13 +210,13 @@ public class PyClassRefactoringUtil { private static final Key ENCODED_IMPORT = Key.create("PyEncodedImport"); - private static void rememberReference(PyReferenceExpression node, PyFunction method) { + private static void rememberReference(PyReferenceExpression node) { // we will remember reference in deepest node if (node.getQualifier() instanceof PyReferenceExpression) return; final PsiPolyVariantReference ref = node.getReference(); final PsiElement target = ref.resolve(); - if (target instanceof PsiNamedElement && !PsiTreeUtil.isAncestor(method, target, false)) { + if (target instanceof PsiNamedElement) { node.putCopyableUserData(ENCODED_IMPORT, (PsiNamedElement)target); } } diff --git a/python/testData/codeInsight/controlflow/if.txt b/python/testData/codeInsight/controlflow/if.txt index d1e5a89c7729..a6589785062e 100644 --- a/python/testData/codeInsight/controlflow/if.txt +++ b/python/testData/codeInsight/controlflow/if.txt @@ -4,14 +4,12 @@ 3(4,5) element: PyIfStatement 4(6) element: PyStatementList. Condition: 1:true 5(6) element: PyElsePart. Condition: 1:false -6(7,8) element: PyIfStatement -7(10) element: PyStatementList. Condition: 2:true -8(9,10) element: PyIfPartElif. Condition: 2:false -9(10) element: PyIfPartElif. Condition: 3:true -10(11,12) element: PyIfStatement -11(16) element: PyStatementList. Condition: 4:true -12(13,14) element: PyIfPartElif. Condition: 4:false -13(16) element: PyIfPartElif. Condition: 5:true -14(15) element: PyElsePart. Condition: 5:false -15(16) element: PyExpressionStatement -16() element: null \ No newline at end of file +6(7,8,9) element: PyIfStatement +7(9) element: PyStatementList. Condition: 2:true +8(9) element: PyIfPartIf. Condition: 3:true +9(10,11,12) element: PyIfStatement +10(14) element: PyStatementList. Condition: 4:true +11(14) element: PyIfPartIf. Condition: 5:true +12(13) element: PyElsePart. Condition: 5:false +13(14) element: PyExpressionStatement +14() element: null \ No newline at end of file diff --git a/python/testData/codeInsight/controlflow/manyifs.py b/python/testData/codeInsight/controlflow/manyifs.py deleted file mode 100644 index 02813a53be2c..000000000000 --- a/python/testData/codeInsight/controlflow/manyifs.py +++ /dev/null @@ -1,13 +0,0 @@ -var = 1 -if a == b: - var = 2 -elif aa == bb: - bbb = same_changet_expression - - if bbb: - var = 3 # <--- this highlight bug (unused variable) - -else: - var = 4 - -return {'variable': var} \ No newline at end of file diff --git a/python/testData/codeInsight/controlflow/manyifs.txt b/python/testData/codeInsight/controlflow/manyifs.txt deleted file mode 100644 index b26712011b2a..000000000000 --- a/python/testData/codeInsight/controlflow/manyifs.txt +++ /dev/null @@ -1,27 +0,0 @@ -0(1) element: null -1(2) element: PyAssignmentStatement -2(3) WRITE ACCESS: var -3(4) element: PyIfStatement -4(5) READ ACCESS: a -5(6,9) READ ACCESS: b -6(7) element: PyStatementList. Condition: a == b:true -7(8) element: PyAssignmentStatement -8(24) WRITE ACCESS: var -9(10,21) element: PyIfPartElif. Condition: a == b:false -10(11) READ ACCESS: aa -11(12) READ ACCESS: bb -12(13) element: PyIfPartElif. Condition: aa == bb:true -13(14) element: PyAssignmentStatement -14(15) READ ACCESS: same_changet_expression -15(16) WRITE ACCESS: bbb -16(17) element: PyIfStatement -17(18,24) READ ACCESS: bbb -18(19) element: PyStatementList. Condition: bbb:true -19(20) element: PyAssignmentStatement -20(24) WRITE ACCESS: var -21(22) element: PyElsePart. Condition: aa == bb:false -22(23) element: PyAssignmentStatement -23(24) WRITE ACCESS: var -24(25) element: PyReturnStatement -25(26) READ ACCESS: var -26() element: null \ No newline at end of file diff --git a/python/testData/refactoring/pullup/duplicateImport/Class.py b/python/testData/refactoring/pullup/duplicateImport/Class.py deleted file mode 100644 index bd19d07b851d..000000000000 --- a/python/testData/refactoring/pullup/duplicateImport/Class.py +++ /dev/null @@ -1,9 +0,0 @@ -from SuperClass import SuperClass - -from sys import argv - -class AnyClass(SuperClass): - def this_should_be_in_super(self, some_argument): - if not self.args: - self.args = argv - self.argument = some_argument diff --git a/python/testData/refactoring/pullup/duplicateImport/SuperClass.after.py b/python/testData/refactoring/pullup/duplicateImport/SuperClass.after.py deleted file mode 100644 index 19fa11b25860..000000000000 --- a/python/testData/refactoring/pullup/duplicateImport/SuperClass.after.py +++ /dev/null @@ -1,10 +0,0 @@ -from sys import argv - -class SuperClass(object): - def __init__(self): - pass - - def this_should_be_in_super(self, some_argument): - if not self.args: - self.args = argv - self.argument = some_argument diff --git a/python/testData/refactoring/pullup/duplicateImport/SuperClass.py b/python/testData/refactoring/pullup/duplicateImport/SuperClass.py deleted file mode 100644 index 45d0d4982c9c..000000000000 --- a/python/testData/refactoring/pullup/duplicateImport/SuperClass.py +++ /dev/null @@ -1,5 +0,0 @@ -from sys import argv - -class SuperClass(object): - def __init__(self): - pass diff --git a/python/testData/refactoring/pullup/multiFile/Class.py b/python/testData/refactoring/pullup/multiFile/Class.py deleted file mode 100644 index ddf8ded026cd..000000000000 --- a/python/testData/refactoring/pullup/multiFile/Class.py +++ /dev/null @@ -1,5 +0,0 @@ -from SuperClass import SuperClass - -class AnyClass(SuperClass): - def this_should_be_in_super(self, some_argument): - self.argument = some_argument diff --git a/python/testData/refactoring/pullup/multiFile/SuperClass.after.py b/python/testData/refactoring/pullup/multiFile/SuperClass.after.py deleted file mode 100644 index 1466568d7581..000000000000 --- a/python/testData/refactoring/pullup/multiFile/SuperClass.after.py +++ /dev/null @@ -1,6 +0,0 @@ -class SuperClass(object): - def __init__(self): - pass - - def this_should_be_in_super(self, some_argument): - self.argument = some_argument diff --git a/python/testData/refactoring/pullup/multiFile/SuperClass.py b/python/testData/refactoring/pullup/multiFile/SuperClass.py deleted file mode 100644 index a41b8fdc7db1..000000000000 --- a/python/testData/refactoring/pullup/multiFile/SuperClass.py +++ /dev/null @@ -1,3 +0,0 @@ -class SuperClass(object): - def __init__(self): - pass diff --git a/python/testSrc/com/jetbrains/python/PyControlFlowBuilderTest.java b/python/testSrc/com/jetbrains/python/PyControlFlowBuilderTest.java index f33a468da477..ca9f13604e06 100644 --- a/python/testSrc/com/jetbrains/python/PyControlFlowBuilderTest.java +++ b/python/testSrc/com/jetbrains/python/PyControlFlowBuilderTest.java @@ -144,10 +144,6 @@ public class PyControlFlowBuilderTest extends LightMarkedTestCase { doTest(); } - public void testManyIfs() throws Exception { - doTest(); - } - public void testQualifiedSelfReference() throws Exception { final String testName = getTestName(false).toLowerCase(); configureByFile(testName + ".py"); diff --git a/python/testSrc/com/jetbrains/python/refactoring/classes/PyPullUpTest.java b/python/testSrc/com/jetbrains/python/refactoring/classes/PyPullUpTest.java index 5c1640bc1a09..1748f49ca095 100644 --- a/python/testSrc/com/jetbrains/python/refactoring/classes/PyPullUpTest.java +++ b/python/testSrc/com/jetbrains/python/refactoring/classes/PyPullUpTest.java @@ -30,33 +30,13 @@ public class PyPullUpTest extends PyClassRefactoringTest { doHelperTest("Boo", ".boo", "Foo"); } - public void testMultiFile() { // PY-2810 - doMultiFileTest(); - } - - public void testDuplicateImport() { // PY-2810 - doMultiFileTest(); - } - - private void doMultiFileTest() { - String baseName = "refactoring/pullup/" + getTestName(true) + "/"; - myFixture.copyFileToProject(baseName + "Class.py", "Class.py"); - myFixture.copyFileToProject(baseName + "SuperClass.py", "SuperClass.py"); - doPullUp("AnyClass", ".this_should_be_in_super", "SuperClass"); - myFixture.checkResultByFile("SuperClass.py", "/" + baseName + "/SuperClass.after.py", true); - } - private void doHelperTest(final String className, final String memberName, final String superClassName) { String baseName = "/refactoring/pullup/" + getTestName(true); myFixture.configureByFile(baseName + ".py"); - doPullUp(className, memberName, superClassName); - myFixture.checkResultByFile(baseName + ".after.py"); - } - - private void doPullUp(String className, String memberName, String superClassName) { final PyClass clazz = findClass(className); final PyElement member = findMember(className, memberName); final PyClass superClass = findClass(superClassName); PyPullUpHelper.pullUp(clazz, Collections.singleton(new PyMemberInfo(member)), superClass); + myFixture.checkResultByFile(baseName + ".after.py"); } }