Skip to content

Commit c4f8870

Browse files
committed
Add unit tests to validate embedded newline parsing
1 parent 46955ec commit c4f8870

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

tests/test_parsing.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ def test_parse_multiline_with_complete_comment(parser):
376376
assert statement.argv == ['multiline', 'command', 'is', 'done']
377377
assert statement.terminator == ';'
378378

379-
def test_parse_multiline_termninated_by_empty_line(parser):
379+
def test_parse_multiline_terminated_by_empty_line(parser):
380380
line = 'multiline command ends\n\n'
381381
statement = parser.parse(line)
382382
assert statement.multiline_command == 'multiline'
@@ -386,6 +386,23 @@ def test_parse_multiline_termninated_by_empty_line(parser):
386386
assert statement.argv == ['multiline', 'command', 'ends']
387387
assert statement.terminator == '\n'
388388

389+
@pytest.mark.parametrize('line,terminator',[
390+
('multiline command "with\nembedded newline";', ';'),
391+
('multiline command "with\nembedded newline";;;', ';'),
392+
('multiline command "with\nembedded newline";; ;;', ';'),
393+
('multiline command "with\nembedded newline" &', '&'),
394+
('multiline command "with\nembedded newline" & &', '&'),
395+
('multiline command "with\nembedded newline"\n\n', '\n'),
396+
])
397+
def test_parse_multiline_with_embedded_newline(parser, line, terminator):
398+
statement = parser.parse(line)
399+
assert statement.multiline_command == 'multiline'
400+
assert statement.command == 'multiline'
401+
assert statement.args == 'command "with\nembedded newline"'
402+
assert statement == statement.args
403+
assert statement.argv == ['multiline', 'command', 'with\nembedded newline']
404+
assert statement.terminator == terminator
405+
389406
def test_parse_multiline_ignores_terminators_in_comments(parser):
390407
line = 'multiline command "with term; ends" now\n\n'
391408
statement = parser.parse(line)

0 commit comments

Comments
 (0)