aboutsummaryrefslogtreecommitdiffstats
path: root/test/mitmproxy/test_command_lexer.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/mitmproxy/test_command_lexer.py')
-rw-r--r--test/mitmproxy/test_command_lexer.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/mitmproxy/test_command_lexer.py b/test/mitmproxy/test_command_lexer.py
new file mode 100644
index 00000000..3f009f88
--- /dev/null
+++ b/test/mitmproxy/test_command_lexer.py
@@ -0,0 +1,38 @@
+import pyparsing
+import pytest
+
+from mitmproxy import command_lexer
+
+
+@pytest.mark.parametrize(
+ "test_input,valid", [
+ ("'foo'", True),
+ ('"foo"', True),
+ ("'foo' bar'", False),
+ ("'foo\\' bar'", True),
+ ("'foo' 'bar'", False),
+ ("'foo'x", False),
+ ('''"foo ''', True),
+ ('''"foo 'bar' ''', True),
+ ]
+)
+def test_partial_quoted_string(test_input, valid):
+ if valid:
+ assert command_lexer.PartialQuotedString.parseString(test_input, parseAll=True)[0] == test_input
+ else:
+ with pytest.raises(pyparsing.ParseException):
+ command_lexer.PartialQuotedString.parseString(test_input, parseAll=True)
+
+
+@pytest.mark.parametrize(
+ "test_input,expected", [
+ ("'foo'", ["'foo'"]),
+ ('"foo"', ['"foo"']),
+ ("'foo' 'bar'", ["'foo'", ' ', "'bar'"]),
+ ("'foo'x", ["'foo'", 'x']),
+ ('''"foo''', ['"foo']),
+ ('''"foo 'bar' ''', ['''"foo 'bar' ''']),
+ ]
+)
+def test_expr(test_input, expected):
+ assert list(command_lexer.expr.parseString(test_input, parseAll=True)) == expected