Kaydet (Commit) 313f85f0 authored tarafından Michael Foord's avatar Michael Foord

unittest.mock.MagicMock objects are now unorderable by default

üst 1d561795
...@@ -167,16 +167,15 @@ def _set_signature(mock, original, instance=False): ...@@ -167,16 +167,15 @@ def _set_signature(mock, original, instance=False):
signature, func = result signature, func = result
src = "lambda %s: None" % signature src = "lambda %s: None" % signature
context = {'_mock_': mock} checksig = eval(src, {})
checksig = eval(src, context)
_copy_func_details(func, checksig) _copy_func_details(func, checksig)
name = original.__name__ name = original.__name__
if not name.isidentifier(): if not name.isidentifier():
name = 'funcopy' name = 'funcopy'
context = {'checksig': checksig, 'mock': mock} context = {'_checksig_': checksig, 'mock': mock}
src = """def %s(*args, **kwargs): src = """def %s(*args, **kwargs):
checksig(*args, **kwargs) _checksig_(*args, **kwargs)
return mock(*args, **kwargs)""" % name return mock(*args, **kwargs)""" % name
exec (src, context) exec (src, context)
funcopy = context[name] funcopy = context[name]
...@@ -620,14 +619,16 @@ class NonCallableMock(Base): ...@@ -620,14 +619,16 @@ class NonCallableMock(Base):
def __dir__(self): def __dir__(self):
"""Filter the output of `dir(mock)` to only useful members.""" """Filter the output of `dir(mock)` to only useful members."""
if not FILTER_DIR:
return object.__dir__(self)
extras = self._mock_methods or [] extras = self._mock_methods or []
from_type = dir(type(self)) from_type = dir(type(self))
from_dict = list(self.__dict__) from_dict = list(self.__dict__)
if FILTER_DIR: from_type = [e for e in from_type if not e.startswith('_')]
from_type = [e for e in from_type if not e.startswith('_')] from_dict = [e for e in from_dict if not e.startswith('_') or
from_dict = [e for e in from_dict if not e.startswith('_') or _is_magic(e)]
_is_magic(e)]
return sorted(set(extras + from_type + from_dict + return sorted(set(extras + from_type + from_dict +
list(self._mock_children))) list(self._mock_children)))
...@@ -1582,6 +1583,10 @@ _calculate_return_value = { ...@@ -1582,6 +1583,10 @@ _calculate_return_value = {
} }
_return_values = { _return_values = {
'__lt__': NotImplemented,
'__gt__': NotImplemented,
'__le__': NotImplemented,
'__ge__': NotImplemented,
'__int__': 1, '__int__': 1,
'__contains__': False, '__contains__': False,
'__len__': 0, '__len__': 0,
...@@ -2000,7 +2005,6 @@ def create_autospec(spec, spec_set=False, instance=False, _parent=None, ...@@ -2000,7 +2005,6 @@ def create_autospec(spec, spec_set=False, instance=False, _parent=None,
_parent._mock_children[_name] = mock _parent._mock_children[_name] = mock
if is_type and not instance and 'return_value' not in kwargs: if is_type and not instance and 'return_value' not in kwargs:
# XXXX could give a name to the return_value mock?
mock.return_value = create_autospec(spec, spec_set, instance=True, mock.return_value = create_autospec(spec, spec_set, instance=True,
_name='()', _parent=mock) _name='()', _parent=mock)
......
...@@ -156,6 +156,19 @@ class TestMockingMagicMethods(unittest.TestCase): ...@@ -156,6 +156,19 @@ class TestMockingMagicMethods(unittest.TestCase):
self. assertTrue(mock <= 3) self. assertTrue(mock <= 3)
self. assertTrue(mock >= 3) self. assertTrue(mock >= 3)
self.assertRaises(TypeError, lambda: MagicMock() < object())
self.assertRaises(TypeError, lambda: object() < MagicMock())
self.assertRaises(TypeError, lambda: MagicMock() < MagicMock())
self.assertRaises(TypeError, lambda: MagicMock() > object())
self.assertRaises(TypeError, lambda: object() > MagicMock())
self.assertRaises(TypeError, lambda: MagicMock() > MagicMock())
self.assertRaises(TypeError, lambda: MagicMock() <= object())
self.assertRaises(TypeError, lambda: object() <= MagicMock())
self.assertRaises(TypeError, lambda: MagicMock() <= MagicMock())
self.assertRaises(TypeError, lambda: MagicMock() >= object())
self.assertRaises(TypeError, lambda: object() >= MagicMock())
self.assertRaises(TypeError, lambda: MagicMock() >= MagicMock())
def test_equality(self): def test_equality(self):
for mock in Mock(), MagicMock(): for mock in Mock(), MagicMock():
......
...@@ -34,6 +34,8 @@ Core and Builtins ...@@ -34,6 +34,8 @@ Core and Builtins
Library Library
------- -------
- Issue #14295: Add unittest.mock
- Issue #7652: Add --with-system-libmpdec option to configure for linking - Issue #7652: Add --with-system-libmpdec option to configure for linking
the _decimal module against an installed libmpdec. the _decimal module against an installed libmpdec.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment