diff --git a/setup.py b/setup.py index 92f9b15a7..750373580 100644 --- a/setup.py +++ b/setup.py @@ -76,7 +76,7 @@ setup( "passlib>=1.6.5, <1.7", "pyasn1>=0.1.9, <0.2", "pyOpenSSL>=16.0, <17.0", - "pyparsing>=2.1,<2.2", + "pyparsing>=2.0,<2.1", # 2.1.1 breaks our binaries, see https://sourceforge.net/p/pyparsing/bugs/93/ "pyperclip>=1.5.22, <1.6", "requests>=2.9.1, <2.10", "six>=1.10, <1.11", diff --git a/test/mitmproxy/test_filt.py b/test/mitmproxy/test_filt.py index 4401f2be2..9fe36b2ab 100644 --- a/test/mitmproxy/test_filt.py +++ b/test/mitmproxy/test_filt.py @@ -1,8 +1,6 @@ from six.moves import cStringIO as StringIO from mitmproxy import filt -from mitmproxy.models import Error -from mitmproxy.models import http -from netlib.http import Headers +from mock import patch from . import tutils @@ -247,3 +245,11 @@ class TestMatching: assert self.q("! ~c 201", s) assert self.q("!~c 201 !~c 202", s) assert not self.q("!~c 201 !~c 200", s) + + +@patch('traceback.extract_tb') +def test_pyparsing_bug(extract_tb): + """https://github.com/mitmproxy/mitmproxy/issues/1087""" + # The text is a string with leading and trailing whitespace stripped; if the source is not available it is None. + extract_tb.return_value = [("", 1, "test", None)] + assert filt.parse("test")