summaryrefslogtreecommitdiff
path: root/tests/test_parsing.py
diff options
context:
space:
mode:
authorkotfu <kotfu@kotfu.net>2018-08-06 21:36:03 -0600
committerkotfu <kotfu@kotfu.net>2018-08-06 21:36:03 -0600
commitc4f8870b9556896af086f6374181dafa75a2d1ee (patch)
tree07fe8d3f99742cc7667c187729c7870ece6afe29 /tests/test_parsing.py
parent46955ec2f403a94ca3582fe3225bdcc369f334e1 (diff)
downloadcmd2-git-c4f8870b9556896af086f6374181dafa75a2d1ee.tar.gz
Add unit tests to validate embedded newline parsing
Diffstat (limited to 'tests/test_parsing.py')
-rw-r--r--tests/test_parsing.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/test_parsing.py b/tests/test_parsing.py
index 6e795660..589b6e7f 100644
--- a/tests/test_parsing.py
+++ b/tests/test_parsing.py
@@ -376,7 +376,7 @@ def test_parse_multiline_with_complete_comment(parser):
assert statement.argv == ['multiline', 'command', 'is', 'done']
assert statement.terminator == ';'
-def test_parse_multiline_termninated_by_empty_line(parser):
+def test_parse_multiline_terminated_by_empty_line(parser):
line = 'multiline command ends\n\n'
statement = parser.parse(line)
assert statement.multiline_command == 'multiline'
@@ -386,6 +386,23 @@ def test_parse_multiline_termninated_by_empty_line(parser):
assert statement.argv == ['multiline', 'command', 'ends']
assert statement.terminator == '\n'
+@pytest.mark.parametrize('line,terminator',[
+ ('multiline command "with\nembedded newline";', ';'),
+ ('multiline command "with\nembedded newline";;;', ';'),
+ ('multiline command "with\nembedded newline";; ;;', ';'),
+ ('multiline command "with\nembedded newline" &', '&'),
+ ('multiline command "with\nembedded newline" & &', '&'),
+ ('multiline command "with\nembedded newline"\n\n', '\n'),
+])
+def test_parse_multiline_with_embedded_newline(parser, line, terminator):
+ statement = parser.parse(line)
+ assert statement.multiline_command == 'multiline'
+ assert statement.command == 'multiline'
+ assert statement.args == 'command "with\nembedded newline"'
+ assert statement == statement.args
+ assert statement.argv == ['multiline', 'command', 'with\nembedded newline']
+ assert statement.terminator == terminator
+
def test_parse_multiline_ignores_terminators_in_comments(parser):
line = 'multiline command "with term; ends" now\n\n'
statement = parser.parse(line)