Option spacing and coverage

This commit is contained in:
Aldo Cortesi
2017-03-07 13:47:39 +13:00
parent 99a6b0dbc1
commit 79f5883c2f
3 changed files with 37 additions and 15 deletions

View File

@@ -170,16 +170,16 @@ class Options(optmanager.OptManager):
self.add_option(
"server_replay_ignore_params", [], Sequence[str],
"""
Request's parameters to be ignored while searching for a saved flow
to replay. Can be passed multiple times.
Request's parameters to be ignored while searching for a saved
flow to replay. Can be passed multiple times.
"""
)
self.add_option(
"server_replay_ignore_payload_params", [], Sequence[str],
"""
Request's payload parameters (application/x-www-form-urlencoded or multipart/form-data) to
be ignored while searching for a saved flow to replay.
Can be passed multiple times.
Request's payload parameters (application/x-www-form-urlencoded
or multipart/form-data) to be ignored while searching for a
saved flow to replay. Can be passed multiple times.
"""
)
self.add_option(

View File

@@ -323,30 +323,30 @@ class OptManager:
options=options
)
def make_parser(self, parser, option, metavar=None):
o = self._options[option]
f = option.replace("_", "-")
def make_parser(self, parser, optname, metavar=None):
o = self._options[optname]
f = optname.replace("_", "-")
if o.typespec == bool:
g = parser.add_mutually_exclusive_group(required=False)
g.add_argument(
"--%s" % f,
action="store_true",
dest=option,
dest=optname,
help=o.help
)
g.add_argument(
"--no-%s" % f,
action="store_false",
dest=option,
dest=optname,
help=o.help
)
parser.set_defaults(**{option: None})
parser.set_defaults(**{optname: None})
elif o.typespec in (int, typing.Optional[int]):
parser.add_argument(
"--%s" % f,
action="store",
type=int,
dest=option,
dest=optname,
help=o.help,
metavar=metavar,
)
@@ -355,7 +355,7 @@ class OptManager:
"--%s" % f,
action="store",
type=str,
dest=option,
dest=optname,
help=o.help,
metavar=metavar,
choices=o.choices
@@ -365,7 +365,7 @@ class OptManager:
"--%s" % f,
action="append",
type=str,
dest=option,
dest=optname,
help=o.help,
metavar=metavar,
choices=o.choices,

View File

@@ -2,6 +2,7 @@ import copy
import os
import pytest
import typing
import argparse
from mitmproxy import options
from mitmproxy import optmanager
@@ -284,4 +285,25 @@ def test_option():
def test_dump():
o = options.Options()
assert optmanager.dump(o)
assert optmanager.dump(o)
class TTypes(optmanager.OptManager):
def __init__(self):
super().__init__()
self.add_option("str", "str", str)
self.add_option("bool", False, bool)
self.add_option("int", 0, int)
self.add_option("seqstr", [], typing.Sequence[str])
self.add_option("unknown", 0.0, float)
def test_make_parser():
parser = argparse.ArgumentParser()
opts = TTypes()
opts.make_parser(parser, "str")
opts.make_parser(parser, "bool")
opts.make_parser(parser, "int")
opts.make_parser(parser, "seqstr")
with pytest.raises(ValueError):
opts.make_parser(parser, "unknown")