From fbfaf24bc3bf0ac0f5979e1e90fa21ca51a18ce1 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Wed, 8 Mar 2023 13:16:55 +0200 Subject: [PATCH] [python] Make PyOverrideTest work with the latest Python 3 by default GitOrigin-RevId: fd44fa8ca8a0f3eed2b710a65225979569023d3f --- python/testData/override/circle_after.py | 2 +- .../override/classmethodNewStyle_after.py | 2 +- python/testData/override/classmethod_after.py | 2 +- python/testData/override/dunderNew_after.py | 2 +- python/testData/override/indent_after.py | 2 +- python/testData/override/innerClass.py | 2 +- python/testData/override/innerClass_after.py | 4 +- .../override/innerFunctionClass_after.py | 2 +- .../testData/override/instanceCheck_after.py | 7 ++- ...{newStyle.py => newStyleClassInPython2.py} | 0 ...ter.py => newStyleClassInPython2_after.py} | 0 .../{simple.py => oldStyleClassInPython2.py} | 0 ...ter.py => oldStyleClassInPython2_after.py} | 0 python/testData/override/property_after.py | 2 +- python/testData/override/qualified_after.py | 6 +- python/testData/override/returnValue_after.py | 2 +- .../testData/override/staticMethod_after.py | 2 +- .../com/jetbrains/python/PyOverrideTest.java | 56 +++++++------------ 18 files changed, 42 insertions(+), 51 deletions(-) rename python/testData/override/{newStyle.py => newStyleClassInPython2.py} (100%) rename python/testData/override/{newStyle_after.py => newStyleClassInPython2_after.py} (100%) rename python/testData/override/{simple.py => oldStyleClassInPython2.py} (100%) rename python/testData/override/{simple_after.py => oldStyleClassInPython2_after.py} (100%) diff --git a/python/testData/override/circle_after.py b/python/testData/override/circle_after.py index dd4c1d343e98..6fd648ed76aa 100644 --- a/python/testData/override/circle_after.py +++ b/python/testData/override/circle_after.py @@ -4,7 +4,7 @@ class Spam(Eggs): class Eggs(Spam): def spam_methods(self): - super(Eggs, self).spam_methods() + super().spam_methods() def my_methods(self): pass diff --git a/python/testData/override/classmethodNewStyle_after.py b/python/testData/override/classmethodNewStyle_after.py index c5e048d6cde2..98f09cfcf529 100644 --- a/python/testData/override/classmethodNewStyle_after.py +++ b/python/testData/override/classmethodNewStyle_after.py @@ -6,5 +6,5 @@ class A(object): class B(A): @classmethod def m(cls): - super(B, cls).m() + super().m() diff --git a/python/testData/override/classmethod_after.py b/python/testData/override/classmethod_after.py index dd85fe6b083e..ab342c5c78bf 100644 --- a/python/testData/override/classmethod_after.py +++ b/python/testData/override/classmethod_after.py @@ -6,4 +6,4 @@ class A: class B(A): @classmethod def foo(cls): - A.foo(cls) + super().foo() diff --git a/python/testData/override/dunderNew_after.py b/python/testData/override/dunderNew_after.py index 4770bf402495..bc21e756faca 100644 --- a/python/testData/override/dunderNew_after.py +++ b/python/testData/override/dunderNew_after.py @@ -5,5 +5,5 @@ class BaseMeta(type): class MyMeta(BaseMeta): def __new__(cls, name, bases, namespace): - return super(MyMeta, cls).__new__(cls, name, bases, namespace) + return super().__new__(cls, name, bases, namespace) diff --git a/python/testData/override/indent_after.py b/python/testData/override/indent_after.py index f51ffeff5a0a..5f676441ef79 100644 --- a/python/testData/override/indent_after.py +++ b/python/testData/override/indent_after.py @@ -4,4 +4,4 @@ class Dialog: class B(Dialog): def validate(self): - Dialog.validate(self) \ No newline at end of file + super().validate() \ No newline at end of file diff --git a/python/testData/override/innerClass.py b/python/testData/override/innerClass.py index 8c0eaef2e0b9..cf9941b4d416 100644 --- a/python/testData/override/innerClass.py +++ b/python/testData/override/innerClass.py @@ -9,4 +9,4 @@ class A: class B(A): def otherMethod(self, foo, bar): - print foo, bar + print(foo, bar) diff --git a/python/testData/override/innerClass_after.py b/python/testData/override/innerClass_after.py index 5c49802d18bb..b7063ef8ec82 100644 --- a/python/testData/override/innerClass_after.py +++ b/python/testData/override/innerClass_after.py @@ -5,10 +5,10 @@ class X(object): class A: class Inner(X): def foo(self): - super(A.Inner, self).foo() + super().foo() def doStuff(self, foo=True): pass class B(A): def otherMethod(self, foo, bar): - print foo, bar + print(foo, bar) diff --git a/python/testData/override/innerFunctionClass_after.py b/python/testData/override/innerFunctionClass_after.py index d1230e14ce08..769e9d7120d1 100644 --- a/python/testData/override/innerFunctionClass_after.py +++ b/python/testData/override/innerFunctionClass_after.py @@ -6,5 +6,5 @@ class A(): def service(self): class B(X): def foo(self): - super(B, self).foo() + super().foo() diff --git a/python/testData/override/instanceCheck_after.py b/python/testData/override/instanceCheck_after.py index fbebd1f526c1..dda1fe7029e0 100644 --- a/python/testData/override/instanceCheck_after.py +++ b/python/testData/override/instanceCheck_after.py @@ -1,3 +1,6 @@ +from typing import Any + + class MyType(type): - def __instancecheck__(self, instance): - return super(MyType, self).__instancecheck__(instance) + def __instancecheck__(self, __instance: Any) -> bool: + return super().__instancecheck__(__instance) diff --git a/python/testData/override/newStyle.py b/python/testData/override/newStyleClassInPython2.py similarity index 100% rename from python/testData/override/newStyle.py rename to python/testData/override/newStyleClassInPython2.py diff --git a/python/testData/override/newStyle_after.py b/python/testData/override/newStyleClassInPython2_after.py similarity index 100% rename from python/testData/override/newStyle_after.py rename to python/testData/override/newStyleClassInPython2_after.py diff --git a/python/testData/override/simple.py b/python/testData/override/oldStyleClassInPython2.py similarity index 100% rename from python/testData/override/simple.py rename to python/testData/override/oldStyleClassInPython2.py diff --git a/python/testData/override/simple_after.py b/python/testData/override/oldStyleClassInPython2_after.py similarity index 100% rename from python/testData/override/simple_after.py rename to python/testData/override/oldStyleClassInPython2_after.py diff --git a/python/testData/override/property_after.py b/python/testData/override/property_after.py index dd3029e2c190..d4d6f170bc8c 100644 --- a/python/testData/override/property_after.py +++ b/python/testData/override/property_after.py @@ -7,5 +7,5 @@ class C(object): class D(C): @property def foo(self): - return super(D, self).foo + return super().foo diff --git a/python/testData/override/qualified_after.py b/python/testData/override/qualified_after.py index c405b979cfb7..f10cdb3257c4 100644 --- a/python/testData/override/qualified_after.py +++ b/python/testData/override/qualified_after.py @@ -1,6 +1,8 @@ import turtle +from tkinter import Canvas + class C(turtle.TurtleScreenBase): - def __init__(self, cv): - super(C, self).__init__(cv) + def __init__(self, cv: Canvas) -> None: + super().__init__(cv) diff --git a/python/testData/override/returnValue_after.py b/python/testData/override/returnValue_after.py index 2a0dcb2b65cd..2ea50dce2e54 100644 --- a/python/testData/override/returnValue_after.py +++ b/python/testData/override/returnValue_after.py @@ -3,7 +3,7 @@ class A: class B(A): def doStuff(self, foo=True): - return A.doStuff(self, foo) + return super().doStuff(foo) def otherMethod(self, foo, bar): print foo, bar diff --git a/python/testData/override/staticMethod_after.py b/python/testData/override/staticMethod_after.py index 000c0ca534cf..59653d58d718 100644 --- a/python/testData/override/staticMethod_after.py +++ b/python/testData/override/staticMethod_after.py @@ -6,4 +6,4 @@ class A: class B(A): @staticmethod def foo(cls): - A.foo(cls) + super().foo(cls) diff --git a/python/testSrc/com/jetbrains/python/PyOverrideTest.java b/python/testSrc/com/jetbrains/python/PyOverrideTest.java index d164311fc09d..40b955222b64 100644 --- a/python/testSrc/com/jetbrains/python/PyOverrideTest.java +++ b/python/testSrc/com/jetbrains/python/PyOverrideTest.java @@ -1,7 +1,6 @@ // Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.jetbrains.python; -import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.python.codeInsight.override.PyMethodMember; @@ -23,11 +22,6 @@ import java.util.List; public class PyOverrideTest extends PyTestCase { - @Override - protected @Nullable LightProjectDescriptor getProjectDescriptor() { - return ourPy2Descriptor; - } - private void doTest() { doTest(null); } @@ -64,10 +58,6 @@ public class PyOverrideTest extends PyTestCase { PyOverrideImplementUtil.overrideMethods(myFixture.getEditor(), subClass, ContainerUtil.map(implToOverride, PyMethodMember::new), false); } - private void doTest3k() { - runWithLanguageLevel(LanguageLevel.PYTHON34, this::doTest); - } - /** * Ensures loops in class hierarchy does not lead to SO */ @@ -75,8 +65,8 @@ public class PyOverrideTest extends PyTestCase { doTest(); } - public void testSimple() { - doTest(); + public void testOldStyleClassInPython2() { + runWithLanguageLevel(LanguageLevel.PYTHON27, this::doTest); } public void testClassmethod() { @@ -87,8 +77,8 @@ public class PyOverrideTest extends PyTestCase { doTest(); } - public void testNewStyle() { - doTest(); + public void testNewStyleClassInPython2() { + runWithLanguageLevel(LanguageLevel.PYTHON27, this::doTest); } public void testReturnValue() { // PY-1537 @@ -140,17 +130,17 @@ public class PyOverrideTest extends PyTestCase { } public void testPy3k() { - doTest3k(); + doTest(); } // PY-15629 public void testStaticMethodPy3k() { - doTest3k(); + doTest(); } // PY-15629 public void testDunderNewPy3k() { - doTest3k(); + doTest(); } // PY-15629 @@ -159,11 +149,11 @@ public class PyOverrideTest extends PyTestCase { } public void testTypeAnnotations() { // PY-2547 - doTest3k(); + doTest(); } public void testReturnAnnotation() { // PY-2690 - doTest3k(); + doTest(); } // PY-18553 @@ -180,23 +170,21 @@ public class PyOverrideTest extends PyTestCase { } private void doTestImportsForTypeAnnotations() { - runWithLanguageLevel(LanguageLevel.PYTHON35, () -> { - myFixture.configureByFiles(getTestName(true) + ".py", getTestName(true) + "_import.py"); - doOverride(null); - myFixture.checkResultByFile(getTestName(true) + "_after.py", true); - }); + myFixture.configureByFiles(getTestName(true) + ".py", getTestName(true) + "_import.py"); + doOverride(null); + myFixture.checkResultByFile(getTestName(true) + "_after.py", true); } public void testSingleStar() { // PY-6455 - doTest3k(); + doTest(); } public void testStarArgs() { // PY-6455 - doTest3k(); + doTest(); } public void testKwargs() { // PY-7401 - doTest3k(); + doTest(); } public void testDocstring() { @@ -210,26 +198,24 @@ public class PyOverrideTest extends PyTestCase { // PY-19312 public void testAsyncMethod() { - runWithLanguageLevel(LanguageLevel.PYTHON36, this::doTest); + doTest(); } // PY-30287 public void testMethodWithOverloadsInTheSameFile() { - runWithLanguageLevel(LanguageLevel.PYTHON35, this::doTest); + doTest(); } // PY-30287 public void testMethodWithOverloadsInAnotherFile() { - runWithLanguageLevel(LanguageLevel.PYTHON35, () -> { - myFixture.configureByFiles(getTestName(true) + ".py", getTestName(true) + "_parent.py"); - doOverride(null); - myFixture.checkResultByFile(getTestName(true) + "_after.py", true); - }); + myFixture.configureByFiles(getTestName(true) + ".py", getTestName(true) + "_parent.py"); + doOverride("B"); + myFixture.checkResultByFile(getTestName(true) + "_after.py", true); } // PY-35512 public void testPositionalOnlyParameters() { - runWithLanguageLevel(LanguageLevel.PYTHON38, () -> doTest("B")); + doTest("B"); } @Override