##// END OF EJS Templates
FEAT: Fast TB....
FEAT: Fast TB. Try to detect when one of the file we are trying to highlight is too big, and fallback on pre-8.0 traceback code, that avoids stack_data. You can configure the limit with: >>> from IPython.core import ultratb >>> ultratb.FAST_THRESHOLD = 200 We are trying to _guess_ whether the traceback we will render is in a file that will require to parse more than FAST_THRESHOLD lines, though it is actually difficult to get this value correctly, so in some case, the slow path may be used, even if files are longer than FAST_THRESHOLD, especially if the crashing code is at the beginning of the file.

File last commit:

r27087:0e59ae55
r28123:3362771d
Show More
test_hooks.py
76 lines | 2.3 KiB | text/x-python | PythonLexer
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336 # -*- coding: utf-8 -*-
"""Tests for CommandChainDispatcher."""
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
Nikita Kniazev
Rewrite bunch of `raise AssertionError` and `assert False` tests
r27087 import pytest
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336 from IPython.core.error import TryNext
from IPython.core.hooks import CommandChainDispatcher
#-----------------------------------------------------------------------------
# Local utilities
#-----------------------------------------------------------------------------
# Define two classes, one which succeeds and one which raises TryNext. Each
# sets the attribute `called` to True when it is called.
class Okay(object):
def __init__(self, message):
self.message = message
self.called = False
def __call__(self):
self.called = True
return self.message
class Fail(object):
def __init__(self, message):
self.message = message
self.called = False
def __call__(self):
self.called = True
raise TryNext(self.message)
#-----------------------------------------------------------------------------
# Test functions
#-----------------------------------------------------------------------------
def test_command_chain_dispatcher_ff():
"""Test two failing hooks"""
Samuel Gaist
[core][tests][hooks] Remove nose
r26897 fail1 = Fail("fail1")
fail2 = Fail("fail2")
dp = CommandChainDispatcher([(0, fail1), (10, fail2)])
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336
Nikita Kniazev
Rewrite bunch of `raise AssertionError` and `assert False` tests
r27087 with pytest.raises(TryNext) as e:
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336 dp()
Nikita Kniazev
Rewrite bunch of `raise AssertionError` and `assert False` tests
r27087 assert str(e.value) == "fail2"
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336
Samuel Gaist
[core][tests][hooks] Remove nose
r26897 assert fail1.called is True
assert fail2.called is True
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336
def test_command_chain_dispatcher_fofo():
"""Test a mixture of failing and succeeding hooks."""
Samuel Gaist
[core][tests][hooks] Remove nose
r26897 fail1 = Fail("fail1")
fail2 = Fail("fail2")
okay1 = Okay("okay1")
okay2 = Okay("okay2")
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336
dp = CommandChainDispatcher([(0, fail1),
# (5, okay1), # add this later
(10, fail2),
(15, okay2)])
dp.add(okay1, 5)
Samuel Gaist
[core][tests][hooks] Remove nose
r26897 assert dp() == "okay1"
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336
Samuel Gaist
[core][tests][hooks] Remove nose
r26897 assert fail1.called is True
assert okay1.called is True
assert fail2.called is False
assert okay2.called is False
Thomas Kluyver
Fix adding functions to CommandChainDispatcher with equal priority on Python 3....
r7515
def test_command_chain_dispatcher_eq_priority():
okay1 = Okay(u'okay1')
okay2 = Okay(u'okay2')
dp = CommandChainDispatcher([(1, okay1)])
dp.add(okay2, 1)