diff options
| author | Yury Selivanov <yselivanov@sprymix.com> | 2014-12-08 23:00:25 (GMT) |
|---|---|---|
| committer | Yury Selivanov <yselivanov@sprymix.com> | 2014-12-08 23:00:25 (GMT) |
| commit | 7de29687f22fff5c38ca252de4167e043b28e470 (patch) | |
| tree | cc5767d1340db76bfe1ac63e542a668a3a25826b /Lib/test/test_inspect.py | |
| parent | f8b44a4f37e1885e7dd8d4e4e921e207f7102dd3 (diff) | |
| download | cpython-7de29687f22fff5c38ca252de4167e043b28e470.zip cpython-7de29687f22fff5c38ca252de4167e043b28e470.tar.gz cpython-7de29687f22fff5c38ca252de4167e043b28e470.tar.bz2 | |
inspect: Fix getsource() to load updated source of reloaded module
Issue #1218234. Initial patch by Berker Peksag.
Diffstat (limited to 'Lib/test/test_inspect.py')
| -rw-r--r-- | Lib/test/test_inspect.py | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 66d3fab..fc3bf07 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -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__": |
