]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-44808: fixes test for interactive inspect getsource of a class (GH-27571)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 3 Aug 2021 13:07:59 +0000 (06:07 -0700)
committerGitHub <noreply@github.com>
Tue, 3 Aug 2021 13:07:59 +0000 (06:07 -0700)
Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
(cherry picked from commit 58325971de0faf330c9c38269dae8315a0746e59)

Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
Lib/test/test_inspect.py

index 157f315999c428c3b7b6cd67dc75f7799c812c1b..a9778282d90a4ea0e5f61dbc14d5d365b5951976 100644 (file)
@@ -586,19 +586,15 @@ class TestRetrievingSourceCode(GetSourceBase):
         self.assertSourceEqual(mod.eggs.__code__, 12, 18)
 
 class TestGetsourceInteractive(unittest.TestCase):
-    def tearDown(self):
-        mod.ParrotDroppings.__module__ = self.mod
-        sys.modules['__main__'] = self.main
-
     def test_getclasses_interactive(self):
-        self.main = sys.modules['__main__']
-        self.mod = mod.ParrotDroppings.__module__
-        class MockModule:
-            __file__ = None
-        sys.modules['__main__'] = MockModule
-        mod.ParrotDroppings.__module__ = '__main__'
-        with self.assertRaisesRegex(OSError, 'source code not available') as e:
-            inspect.getsource(mod.ParrotDroppings)
+        # bpo-44648: simulate a REPL session;
+        # there is no `__file__` in the __main__ module
+        code = "import sys, inspect; \
+                assert not hasattr(sys.modules['__main__'], '__file__'); \
+                A = type('A', (), {}); \
+                inspect.getsource(A)"
+        _, _, stderr = assert_python_failure("-c", code, __isolated=True)
+        self.assertIn(b'OSError: source code not available', stderr)
 
 class TestGettingSourceOfToplevelFrames(GetSourceBase):
     fodderModule = mod