@@ -376,7 +376,7 @@ def test_parse_multiline_with_complete_comment(parser):
376
376
assert statement .argv == ['multiline' , 'command' , 'is' , 'done' ]
377
377
assert statement .terminator == ';'
378
378
379
- def test_parse_multiline_termninated_by_empty_line (parser ):
379
+ def test_parse_multiline_terminated_by_empty_line (parser ):
380
380
line = 'multiline command ends\n \n '
381
381
statement = parser .parse (line )
382
382
assert statement .multiline_command == 'multiline'
@@ -386,6 +386,23 @@ def test_parse_multiline_termninated_by_empty_line(parser):
386
386
assert statement .argv == ['multiline' , 'command' , 'ends' ]
387
387
assert statement .terminator == '\n '
388
388
389
+ @pytest .mark .parametrize ('line,terminator' ,[
390
+ ('multiline command "with\n embedded newline";' , ';' ),
391
+ ('multiline command "with\n embedded newline";;;' , ';' ),
392
+ ('multiline command "with\n embedded newline";; ;;' , ';' ),
393
+ ('multiline command "with\n embedded newline" &' , '&' ),
394
+ ('multiline command "with\n embedded newline" & &' , '&' ),
395
+ ('multiline command "with\n embedded 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\n embedded newline"'
402
+ assert statement == statement .args
403
+ assert statement .argv == ['multiline' , 'command' , 'with\n embedded newline' ]
404
+ assert statement .terminator == terminator
405
+
389
406
def test_parse_multiline_ignores_terminators_in_comments (parser ):
390
407
line = 'multiline command "with term; ends" now\n \n '
391
408
statement = parser .parse (line )
0 commit comments