summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd2/parsing.py1
-rw-r--r--tests/test_parsing.py60
2 files changed, 51 insertions, 10 deletions
diff --git a/cmd2/parsing.py b/cmd2/parsing.py
index 7a9a9ff6..f6186624 100644
--- a/cmd2/parsing.py
+++ b/cmd2/parsing.py
@@ -398,6 +398,7 @@ class StatementParser:
The Statement object returned by this method can at most contain
values in the following attributes:
+ - args
- raw
- command
- multiline_command
diff --git a/tests/test_parsing.py b/tests/test_parsing.py
index b4de88ad..b0d370ac 100644
--- a/tests/test_parsing.py
+++ b/tests/test_parsing.py
@@ -32,11 +32,40 @@ def default_parser():
parser = StatementParser()
return parser
-def test_parse_empty_string_default(default_parser):
- statement = default_parser.parse('')
+
+def test_parse_empty_string(parser):
+ line = ''
+ statement = parser.parse(line)
+ assert statement == ''
+ assert statement.args == statement
+ assert statement.raw == line
assert statement.command == ''
+ assert statement.arg_list == []
+ assert statement.multiline_command == ''
+ assert statement.terminator == ''
+ assert statement.suffix == ''
+ assert statement.pipe_to == []
+ assert statement.output == ''
+ assert statement.output_to == ''
+ assert statement.command_and_args == line
+ assert statement.argv == statement.arg_list
+
+def test_parse_empty_string_default(default_parser):
+ line = ''
+ statement = default_parser.parse(line)
assert statement == ''
- assert statement.raw == ''
+ assert statement.args == statement
+ assert statement.raw == line
+ assert statement.command == ''
+ assert statement.arg_list == []
+ assert statement.multiline_command == ''
+ assert statement.terminator == ''
+ assert statement.suffix == ''
+ assert statement.pipe_to == []
+ assert statement.output == ''
+ assert statement.output_to == ''
+ assert statement.command_and_args == line
+ assert statement.argv == statement.arg_list
@pytest.mark.parametrize('line,tokens', [
('command', ['command']),
@@ -52,12 +81,6 @@ def test_tokenize_default(default_parser, line, tokens):
tokens_to_test = default_parser.tokenize(line)
assert tokens_to_test == tokens
-def test_parse_empty_string(parser):
- statement = parser.parse('')
- assert statement.command == ''
- assert statement == ''
- assert statement.raw == ''
-
@pytest.mark.parametrize('line,tokens', [
('command', ['command']),
('command /* with some comment */ arg', ['command', 'arg']),
@@ -100,6 +123,15 @@ def test_parse_single_word(parser, line):
assert statement == ''
assert statement.argv == [utils.strip_quotes(line)]
assert not statement.arg_list
+ assert statement.args == statement
+ assert statement.raw == line
+ assert statement.multiline_command == ''
+ assert statement.terminator == ''
+ assert statement.suffix == ''
+ assert statement.pipe_to == []
+ assert statement.output == ''
+ assert statement.output_to == ''
+ assert statement.command_and_args == line
@pytest.mark.parametrize('line,terminator', [
('termbare;', ';'),
@@ -550,10 +582,18 @@ def test_parse_alias_terminator_no_whitespace(parser, line):
def test_parse_command_only_command_and_args(parser):
line = 'help history'
statement = parser.parse_command_only(line)
- assert statement.command == 'help'
assert statement == 'history'
assert statement.args == statement
+ assert statement.raw == line
+ assert statement.command == 'help'
assert statement.command_and_args == line
+ assert statement.arg_list == []
+ assert statement.multiline_command == ''
+ assert statement.terminator == ''
+ assert statement.suffix == ''
+ assert statement.pipe_to == []
+ assert statement.output == ''
+ assert statement.output_to == ''
def test_parse_command_only_emptyline(parser):
line = ''