diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index b0c42a2dcf6ce6..e87311ac0230fe 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -586,19 +586,15 @@ def test_getsource_on_code_object(self): 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