##// END OF EJS Templates
Update inputsplitter to use new input transformers
Update inputsplitter to use new input transformers

File last commit:

r10093:90430a9f
r10093:90430a9f
Show More
test_inputtransformer.py
84 lines | 2.8 KiB | text/x-python | PythonLexer
/ IPython / core / tests / test_inputtransformer.py
import unittest
import nose.tools as nt
from IPython.testing import tools as tt
from IPython.utils import py3compat
from IPython.core import inputtransformer
from IPython.core.tests.test_inputsplitter import syntax
def wrap_transform(transformer):
def transform(inp):
results = []
for line in inp:
res = transformer.push(line)
if res is not None:
results.append(res)
transformer.reset()
return results
return transform
cellmagic_tests = [
(['%%foo a', None], ["get_ipython().run_cell_magic('foo', 'a', '')"]),
(['%%bar 123', 'hello', ''], ["get_ipython().run_cell_magic('bar', '123', 'hello')"]),
]
def test_transform_cellmagic():
tt.check_pairs(wrap_transform(inputtransformer.cellmagic), cellmagic_tests)
esctransform_tests = [(i, [py3compat.u_format(ol) for ol in o]) for i,o in [
(['%pdef zip'], ["get_ipython().magic({u}'pdef zip')"]),
(['%abc def \\', 'ghi'], ["get_ipython().magic({u}'abc def ghi')"]),
(['%abc def \\', 'ghi\\', None], ["get_ipython().magic({u}'abc def ghi')"]),
]]
def test_transform_escaped():
tt.check_pairs(wrap_transform(inputtransformer.escaped_transformer), esctransform_tests)
def endhelp_test():
tt.check_pairs(inputtransformer.help_end.push, syntax['end_help'])
classic_prompt_tests = [
(['>>> a=1'], ['a=1']),
(['>>> a="""','... 123"""'], ['a="""', '123"""']),
(['a="""','... 123"""'], ['a="""', '... 123"""']),
]
def test_classic_prompt():
tt.check_pairs(wrap_transform(inputtransformer.classic_prompt), classic_prompt_tests)
ipy_prompt_tests = [
(['In [1]: a=1'], ['a=1']),
(['In [2]: a="""',' ...: 123"""'], ['a="""', '123"""']),
(['a="""',' ...: 123"""'], ['a="""', ' ...: 123"""']),
]
def test_ipy_prompt():
tt.check_pairs(wrap_transform(inputtransformer.ipy_prompt), ipy_prompt_tests)
leading_indent_tests = [
([' print "hi"'], ['print "hi"']),
([' for a in range(5):', ' a*2'], ['for a in range(5):', ' a*2']),
([' a="""',' 123"""'], ['a="""', '123"""']),
(['a="""',' 123"""'], ['a="""', ' 123"""']),
]
def test_leading_indent():
tt.check_pairs(wrap_transform(inputtransformer.leading_indent), leading_indent_tests)
assign_magic_tests = [(i, [py3compat.u_format(ol) for ol in o]) for i,o in [
(['a = %bc de \\', 'fg'], ["a = get_ipython().magic('bc de fg')"]),
(['a = %bc de \\', 'fg\\', None], ["a = get_ipython().magic('bc de fg')"]),
]]
def test_assign_magic():
tt.check_pairs(wrap_transform(inputtransformer.assign_from_magic), assign_magic_tests)
assign_system_tests = [(i, [py3compat.u_format(ol) for ol in o]) for i,o in [
(['a = !bc de \\', 'fg'], ["a = get_ipython().getoutput('bc de fg')"]),
(['a = !bc de \\', 'fg\\', None], ["a = get_ipython().getoutput('bc de fg')"]),
]]
def test_assign_system():
tt.check_pairs(wrap_transform(inputtransformer.assign_from_system), assign_system_tests)