diff --git a/IPython/core/tests/test_inputtransformer2.py b/IPython/core/tests/test_inputtransformer2.py index 5548f1c..6067747 100644 --- a/IPython/core/tests/test_inputtransformer2.py +++ b/IPython/core/tests/test_inputtransformer2.py @@ -14,6 +14,14 @@ get_ipython().run_line_magic('foo', ' bar') g() """.splitlines(keepends=True)) +INDENTED_MAGIC = ("""\ +for a in range(5): + %ls +""".splitlines(keepends=True), """\ +for a in range(5): + get_ipython().run_line_magic('ls', '') +""".splitlines(keepends=True)) + MULTILINE_MAGIC_ASSIGN = ("""\ a = f() b = %foo \\ @@ -36,6 +44,21 @@ b = get_ipython().getoutput('foo bar') g() """.splitlines(keepends=True)) +AUTOCALL_QUOTE = ( + [",f 1 2 3\n"], + ['f("1", "2", "3")\n'] +) + +AUTOCALL_QUOTE2 = ( + [";f 1 2 3\n"], + ['f("1 2 3")\n'] +) + +AUTOCALL_PAREN = ( + ["/f 1 2 3\n"], + ['f(1, 2, 3)\n'] +) + def test_continued_line(): lines = MULTILINE_MAGIC_ASSIGN[0] nt.assert_equal(ipt2.find_end_of_continued_line(lines, 1), 2) @@ -74,9 +97,27 @@ def test_find_magic_escape(): tbl = make_tokens_by_line(MULTILINE_MAGIC[0]) nt.assert_equal(ipt2.EscapedCommand.find(tbl), (2, 0)) + tbl = make_tokens_by_line(INDENTED_MAGIC[0]) + nt.assert_equal(ipt2.EscapedCommand.find(tbl), (2, 4)) + tbl = make_tokens_by_line(MULTILINE_MAGIC_ASSIGN[0]) # Shouldn't find a = %foo nt.assert_equal(ipt2.EscapedCommand.find(tbl), None) def test_transform_magic_escape(): res = ipt2.EscapedCommand.transform(MULTILINE_MAGIC[0], (2, 0)) nt.assert_equal(res, MULTILINE_MAGIC[1]) + + res = ipt2.EscapedCommand.transform(INDENTED_MAGIC[0], (2, 4)) + nt.assert_equal(res, INDENTED_MAGIC[1]) + +def test_find_autocalls(): + for sample, _ in [AUTOCALL_QUOTE, AUTOCALL_QUOTE2, AUTOCALL_PAREN]: + print("Testing %r" % sample) + tbl = make_tokens_by_line(sample) + nt.assert_equal(ipt2.EscapedCommand.find(tbl), (1, 0)) + +def test_transform_autocall(): + for sample, expected in [AUTOCALL_QUOTE, AUTOCALL_QUOTE2, AUTOCALL_PAREN]: + print("Testing %r" % sample) + res = ipt2.EscapedCommand.transform(sample, (1, 0)) + nt.assert_equal(res, expected)