##// END OF EJS Templates
IPython.testing.tools without Nose
IPython.testing.tools without Nose

File last commit:

r26897:0ee38081
r27041:47037d10
Show More
test_hooks.py
78 lines | 2.3 KiB | text/x-python | PythonLexer
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336 # -*- coding: utf-8 -*-
"""Tests for CommandChainDispatcher."""
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
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
try:
dp()
except TryNext as e:
Samuel Gaist
[core][tests][hooks] Remove nose
r26897 assert str(e) == "fail2"
Bradley M. Froehle
Add basic tests for CommandChainDispatcher
r7336 else:
assert False, "Expected exception was not raised."
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)