diff options
author | Aldo Cortesi <aldo@corte.si> | 2017-03-16 11:18:23 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2017-03-16 18:05:57 +1300 |
commit | b6abe96202d68a9f983d99a90457d1c85062fbfc (patch) | |
tree | ad2422c51c8555484ae3d36a4a2fdfdf20ba7682 | |
parent | b275257553d46af3f30ddb79d9963ebdc19f065e (diff) | |
download | mitmproxy-b6abe96202d68a9f983d99a90457d1c85062fbfc.tar.gz mitmproxy-b6abe96202d68a9f983d99a90457d1c85062fbfc.tar.bz2 mitmproxy-b6abe96202d68a9f983d99a90457d1c85062fbfc.zip |
Move dump handlers to addon
-rw-r--r-- | mitmproxy/tools/dump.py | 24 | ||||
-rw-r--r-- | mitmproxy/tools/main.py | 8 | ||||
-rw-r--r-- | test/mitmproxy/tools/test_dump.py | 2 |
3 files changed, 21 insertions, 13 deletions
diff --git a/mitmproxy/tools/dump.py b/mitmproxy/tools/dump.py index 42930a7e..adb1f7ef 100644 --- a/mitmproxy/tools/dump.py +++ b/mitmproxy/tools/dump.py @@ -1,10 +1,19 @@ -from mitmproxy import controller +from mitmproxy import ctx from mitmproxy import addons from mitmproxy import options from mitmproxy import master from mitmproxy.addons import dumper, termlog, termstatus, readstdin, keepserving +class ErrorCheck: + def __init__(self): + self.has_errored = False + + def log(self, e): + if e.level == "error": + self.has_errored = True + + class DumpMaster(master.Master): def __init__( @@ -15,15 +24,14 @@ class DumpMaster(master.Master): with_dumper=True, ) -> None: master.Master.__init__(self, options, server) - self.has_errored = False + self.errorcheck = ErrorCheck() if with_termlog: self.addons.add(termlog.TermLog(), termstatus.TermStatus()) self.addons.add(*addons.default_addons()) if with_dumper: self.addons.add(dumper.Dumper()) - self.addons.add(readstdin.ReadStdin(), keepserving.KeepServing()) - - @controller.handler - def log(self, e): - if e.level == "error": - self.has_errored = True + self.addons.add( + readstdin.ReadStdin(), + keepserving.KeepServing(), + self.errorcheck + ) diff --git a/mitmproxy/tools/main.py b/mitmproxy/tools/main.py index 35567b62..b321e8f8 100644 --- a/mitmproxy/tools/main.py +++ b/mitmproxy/tools/main.py @@ -91,9 +91,7 @@ def run(MasterKlass, args): # pragma: no cover sys.exit(1) except (KeyboardInterrupt, RuntimeError): pass - if master is None or getattr(master, "has_errored", None): - print("%s: errors occurred during run" % sys.argv[0], file=sys.stderr) - sys.exit(1) + return master def mitmproxy(args=None): # pragma: no cover @@ -109,7 +107,9 @@ def mitmproxy(args=None): # pragma: no cover def mitmdump(args=None): # pragma: no cover from mitmproxy.tools import dump - run(dump.DumpMaster, args) + m = run(dump.DumpMaster, args) + if m and m.errorcheck.has_errored: + sys.exit(1) def mitmweb(args=None): # pragma: no cover diff --git a/test/mitmproxy/tools/test_dump.py b/test/mitmproxy/tools/test_dump.py index 624bf08f..810fcaaa 100644 --- a/test/mitmproxy/tools/test_dump.py +++ b/test/mitmproxy/tools/test_dump.py @@ -21,7 +21,7 @@ class TestDumpMaster(tservers.MasterTest): ent = log.LogEntry("foo", "error") ent.reply = controller.DummyReply() m.log(ent) - assert m.has_errored + assert m.errorcheck.has_errored @pytest.mark.parametrize("termlog", [False, True]) def test_addons_termlog(self, termlog): |