Show More
@@ -12,6 +12,7 b' from IPython.core import inputsplitter as isp' | |||
|
12 | 12 | from IPython.core.inputtransformer import InputTransformer |
|
13 | 13 | from IPython.core.tests.test_inputtransformer import syntax, syntax_ml |
|
14 | 14 | from IPython.testing import tools as tt |
|
15 | from IPython.testing.decorators import skipif | |
|
15 | 16 | |
|
16 | 17 | #----------------------------------------------------------------------------- |
|
17 | 18 | # Semi-complete examples (also used as tests) |
@@ -321,6 +322,7 b' class InputSplitterTestCase(unittest.TestCase):' | |||
|
321 | 322 | self.isp.push(u'\xc3\xa9') |
|
322 | 323 | self.isp.push(u"u'\xc3\xa9'") |
|
323 | 324 | |
|
325 | @skipif(sys.version_info[:3] == (3, 9, 8)) | |
|
324 | 326 | def test_line_continuation(self): |
|
325 | 327 | """ Test issue #2108.""" |
|
326 | 328 | isp = self.isp |
@@ -5,11 +5,14 b' more complex. See test_inputtransformer2_line for tests for line-based' | |||
|
5 | 5 | transformations. |
|
6 | 6 | """ |
|
7 | 7 | import string |
|
8 | import sys | |
|
9 | from textwrap import dedent | |
|
8 | 10 | |
|
9 | from IPython.core import inputtransformer2 as ipt2 | |
|
10 | from IPython.core.inputtransformer2 import make_tokens_by_line, _find_assign_op | |
|
11 | import pytest | |
|
11 | 12 | |
|
12 | from textwrap import dedent | |
|
13 | from IPython.core import inputtransformer2 as ipt2 | |
|
14 | from IPython.core.inputtransformer2 import _find_assign_op, make_tokens_by_line | |
|
15 | from IPython.testing.decorators import skip_iptest_but_not_pytest | |
|
13 | 16 | |
|
14 | 17 | MULTILINE_MAGIC = ("""\ |
|
15 | 18 | a = f() |
@@ -256,20 +259,45 b' def test_find_assign_op_dedent():' | |||
|
256 | 259 | ) |
|
257 | 260 | |
|
258 | 261 | |
|
262 | examples = [ | |
|
263 | pytest.param("a = 1", "complete", None), | |
|
264 | pytest.param("for a in range(5):", "incomplete", 4), | |
|
265 | pytest.param("for a in range(5):\n if a > 0:", "incomplete", 8), | |
|
266 | pytest.param("raise = 2", "invalid", None), | |
|
267 | pytest.param("a = [1,\n2,", "incomplete", 0), | |
|
268 | pytest.param("(\n))", "incomplete", 0), | |
|
269 | pytest.param("\\\r\n", "incomplete", 0), | |
|
270 | pytest.param("a = '''\n hi", "incomplete", 3), | |
|
271 | pytest.param("def a():\n x=1\n global x", "invalid", None), | |
|
272 | pytest.param( | |
|
273 | "a \\ ", | |
|
274 | "invalid", | |
|
275 | None, | |
|
276 | marks=pytest.mark.xfail( | |
|
277 | reason="Bug in python 3.9.8 – bpo 45738", | |
|
278 | condition=sys.version_info[:3] == (3, 9, 8), | |
|
279 | raises=SystemError, | |
|
280 | strict=True, | |
|
281 | ), | |
|
282 | ), # Nothing allowed after backslash, | |
|
283 | pytest.param("1\\\n+2", "complete", None), | |
|
284 | ] | |
|
285 | ||
|
286 | ||
|
287 | @skip_iptest_but_not_pytest | |
|
288 | @pytest.mark.parametrize("code, expected, number", examples) | |
|
289 | def test_check_complete_param(code, expected, number): | |
|
290 | cc = ipt2.TransformerManager().check_complete | |
|
291 | assert cc(code) == (expected, number) | |
|
292 | ||
|
293 | ||
|
294 | @skip_iptest_but_not_pytest | |
|
295 | @pytest.mark.xfail( | |
|
296 | reason="Bug in python 3.9.8 – bpo 45738", | |
|
297 | condition=sys.version_info[:3] == (3, 9, 8), | |
|
298 | ) | |
|
259 | 299 | def test_check_complete(): |
|
260 | 300 | cc = ipt2.TransformerManager().check_complete |
|
261 | assert cc("a = 1") == ("complete", None) | |
|
262 | assert cc("for a in range(5):") == ("incomplete", 4) | |
|
263 | assert cc("for a in range(5):\n if a > 0:") == ("incomplete", 8) | |
|
264 | assert cc("raise = 2") == ("invalid", None) | |
|
265 | assert cc("a = [1,\n2,") == ("incomplete", 0) | |
|
266 | assert cc("(\n))") == ("incomplete", 0) | |
|
267 | assert cc("\\\r\n") == ("incomplete", 0) | |
|
268 | assert cc("a = '''\n hi") == ("incomplete", 3) | |
|
269 | assert cc("def a():\n x=1\n global x") == ("invalid", None) | |
|
270 | assert cc("a \\ ") == ("invalid", None) # Nothing allowed after backslash | |
|
271 | assert cc("1\\\n+2") == ("complete", None) | |
|
272 | assert cc("exit") == ("complete", None) | |
|
273 | 301 | |
|
274 | 302 | example = dedent(""" |
|
275 | 303 | if True: |
General Comments 0
You need to be logged in to leave comments.
Login now