mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
inspect: Fix getsource() to load updated source of reloaded module
Issue #1218234. Initial patch by Berker Peksag.
This commit is contained in:
parent
f8b44a4f37
commit
7de29687f2
3 changed files with 46 additions and 6 deletions
|
@ -12,6 +12,7 @@ import re
|
|||
import shutil
|
||||
import sys
|
||||
import types
|
||||
import textwrap
|
||||
import unicodedata
|
||||
import unittest
|
||||
import unittest.mock
|
||||
|
@ -27,6 +28,8 @@ from test.script_helper import assert_python_ok, assert_python_failure
|
|||
from test import inspect_fodder as mod
|
||||
from test import inspect_fodder2 as mod2
|
||||
|
||||
from test.test_import import _ready_to_import
|
||||
|
||||
|
||||
# Functions tested in this suite:
|
||||
# ismodule, isclass, ismethod, isfunction, istraceback, isframe, iscode,
|
||||
|
@ -3087,6 +3090,34 @@ class TestMain(unittest.TestCase):
|
|||
self.assertEqual(err, b'')
|
||||
|
||||
|
||||
class TestReload(unittest.TestCase):
|
||||
|
||||
src_before = textwrap.dedent("""\
|
||||
def foo():
|
||||
print("Bla")
|
||||
""")
|
||||
|
||||
src_after = textwrap.dedent("""\
|
||||
def foo():
|
||||
print("Oh no!")
|
||||
""")
|
||||
|
||||
def assertInspectEqual(self, path, source):
|
||||
inspected_src = inspect.getsource(source)
|
||||
with open(path) as src:
|
||||
self.assertEqual(
|
||||
src.read().splitlines(True),
|
||||
inspected_src.splitlines(True)
|
||||
)
|
||||
|
||||
def test_getsource_reload(self):
|
||||
# see issue 1218234
|
||||
with _ready_to_import('reload_bug', self.src_before) as (name, path):
|
||||
module = importlib.import_module(name)
|
||||
self.assertInspectEqual(path, module)
|
||||
with open(path, 'w') as src:
|
||||
src.write(self.src_after)
|
||||
self.assertInspectEqual(path, module)
|
||||
|
||||
|
||||
def test_main():
|
||||
|
@ -3097,7 +3128,7 @@ def test_main():
|
|||
TestGetcallargsUnboundMethods, TestGetattrStatic, TestGetGeneratorState,
|
||||
TestNoEOL, TestSignatureObject, TestSignatureBind, TestParameterObject,
|
||||
TestBoundArguments, TestSignaturePrivateHelpers, TestGetClosureVars,
|
||||
TestUnwrap, TestMain
|
||||
TestUnwrap, TestMain, TestReload
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue