##// END OF EJS Templates
Add missing line_below/line_above conditions
Add missing line_below/line_above conditions

File last commit:

r27087:0e59ae55
r28042:11011b05
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)