test_inputtransformer2_line.py
168 lines
| 2.9 KiB
| text/x-python
|
PythonLexer
Thomas Kluyver
|
r24162 | """Tests for the line-based transformers in IPython.core.inputtransformer2 | ||
Line-based transformers are the simpler ones; token-based transformers are | ||||
Thomas Kluyver
|
r24407 | more complex. See test_inputtransformer2 for tests for token-based transformers. | ||
Thomas Kluyver
|
r24162 | """ | ||
Tomasz Kłoczko
|
r26749 | import pytest | ||
Thomas Kluyver
|
r24162 | |||
from IPython.core import inputtransformer2 as ipt2 | ||||
Thomas Kluyver
|
r24163 | CELL_MAGIC = ("""\ | ||
Thomas Kluyver
|
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
|
r24163 | for sample, expected in [CELL_MAGIC]: | ||
Blazej Michalik
|
r26750 | assert ipt2.cell_magic(sample.splitlines(keepends=True)) == expected.splitlines( | ||
keepends=True | ||||
) | ||||
Thomas Kluyver
|
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
|
r26750 | assert ipt2.classic_prompt( | ||
sample.splitlines(keepends=True) | ||||
) == expected.splitlines(keepends=True) | ||||
Thomas Kluyver
|
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
|
r26493 | |||
Blazej Michalik
|
r26494 | IPYTHON_PROMPT_VI_INS = ( | ||
"""\ | ||||
Blazej Michalik
|
r26493 | [ins] In [11]: def a(): | ||
...: 123 | ||||
...: | ||||
...: 123 | ||||
Blazej Michalik
|
r26494 | """, | ||
"""\ | ||||
Blazej Michalik
|
r26493 | def a(): | ||
123 | ||||
123 | ||||
Blazej Michalik
|
r26494 | """, | ||
) | ||||
Blazej Michalik
|
r26493 | |||
Blazej Michalik
|
r26494 | IPYTHON_PROMPT_VI_NAV = ( | ||
"""\ | ||||
Blazej Michalik
|
r26493 | [nav] In [11]: def a(): | ||
...: 123 | ||||
...: | ||||
...: 123 | ||||
Blazej Michalik
|
r26494 | """, | ||
"""\ | ||||
Blazej Michalik
|
r26493 | def a(): | ||
123 | ||||
123 | ||||
Blazej Michalik
|
r26494 | """, | ||
) | ||||
Blazej Michalik
|
r26493 | |||
Thomas Kluyver
|
r24163 | def test_ipython_prompt(): | ||
Blazej Michalik
|
r26494 | for sample, expected in [ | ||
IPYTHON_PROMPT, | ||||
IPYTHON_PROMPT_L2, | ||||
IPYTHON_PROMPT_VI_INS, | ||||
IPYTHON_PROMPT_VI_NAV, | ||||
]: | ||||
Blazej Michalik
|
r26750 | assert ipt2.ipython_prompt( | ||
sample.splitlines(keepends=True) | ||||
) == expected.splitlines(keepends=True) | ||||
Thomas Kluyver
|
r24163 | |||
Blazej Michalik
|
r26493 | |||
Thomas Kluyver
|
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
|
r26750 | assert ipt2.leading_indent( | ||
sample.splitlines(keepends=True) | ||||
) == expected.splitlines(keepends=True) | ||||
Robin Gustafsson
|
r25026 | |||
LEADING_EMPTY_LINES = ("""\ | ||||
\t | ||||
if True: | ||||
a = 3 | ||||
b = 4 | ||||
""", """\ | ||||
if True: | ||||
a = 3 | ||||
b = 4 | ||||
""") | ||||
ONLY_EMPTY_LINES = ("""\ | ||||
\t | ||||
""", """\ | ||||
\t | ||||
""") | ||||
Matthias Bussonnier
|
r25042 | def test_leading_empty_lines(): | ||
Robin Gustafsson
|
r25026 | for sample, expected in [LEADING_EMPTY_LINES, ONLY_EMPTY_LINES]: | ||
Blazej Michalik
|
r26750 | assert ipt2.leading_empty_lines( | ||
sample.splitlines(keepends=True) | ||||
) == expected.splitlines(keepends=True) | ||||
Kyle Cutler
|
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
|
r26749 | assert ipt2.cell_magic(sample) == expected | ||