From e30750bf9e067692d4b5335a916030da9fc1b76a Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Sat, 5 Aug 2017 02:34:00 +0200 Subject: fix optmanager equality check and deepcopy --- mitmproxy/optmanager.py | 10 +++++++--- test/mitmproxy/test_optmanager.py | 6 ++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/mitmproxy/optmanager.py b/mitmproxy/optmanager.py index 08d155cf..01d97af3 100644 --- a/mitmproxy/optmanager.py +++ b/mitmproxy/optmanager.py @@ -150,13 +150,17 @@ class OptManager: self.changed.connect(_call, weak=False) def __eq__(self, other): - return self._options == other._options + if isinstance(other, OptManager): + return self._options == other._options + return False - def __copy__(self): + def __deepcopy__(self, memodict = None): o = OptManager() - o.__dict__["_options"] = copy.deepcopy(self._options) + o.__dict__["_options"] = copy.deepcopy(self._options, memodict) return o + __copy__ = __deepcopy__ + def __getattr__(self, attr): if attr in self._options: return self._options[attr].current() diff --git a/test/mitmproxy/test_optmanager.py b/test/mitmproxy/test_optmanager.py index fe72e6bb..d9b93227 100644 --- a/test/mitmproxy/test_optmanager.py +++ b/test/mitmproxy/test_optmanager.py @@ -73,6 +73,11 @@ def test_required_int(): o.parse_setval("required_int", None) +def test_deepcopy(): + o = TD() + copy.deepcopy(o) + + def test_options(): o = TO() assert o.keys() == {"bool", "one", "two", "required_int"} @@ -244,6 +249,7 @@ def test_serialize(): o2 = TD2() optmanager.load(o2, data) assert o2 == o + assert not o == 42 t = """ unknown: foo -- cgit v1.2.3