##// END OF EJS Templates
Merge pull request #3507 from minrk/html...
Merge pull request #3507 from minrk/html fix HTML capitalization in nbconvert exporter classes

File last commit:

r8216:e1d0b7e3
r11122:8be0653e merge
Show More
test_prefilter.py
99 lines | 3.3 KiB | text/x-python | PythonLexer
Fernando Perez
Add transformers to understand code pasted with >>> or IPython prompts....
r2426 """Tests for input manipulation machinery."""
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
import nose.tools as nt
Bradley M. Froehle
Test exclude_regexp in AutocallChecker.
r6737 from IPython.core.prefilter import AutocallChecker
Fernando Perez
Add transformers to understand code pasted with >>> or IPython prompts....
r2426 from IPython.testing import tools as tt, decorators as dec
Paul Ivanov
check that multiline string literals don't expand as magic...
r2618 from IPython.testing.globalipapp import get_ipython
Fernando Perez
Add transformers to understand code pasted with >>> or IPython prompts....
r2426
#-----------------------------------------------------------------------------
# Tests
#-----------------------------------------------------------------------------
Fernando Perez
Add some extra tests for prefiltering.
r2551 ip = get_ipython()
Fernando Perez
Add transformers to understand code pasted with >>> or IPython prompts....
r2426 @dec.parametric
def test_prefilter():
"""Test user input conversions"""
# pairs of (raw, expected correct) input
pairs = [ ('2+2','2+2'),
]
for raw, correct in pairs:
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 yield nt.assert_equal(ip.prefilter(raw), correct)
Fernando Perez
Add some extra tests for prefiltering.
r2551
Fernando Perez
Catch errors raised by user objects when accessing attributes....
r5298
Fernando Perez
Add some extra tests for prefiltering.
r2551 @dec.parametric
def test_autocall_binops():
Thomas Kluyver
Replace links to launchpad bugs in comments/docstrings with equivalent github links.
r3917 """See https://github.com/ipython/ipython/issues/81"""
Fernando Perez
Add some extra tests for prefiltering.
r2551 ip.magic('autocall 2')
f = lambda x: x
ip.user_ns['f'] = f
try:
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 yield nt.assert_equal(ip.prefilter('f 1'),'f(1)')
Fernando Perez
Add some extra tests for prefiltering.
r2551 for t in ['f +1', 'f -1']:
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 yield nt.assert_equal(ip.prefilter(t), t)
Bradley M. Froehle
Test exclude_regexp in AutocallChecker.
r6737
# Run tests again with a more permissive exclude_regexp, which will
# allow transformation of binary operations ('f -1' -> 'f(-1)').
pm = ip.prefilter_manager
ac = AutocallChecker(shell=pm.shell, prefilter_manager=pm,
config=pm.config)
try:
ac.priority = 1
ac.exclude_regexp = r'^[,&^\|\*/]|^is |^not |^in |^and |^or '
pm.sort_checkers()
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 yield nt.assert_equal(ip.prefilter('f -1'), 'f(-1)')
yield nt.assert_equal(ip.prefilter('f +1'), 'f(+1)')
Bradley M. Froehle
Test exclude_regexp in AutocallChecker.
r6737 finally:
pm.unregister_checker(ac)
Fernando Perez
Add some extra tests for prefiltering.
r2551 finally:
ip.magic('autocall 0')
del ip.user_ns['f']
Paul Ivanov
check that multiline string literals don't expand as magic...
r2618
Fernando Perez
Catch errors raised by user objects when accessing attributes....
r5298
Paul Ivanov
check that multiline string literals don't expand as magic...
r2618 @dec.parametric
Fernando Perez
Catch errors raised by user objects when accessing attributes....
r5298 def test_issue_114():
Paul Ivanov
check that multiline string literals don't expand as magic...
r2618 """Check that multiline string literals don't expand as magic
Fernando Perez
Catch errors raised by user objects when accessing attributes....
r5298 see http://github.com/ipython/ipython/issues/114"""
Fernando Perez
Fix test for issue #114, in this case the test had a small error....
r2648
Paul Ivanov
check that multiline string literals don't expand as magic...
r2618 template = '"""\n%s\n"""'
Fernando Perez
Fix test for issue #114, in this case the test had a small error....
r2648 # Store the current value of multi_line_specials and turn it off before
# running test, since it could be true (case in which the test doesn't make
# sense, as multiline string literals *will* expand as magic in that case).
msp = ip.prefilter_manager.multi_line_specials
ip.prefilter_manager.multi_line_specials = False
try:
Fernando Perez
Fix various test failures from then new magics API.
r6942 for mgk in ip.magics_manager.lsmagic()['line']:
Fernando Perez
Fix test for issue #114, in this case the test had a small error....
r2648 raw = template % mgk
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 yield nt.assert_equal(ip.prefilter(raw), raw)
Fernando Perez
Fix test for issue #114, in this case the test had a small error....
r2648 finally:
ip.prefilter_manager.multi_line_specials = msp
Fernando Perez
Catch errors raised by user objects when accessing attributes....
r5298
def test_prefilter_attribute_errors():
"""Capture exceptions thrown by user objects on attribute access.
See http://github.com/ipython/ipython/issues/988."""
class X(object):
def __getattr__(self, k):
raise ValueError('broken object')
def __call__(self, x):
return x
# Create a callable broken object
ip.user_ns['x'] = X()
ip.magic('autocall 2')
try:
# Even if x throws an attribute error when looking at its rewrite
# attribute, we should not crash. So the test here is simply making
# the prefilter call and not having an exception.
ip.prefilter('x 1')
finally:
del ip.user_ns['x']
ip.magic('autocall 0')