##// END OF EJS Templates
back to dev
back to dev

File last commit:

r27764:aefe51c6
r28500:4977b5d9
Show More
test_inputtransformer2_line.py
167 lines | 2.9 KiB | text/x-python | PythonLexer
/ IPython / core / tests / test_inputtransformer2_line.py
Thomas Kluyver
Fix cell magic transformation
r24162 """Tests for the line-based transformers in IPython.core.inputtransformer2
Line-based transformers are the simpler ones; token-based transformers are
Thomas Kluyver
Add & improve docstrings following @willingc's review
r24407 more complex. See test_inputtransformer2 for tests for token-based transformers.
Thomas Kluyver
Fix cell magic transformation
r24162 """
from IPython.core import inputtransformer2 as ipt2
Thomas Kluyver
More tests for line-based input transformers
r24163 CELL_MAGIC = ("""\
Thomas Kluyver
Fix cell magic transformation
r24162 %%foo arg
body 1
body 2
""", """\
get_ipython().run_cell_magic('foo', 'arg', 'body 1\\nbody 2\\n')
""")
def test_cell_magic():
Thomas Kluyver
More tests for line-based input transformers
r24163 for sample, expected in [CELL_MAGIC]:
Blazej Michalik
Darker
r26750 assert ipt2.cell_magic(sample.splitlines(keepends=True)) == expected.splitlines(
keepends=True
)
Thomas Kluyver
More tests for line-based input transformers
r24163
CLASSIC_PROMPT = ("""\
>>> for a in range(5):
... print(a)
""", """\
for a in range(5):
print(a)
""")
CLASSIC_PROMPT_L2 = ("""\
for a in range(5):
... print(a)
... print(a ** 2)
""", """\
for a in range(5):
print(a)
print(a ** 2)
""")
def test_classic_prompt():
for sample, expected in [CLASSIC_PROMPT, CLASSIC_PROMPT_L2]:
Blazej Michalik
Darker
r26750 assert ipt2.classic_prompt(
sample.splitlines(keepends=True)
) == expected.splitlines(keepends=True)
Thomas Kluyver
More tests for line-based input transformers
r24163
IPYTHON_PROMPT = ("""\
In [1]: for a in range(5):
...: print(a)
""", """\
for a in range(5):
print(a)
""")
IPYTHON_PROMPT_L2 = ("""\
for a in range(5):
...: print(a)
...: print(a ** 2)
""", """\
for a in range(5):
print(a)
print(a ** 2)
""")
Blazej Michalik
Test for vi-prompt strip
r26493
Blazej Michalik
Reformat test code
r26494 IPYTHON_PROMPT_VI_INS = (
"""\
Blazej Michalik
Test for vi-prompt strip
r26493 [ins] In [11]: def a():
...: 123
...:
...: 123
Blazej Michalik
Reformat test code
r26494 """,
"""\
Blazej Michalik
Test for vi-prompt strip
r26493 def a():
123
123
Blazej Michalik
Reformat test code
r26494 """,
)
Blazej Michalik
Test for vi-prompt strip
r26493
Blazej Michalik
Reformat test code
r26494 IPYTHON_PROMPT_VI_NAV = (
"""\
Blazej Michalik
Test for vi-prompt strip
r26493 [nav] In [11]: def a():
...: 123
...:
...: 123
Blazej Michalik
Reformat test code
r26494 """,
"""\
Blazej Michalik
Test for vi-prompt strip
r26493 def a():
123
123
Blazej Michalik
Reformat test code
r26494 """,
)
Blazej Michalik
Test for vi-prompt strip
r26493
Thomas Kluyver
More tests for line-based input transformers
r24163 def test_ipython_prompt():
Blazej Michalik
Reformat test code
r26494 for sample, expected in [
IPYTHON_PROMPT,
IPYTHON_PROMPT_L2,
IPYTHON_PROMPT_VI_INS,
IPYTHON_PROMPT_VI_NAV,
]:
Blazej Michalik
Darker
r26750 assert ipt2.ipython_prompt(
sample.splitlines(keepends=True)
) == expected.splitlines(keepends=True)
Thomas Kluyver
More tests for line-based input transformers
r24163
Blazej Michalik
Test for vi-prompt strip
r26493
Thomas Kluyver
More tests for line-based input transformers
r24163 INDENT_SPACES = ("""\
if True:
a = 3
""", """\
if True:
a = 3
""")
INDENT_TABS = ("""\
\tif True:
\t\tb = 4
""", """\
if True:
\tb = 4
""")
def test_leading_indent():
for sample, expected in [INDENT_SPACES, INDENT_TABS]:
Blazej Michalik
Darker
r26750 assert ipt2.leading_indent(
sample.splitlines(keepends=True)
) == expected.splitlines(keepends=True)
Robin Gustafsson
Remove leading empty lines...
r25026
LEADING_EMPTY_LINES = ("""\
\t
if True:
a = 3
b = 4
""", """\
if True:
a = 3
b = 4
""")
ONLY_EMPTY_LINES = ("""\
\t
""", """\
\t
""")
Matthias Bussonnier
prefix test_function with test_
r25042 def test_leading_empty_lines():
Robin Gustafsson
Remove leading empty lines...
r25026 for sample, expected in [LEADING_EMPTY_LINES, ONLY_EMPTY_LINES]:
Blazej Michalik
Darker
r26750 assert ipt2.leading_empty_lines(
sample.splitlines(keepends=True)
) == expected.splitlines(keepends=True)
Kyle Cutler
Support CRLF line endings in magic transforms
r25936
CRLF_MAGIC = ([
"%%ls\r\n"
], [
"get_ipython().run_cell_magic('ls', '', '')\n"
])
def test_crlf_magic():
for sample, expected in [CRLF_MAGIC]:
Tomasz Kłoczko
nose2pytest migration batch 1...
r26749 assert ipt2.cell_magic(sample) == expected