aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-09-22 03:06:11 -0700
committerGitHub <noreply@github.com>2016-09-22 03:06:11 -0700
commitd585236a820071938669d74b0069aab26f86ed5d (patch)
tree1c8e1a2f72130724422363b8e6a1dc78c8d72073 /test
parentf59ae4a57f65fa76812c3a29965df8a4b35448e9 (diff)
parenta3329c5a80b386a12575002d8324eb783428ba16 (diff)
downloadmitmproxy-d585236a820071938669d74b0069aab26f86ed5d.tar.gz
mitmproxy-d585236a820071938669d74b0069aab26f86ed5d.tar.bz2
mitmproxy-d585236a820071938669d74b0069aab26f86ed5d.zip
Merge pull request #1567 from mhils/issue-1467
Scripts: cut traceback properly, fix #1467
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/builtins/test_script.py30
1 files changed, 27 insertions, 3 deletions
diff --git a/test/mitmproxy/builtins/test_script.py b/test/mitmproxy/builtins/test_script.py
index 09e5bc92..24337760 100644
--- a/test/mitmproxy/builtins/test_script.py
+++ b/test/mitmproxy/builtins/test_script.py
@@ -1,10 +1,12 @@
-import time
+import traceback
-from mitmproxy.builtins import script
+import sys
+import time
from mitmproxy import exceptions
+from mitmproxy import options
+from mitmproxy.builtins import script
from mitmproxy.flow import master
from mitmproxy.flow import state
-from mitmproxy import options
from .. import tutils, mastertest
@@ -104,6 +106,10 @@ class TestScript(mastertest.MasterTest):
f = tutils.tflow(resp=True)
m.request(f)
assert m.event_log[0][0] == "error"
+ assert len(m.event_log[0][1].splitlines()) == 6
+ assert 'addonscripts/error.py", line 7, in request' in m.event_log[0][1]
+ assert 'addonscripts/error.py", line 3, in mkerr' in m.event_log[0][1]
+ assert m.event_log[0][1].endswith("ValueError: Error!\n")
def test_duplicate_flow(self):
s = state.State()
@@ -136,6 +142,24 @@ class TestScript(mastertest.MasterTest):
]
+class TestCutTraceback:
+ def raise_(self, i):
+ if i > 0:
+ self.raise_(i - 1)
+ raise RuntimeError()
+
+ def test_simple(self):
+ try:
+ self.raise_(4)
+ except RuntimeError:
+ tb = sys.exc_info()[2]
+ tb_cut = script.cut_traceback(tb, "test_simple")
+ assert len(traceback.extract_tb(tb_cut)) == 5
+
+ tb_cut2 = script.cut_traceback(tb, "nonexistent")
+ assert len(traceback.extract_tb(tb_cut2)) == len(traceback.extract_tb(tb))
+
+
class TestScriptLoader(mastertest.MasterTest):
def test_run_once(self):
s = state.State()