##// END OF EJS Templates
Merge pull request #1742 from takluyver/customexc-check-once...
Min RK -
r7123:de0b0951 merge
parent child Browse files
Show More
@@ -1703,23 +1703,20 b' class InteractiveShell(SingletonConfigurable):'
1703 elif etype is UsageError:
1703 elif etype is UsageError:
1704 self.write_err("UsageError: %s" % value)
1704 self.write_err("UsageError: %s" % value)
1705 else:
1705 else:
1706 if etype in self.custom_exceptions:
1706 if exception_only:
1707 stb = self.CustomTB(etype, value, tb, tb_offset)
1707 stb = ['An exception has occurred, use %tb to see '
1708 'the full traceback.\n']
1709 stb.extend(self.InteractiveTB.get_exception_only(etype,
1710 value))
1708 else:
1711 else:
1709 if exception_only:
1712 stb = self.InteractiveTB.structured_traceback(etype,
1710 stb = ['An exception has occurred, use %tb to see '
1713 value, tb, tb_offset=tb_offset)
1711 'the full traceback.\n']
1714
1712 stb.extend(self.InteractiveTB.get_exception_only(etype,
1715 self._showtraceback(etype, value, stb)
1713 value))
1716 if self.call_pdb:
1714 else:
1717 # drop into debugger
1715 stb = self.InteractiveTB.structured_traceback(etype,
1718 self.debugger(force=True)
1716 value, tb, tb_offset=tb_offset)
1719 return
1717
1718 self._showtraceback(etype, value, stb)
1719 if self.call_pdb:
1720 # drop into debugger
1721 self.debugger(force=True)
1722 return
1723
1720
1724 # Actually show the traceback
1721 # Actually show the traceback
1725 self._showtraceback(etype, value, stb)
1722 self._showtraceback(etype, value, stb)
@@ -337,6 +337,21 b' class InteractiveShellTestCase(unittest.TestCase):'
337 namespace = 'IPython internal', obj= cmagic.__wrapped__,
337 namespace = 'IPython internal', obj= cmagic.__wrapped__,
338 parent = None)
338 parent = None)
339 nt.assert_equal(find, info)
339 nt.assert_equal(find, info)
340
341 def test_custom_exception(self):
342 called = []
343 def my_handler(shell, etype, value, tb, tb_offset=None):
344 called.append(etype)
345 shell.showtraceback((etype, value, tb), tb_offset=tb_offset)
346
347 ip.set_custom_exc((ValueError,), my_handler)
348 try:
349 ip.run_cell("raise ValueError('test')")
350 # Check that this was called, and only once.
351 self.assertEqual(called, [ValueError])
352 finally:
353 # Reset the custom exception hook
354 ip.set_custom_exc((), None)
340
355
341
356
342 class TestSafeExecfileNonAsciiPath(unittest.TestCase):
357 class TestSafeExecfileNonAsciiPath(unittest.TestCase):
General Comments 0
You need to be logged in to leave comments. Login now