diff options
author | Raymond Hettinger <python@rcn.com> | 2011-10-16 06:50:42 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2011-10-16 06:50:42 (GMT) |
commit | 4b779b3785c0014224eef95c8805f166d0ef2a86 (patch) | |
tree | 30b3372cbf7db8e7c46ece24f2811991bb44967d /Lib/test/test_functools.py | |
parent | 9be57231dd6a3b69bda09e53e5f751aafaf89b51 (diff) | |
download | cpython-4b779b3785c0014224eef95c8805f166d0ef2a86.zip cpython-4b779b3785c0014224eef95c8805f166d0ef2a86.tar.gz cpython-4b779b3785c0014224eef95c8805f166d0ef2a86.tar.bz2 |
Issue 13177: Make tracebacks more readable by avoiding chained exceptions in the lru_cache.
Diffstat (limited to 'Lib/test/test_functools.py')
-rw-r--r-- | Lib/test/test_functools.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index 7d11b53..270cab0 100644 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -655,6 +655,22 @@ class TestLRU(unittest.TestCase): self.assertEqual(fib.cache_info(), functools._CacheInfo(hits=0, misses=0, maxsize=None, currsize=0)) + def test_lru_with_exceptions(self): + # Verify that user_function exceptions get passed through without + # creating a hard-to-read chained exception. + # http://bugs.python.org/issue13177 + for maxsize in (None, 100): + @functools.lru_cache(maxsize) + def func(i): + return 'abc'[i] + self.assertEqual(func(0), 'a') + with self.assertRaises(IndexError) as cm: + func(15) + self.assertIsNone(cm.exception.__context__) + # Verify that the previous exception did not result in a cached entry + with self.assertRaises(IndexError): + func(15) + def test_main(verbose=None): test_classes = ( TestPartial, |