From: andrei kulakov Date: Tue, 3 Aug 2021 12:47:30 +0000 (-0400) Subject: bpo-44808: fixes test for interactive inspect getsource of a class (GH-27571) X-Git-Tag: v3.11.0a1~482 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=58325971de0faf330c9c38269dae8315a0746e59;p=thirdparty%2FPython%2Fcpython.git bpo-44808: fixes test for interactive inspect getsource of a class (GH-27571) Co-authored-by: Ɓukasz Langa --- diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index b0c42a2dcf6c..e87311ac0230 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -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