Commit ce913877 authored by Berker Peksag's avatar Berker Peksag

Issue #25195: Fix a regression in mock.MagicMock

_Call is a subclass of tuple (changeset 3603bae63c13 only works
for classes) so we need to implement __ne__ ourselves.

Patch by Andrew Plummer.
parent fa0f62d6
...@@ -2029,6 +2029,9 @@ class _Call(tuple): ...@@ -2029,6 +2029,9 @@ class _Call(tuple):
return (other_args, other_kwargs) == (self_args, self_kwargs) return (other_args, other_kwargs) == (self_args, self_kwargs)
__ne__ = object.__ne__
def __call__(self, *args, **kwargs): def __call__(self, *args, **kwargs):
if self.name is None: if self.name is None:
return _Call(('', args, kwargs), name='()') return _Call(('', args, kwargs), name='()')
......
...@@ -304,6 +304,17 @@ class MockTest(unittest.TestCase): ...@@ -304,6 +304,17 @@ class MockTest(unittest.TestCase):
# an exception. See issue 24857. # an exception. See issue 24857.
self.assertFalse(mock.call_args == "a long sequence") self.assertFalse(mock.call_args == "a long sequence")
def test_calls_equal_with_any(self):
call1 = mock.call(mock.MagicMock())
call2 = mock.call(mock.ANY)
# Check that equality and non-equality is consistent even when
# comparing with mock.ANY
self.assertTrue(call1 == call2)
self.assertFalse(call1 != call2)
def test_assert_called_with(self): def test_assert_called_with(self):
mock = Mock() mock = Mock()
mock() mock()
...@@ -319,6 +330,12 @@ class MockTest(unittest.TestCase): ...@@ -319,6 +330,12 @@ class MockTest(unittest.TestCase):
mock.assert_called_with(1, 2, 3, a='fish', b='nothing') mock.assert_called_with(1, 2, 3, a='fish', b='nothing')
def test_assert_called_with_any(self):
m = MagicMock()
m(MagicMock())
m.assert_called_with(mock.ANY)
def test_assert_called_with_function_spec(self): def test_assert_called_with_function_spec(self):
def f(a, b, c, d=None): def f(a, b, c, d=None):
pass pass
......
...@@ -94,6 +94,10 @@ Core and Builtins ...@@ -94,6 +94,10 @@ Core and Builtins
Library Library
------- -------
- Issue #25195: Fix a regression in mock.MagicMock. _Call is a subclass of
tuple (changeset 3603bae63c13 only works for classes) so we need to
implement __ne__ ourselves. Patch by Andrew Plummer.
- Issue #26644: Raise ValueError rather than SystemError when a negative - Issue #26644: Raise ValueError rather than SystemError when a negative
length is passed to SSLSocket.recv() or read(). length is passed to SSLSocket.recv() or read().
......
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