mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00
bpo-44808: fixes test for interactive inspect getsource of a class (GH-27571)
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
(cherry picked from commit 58325971de
)
Co-authored-by: andrei kulakov <andrei.avk@gmail.com>
This commit is contained in:
parent
84494db419
commit
bc2841c7a9
1 changed files with 8 additions and 12 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue