diff options
author | andrei kulakov <andrei.avk@gmail.com> | 2021-08-03 12:47:30 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-03 12:47:30 (GMT) |
commit | 58325971de0faf330c9c38269dae8315a0746e59 (patch) | |
tree | fe9e3ea9ce331ab5ce3e46138dbcd32ded7e958a | |
parent | f7c23a99cd4f8179b6ba2cffaeb78b852c0f6488 (diff) | |
download | cpython-58325971de0faf330c9c38269dae8315a0746e59.zip cpython-58325971de0faf330c9c38269dae8315a0746e59.tar.gz cpython-58325971de0faf330c9c38269dae8315a0746e59.tar.bz2 |
bpo-44808: fixes test for interactive inspect getsource of a class (GH-27571)
Co-authored-by: Ćukasz Langa <lukasz@langa.pl>
-rw-r--r-- | Lib/test/test_inspect.py | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index b0c42a2..e87311a 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 |