Issue #21217: inspect.getsourcelines() now tries to compute the start and

end lines from the code object, fixing an issue when a lambda function is
used as decorator argument.  Patch by Thomas Ballinger.
This commit is contained in:
Antoine Pitrou 2015-04-15 00:41:29 +02:00
parent 97100c0e3d
commit a8723a02ea
5 changed files with 49 additions and 17 deletions

View file

@ -392,6 +392,9 @@ class TestRetrievingSourceCode(GetSourceBase):
finally:
linecache.getlines = getlines
def test_getsource_on_code_object(self):
self.assertSourceEqual(mod.eggs.__code__, 12, 18)
class TestDecorators(GetSourceBase):
fodderModule = mod2
@ -402,7 +405,10 @@ class TestDecorators(GetSourceBase):
self.assertSourceEqual(mod2.gone, 9, 10)
def test_getsource_unwrap(self):
self.assertSourceEqual(mod2.real, 122, 124)
self.assertSourceEqual(mod2.real, 130, 132)
def test_decorator_with_lambda(self):
self.assertSourceEqual(mod2.func114, 113, 115)
class TestOneliners(GetSourceBase):
fodderModule = mod2
@ -497,6 +503,9 @@ class TestBuggyCases(GetSourceBase):
self.assertRaises(IOError, inspect.findsource, co)
self.assertRaises(IOError, inspect.getsource, co)
def test_getsource_on_method(self):
self.assertSourceEqual(mod2.ClassWithMethod.method, 118, 119)
class TestNoEOL(GetSourceBase):
def __init__(self, *args, **kwargs):
self.tempdir = TESTFN + '_dir'