diff options
author | Hye-Shik Chang <hyeshik@gmail.com> | 2004-10-26 09:16:42 (GMT) |
---|---|---|
committer | Hye-Shik Chang <hyeshik@gmail.com> | 2004-10-26 09:16:42 (GMT) |
commit | 182ac8514726402451a90fd59c9bf427f8071365 (patch) | |
tree | 1e7d6a1c24390a303d69842271d0a96cabefba7b /Lib/test/test_traceback.py | |
parent | 23109ef11e91c49b56b517ce454bcf87a4153c62 (diff) | |
download | cpython-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.py | 41 |
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) |