diff options
Diffstat (limited to 'lib/fixtures/_fixtures/monkeypatch.py')
-rw-r--r-- | lib/fixtures/_fixtures/monkeypatch.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/fixtures/_fixtures/monkeypatch.py b/lib/fixtures/_fixtures/monkeypatch.py index 42de7ec..858c587 100644 --- a/lib/fixtures/_fixtures/monkeypatch.py +++ b/lib/fixtures/_fixtures/monkeypatch.py @@ -17,6 +17,9 @@ __all__ = [ 'MonkeyPatch' ] +import sys +import types + from fixtures import Fixture @@ -62,6 +65,11 @@ class MonkeyPatch(Fixture): if old_value is sentinel: self.addCleanup(self._safe_delete, current, attribute) else: + # Python 2's setattr transforms function into instancemethod + if (sys.version_info.major == 2 and + isinstance(current, (type, types.ClassType)) and + isinstance(old_value, types.FunctionType)): + old_value = staticmethod(old_value) self.addCleanup(setattr, current, attribute, old_value) def _safe_delete(self, obj, attribute): |