summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_traceback.py
diff options
context:
space:
mode:
authorHye-Shik Chang <hyeshik@gmail.com>2004-10-26 09:16:42 (GMT)
committerHye-Shik Chang <hyeshik@gmail.com>2004-10-26 09:16:42 (GMT)
commit182ac8514726402451a90fd59c9bf427f8071365 (patch)
tree1e7d6a1c24390a303d69842271d0a96cabefba7b /Lib/test/test_traceback.py
parent23109ef11e91c49b56b517ce454bcf87a4153c62 (diff)
downloadcpython-182ac8514726402451a90fd59c9bf427f8071365.zip
cpython-182ac8514726402451a90fd59c9bf427f8071365.tar.gz
cpython-182ac8514726402451a90fd59c9bf427f8071365.tar.bz2
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.
Diffstat (limited to 'Lib/test/test_traceback.py')
-rw-r--r--Lib/test/test_traceback.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index dc22c75..6812095 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -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)