##// END OF EJS Templates
Require pygments>=2.4.0...
Require pygments>=2.4.0 As noted in #13441, running ipython with an old version of pygments leads to problems. Ipython sends ANSI color names to pygments to color output, but these names aren't in old versions of pygments. Before: with pygments 2.3.1 and ipython 8.0.0, opening an ipython instance and running In [1]: 1 / 0 # Expect ZeroDivisionError will crash ipython as `ansiyellow` is used to highlight the error. This PR requires pygments>=2.4.0, which is when pygments changed their ANSI color names.

File last commit:

r26750:7b2546d2
r27425:e902466b
Show More
test_inputtransformer2_line.py
168 lines | 2.9 KiB | text/x-python | PythonLexer
/ IPython / core / tests / test_inputtransformer2_line.py
"""Tests for the line-based transformers in IPython.core.inputtransformer2
Line-based transformers are the simpler ones; token-based transformers are
more complex. See test_inputtransformer2 for tests for token-based transformers.
"""
import pytest
from IPython.core import inputtransformer2 as ipt2
CELL_MAGIC = ("""\
%%foo arg
body 1
body 2
""", """\
get_ipython().run_cell_magic('foo', 'arg', 'body 1\\nbody 2\\n')
""")
def test_cell_magic():
for sample, expected in [CELL_MAGIC]:
assert ipt2.cell_magic(sample.splitlines(keepends=True)) == expected.splitlines(
keepends=True
)
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]:
assert ipt2.classic_prompt(
sample.splitlines(keepends=True)
) == expected.splitlines(keepends=True)
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)
""")
IPYTHON_PROMPT_VI_INS = (
"""\
[ins] In [11]: def a():
...: 123
...:
...: 123
""",
"""\
def a():
123
123
""",
)
IPYTHON_PROMPT_VI_NAV = (
"""\
[nav] In [11]: def a():
...: 123
...:
...: 123
""",
"""\
def a():
123
123
""",
)
def test_ipython_prompt():
for sample, expected in [
IPYTHON_PROMPT,
IPYTHON_PROMPT_L2,
IPYTHON_PROMPT_VI_INS,
IPYTHON_PROMPT_VI_NAV,
]:
assert ipt2.ipython_prompt(
sample.splitlines(keepends=True)
) == expected.splitlines(keepends=True)
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]:
assert ipt2.leading_indent(
sample.splitlines(keepends=True)
) == expected.splitlines(keepends=True)
LEADING_EMPTY_LINES = ("""\
\t
if True:
a = 3
b = 4
""", """\
if True:
a = 3
b = 4
""")
ONLY_EMPTY_LINES = ("""\
\t
""", """\
\t
""")
def test_leading_empty_lines():
for sample, expected in [LEADING_EMPTY_LINES, ONLY_EMPTY_LINES]:
assert ipt2.leading_empty_lines(
sample.splitlines(keepends=True)
) == expected.splitlines(keepends=True)
CRLF_MAGIC = ([
"%%ls\r\n"
], [
"get_ipython().run_cell_magic('ls', '', '')\n"
])
def test_crlf_magic():
for sample, expected in [CRLF_MAGIC]:
assert ipt2.cell_magic(sample) == expected