aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_language.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2014-10-26 16:27:25 +1300
committerAldo Cortesi <aldo@nullcube.com>2014-10-26 16:27:25 +1300
commitbd1f7ebb5c3cf3dfa613e194f4728bae1420b241 (patch)
tree1b7f5cc713b766c9cc088436033a36ee49600045 /test/test_language.py
parent974bd9d0f9f3d231ff99496c55ae40355398cfc6 (diff)
downloadmitmproxy-bd1f7ebb5c3cf3dfa613e194f4728bae1420b241.tar.gz
mitmproxy-bd1f7ebb5c3cf3dfa613e194f4728bae1420b241.tar.bz2
mitmproxy-bd1f7ebb5c3cf3dfa613e194f4728bae1420b241.zip
Improve netability of grammars
Diffstat (limited to 'test/test_language.py')
-rw-r--r--test/test_language.py38
1 files changed, 27 insertions, 11 deletions
diff --git a/test/test_language.py b/test/test_language.py
index d8392404..e2d5190f 100644
--- a/test/test_language.py
+++ b/test/test_language.py
@@ -6,6 +6,10 @@ import tutils
language.TESTING = True
+def test_quote():
+ assert language.quote("'\\\\'")
+
+
def parse_request(s):
return language.parse_requests(s)[0]
@@ -29,7 +33,7 @@ class TestValueLiteral:
assert v.expr()
assert v.val == "foo"
- v = language.ValueLiteral(r"foo\n")
+ v = language.ValueLiteral("foo\n")
assert v.expr()
assert v.val == "foo\n"
assert repr(v)
@@ -44,9 +48,20 @@ class TestValueLiteral:
v = language.ValueLiteral("\"")
assert v.spec() == repr(v) == '\'"\''
- def test_freeze(self):
- v = language.ValueLiteral("foo")
- assert v.freeze({}).val == v.val
+ def roundtrip(self, spec):
+ e = language.ValueLiteral.expr()
+ v = language.ValueLiteral(spec)
+ v2 = e.parseString(v.spec())
+ assert v.val == v2[0].val
+ assert v.spec() == v2[0].spec()
+
+ def test_roundtrip(self):
+ self.roundtrip("'")
+ self.roundtrip('\'')
+ self.roundtrip("a")
+ self.roundtrip("\"")
+ self.roundtrip(r"\\")
+ self.roundtrip("200:b'foo':i23,'\\''")
class TestValueGenerate:
@@ -242,13 +257,14 @@ class TestMisc:
assert "@1" not in f.spec()
def test_pathodspec_freeze(self):
- spec = r'GET:"/foo":s"200:ir,\'\"\'"'
- r = parse_request(spec)
- assert r.freeze({})
-
- spec = r'GET:"/foo":s"200:ir,\"\'\""'
- r = parse_request(spec)
- assert r.freeze({})
+ e = language.PathodSpec(
+ language.ValueLiteral(
+ "200:b'foo':i10,'\\''".encode(
+ "string_escape"
+ )
+ )
+ )
+ assert e.freeze({})
def test_code(self):
e = language.Code.expr()