diff options
author | Aldo Cortesi <aldo@corte.si> | 2018-05-12 10:15:08 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@corte.si> | 2018-05-12 10:15:08 +1200 |
commit | 6dff8c58adbcb9da9b7bdeb088148c3f0d364c02 (patch) | |
tree | cf716b1581de9ff1845658da00905c8723576f24 | |
parent | 75d30212c253682f61d12b6cca5c910c798e18e1 (diff) | |
download | mitmproxy-6dff8c58adbcb9da9b7bdeb088148c3f0d364c02.tar.gz mitmproxy-6dff8c58adbcb9da9b7bdeb088148c3f0d364c02.tar.bz2 mitmproxy-6dff8c58adbcb9da9b7bdeb088148c3f0d364c02.zip |
commands: if no explicit return type is specified, assume None
This is going to be a super common error for addon authors, so we might as well
handle it.
-rw-r--r-- | mitmproxy/command.py | 5 | ||||
-rw-r--r-- | test/mitmproxy/test_command.py | 13 |
2 files changed, 17 insertions, 1 deletions
diff --git a/mitmproxy/command.py b/mitmproxy/command.py index 8f075525..cba2673c 100644 --- a/mitmproxy/command.py +++ b/mitmproxy/command.py @@ -58,7 +58,10 @@ class Command: if i.kind == i.VAR_POSITIONAL: self.has_positional = True self.paramtypes = [v.annotation for v in sig.parameters.values()] - self.returntype = sig.return_annotation + if sig.return_annotation == inspect._empty: + self.returntype = None + else: + self.returntype = sig.return_annotation def paramnames(self) -> typing.Sequence[str]: v = [typename(i) for i in self.paramtypes] diff --git a/test/mitmproxy/test_command.py b/test/mitmproxy/test_command.py index ea1017e7..22ebcc21 100644 --- a/test/mitmproxy/test_command.py +++ b/test/mitmproxy/test_command.py @@ -55,7 +55,20 @@ class TAddon: pass +class TypeErrAddon: + @command.command("noret") + def noret(self): + pass + + class TestCommand: + def test_typecheck(self): + with taddons.context(loadcore=False) as tctx: + cm = command.CommandManager(tctx.master) + a = TypeErrAddon() + c = command.Command(cm, "noret", a.noret) + print(c.signature_help()) + def test_varargs(self): with taddons.context() as tctx: cm = command.CommandManager(tctx.master) |