mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
SF #737473: Show up-to-date source code in tracebacks always.
And add an optional argument 'filename' to linecache.checkcache() to enable checking caches per-file.
This commit is contained in:
parent
23109ef11e
commit
182ac85147
5 changed files with 60 additions and 4 deletions
|
@ -40,6 +40,47 @@ class TracebackCases(unittest.TestCase):
|
|||
self.assert_(len(err) == 3)
|
||||
self.assert_(err[1].strip() == "[x for x in x] = x")
|
||||
|
||||
def test_bug737473(self):
|
||||
import sys, os, tempfile
|
||||
savedpath = sys.path[:]
|
||||
testdir = tempfile.mkdtemp()
|
||||
try:
|
||||
sys.path.insert(0, testdir)
|
||||
testfile = os.path.join(testdir, 'test_bug737473.py')
|
||||
print >> open(testfile, 'w'), """\
|
||||
def test():
|
||||
raise ValueError"""
|
||||
|
||||
if hasattr(os, 'utime'):
|
||||
os.utime(testfile, (0, 0))
|
||||
else:
|
||||
import time
|
||||
time.sleep(3) # not to stay in same mtime.
|
||||
|
||||
if 'test_bug737473' in sys.modules:
|
||||
del sys.modules['test_bug737473']
|
||||
import test_bug737473
|
||||
|
||||
try:
|
||||
test_bug737473.test()
|
||||
except ValueError:
|
||||
# this loads source code to linecache
|
||||
traceback.extract_tb(sys.exc_traceback)
|
||||
|
||||
print >> open(testfile, 'w'), """\
|
||||
def test():
|
||||
raise NotImplementedError"""
|
||||
reload(test_bug737473)
|
||||
try:
|
||||
test_bug737473.test()
|
||||
except NotImplementedError:
|
||||
src = traceback.extract_tb(sys.exc_traceback)[-1][-1]
|
||||
self.failUnlessEqual(src, 'raise NotImplementedError')
|
||||
finally:
|
||||
sys.path[:] = savedpath
|
||||
for f in os.listdir(testdir):
|
||||
os.unlink(os.path.join(testdir, f))
|
||||
os.rmdir(testdir)
|
||||
|
||||
def test_main():
|
||||
run_unittest(TracebackCases)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue