Minor Update for /options API of mitmweb.

This commit is contained in:
Matthew Shao 2017-06-24 10:18:00 +08:00
parent c7ce7f84e6
commit 1863326220
4 changed files with 7 additions and 13 deletions

View File

@ -401,18 +401,11 @@ def dump_defaults(opts):
if o.choices:
txt += " Valid values are %s." % ", ".join(repr(c) for c in o.choices)
else:
if o.typespec in (str, int, bool):
t = o.typespec.__name__
elif o.typespec == typing.Optional[str]:
t = "optional str"
elif o.typespec == typing.Sequence[str]:
t = "sequence of str"
else: # pragma: no cover
raise NotImplementedError
t = typecheck.typespec_to_str(o.typespec)
txt += " Type %s." % t
txt = "\n".join(textwrap.wrap(txt))
s.yaml_set_comment_before_after_key(k, before = "\n" + txt)
s.yaml_set_comment_before_after_key(k, before="\n" + txt)
return ruamel.yaml.round_trip_dump(s)

View File

@ -104,9 +104,9 @@ def typespec_to_str(typespec: typing.Any) -> str:
if typespec in (str, int, bool):
t = typespec.__name__
elif typespec == typing.Optional[str]:
t = 'Union'
t = 'optional str'
elif typespec == typing.Sequence[str]:
t = 'Sequence'
t = 'sequence of str'
else:
raise NotImplementedError
return t

View File

@ -261,6 +261,7 @@ class TestApp(tornado.testing.AsyncHTTPTestCase):
def test_option_update(self):
assert self.put_json("/options", {"anticache": True}).code == 200
assert self.put_json("/options", {"wtf": True}).code == 400
assert self.put_json("/options", {"anticache": "foo"}).code == 400
def test_err(self):
with mock.patch("mitmproxy.tools.web.app.IndexHandler.get") as f:

View File

@ -115,7 +115,7 @@ def test_check_command_type():
def test_typesec_to_str():
assert(typecheck.typespec_to_str(str)) == "str"
assert(typecheck.typespec_to_str(typing.Sequence[str])) == "Sequence"
assert(typecheck.typespec_to_str(typing.Optional[str])) == "Union"
assert(typecheck.typespec_to_str(typing.Sequence[str])) == "sequence of str"
assert(typecheck.typespec_to_str(typing.Optional[str])) == "optional str"
with pytest.raises(NotImplementedError):
typecheck.typespec_to_str(dict)