diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2016-03-27 21:30:02 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2016-03-27 21:30:02 (GMT) |
commit | ce913877e42b7fa03434c2e765ace891e0f5c4dc (patch) | |
tree | 368cf51d0228cb951d2410a8e62703cc32c11c64 | |
parent | fa0f62d6ab3d4acf949bd0160bca16f0f973c323 (diff) | |
download | cpython-ce913877e42b7fa03434c2e765ace891e0f5c4dc.zip cpython-ce913877e42b7fa03434c2e765ace891e0f5c4dc.tar.gz cpython-ce913877e42b7fa03434c2e765ace891e0f5c4dc.tar.bz2 |
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.
-rw-r--r-- | Lib/unittest/mock.py | 3 | ||||
-rw-r--r-- | Lib/unittest/test/testmock/testmock.py | 17 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 24 insertions, 0 deletions
diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 976f663..cabae15 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -2029,6 +2029,9 @@ class _Call(tuple): return (other_args, other_kwargs) == (self_args, self_kwargs) + __ne__ = object.__ne__ + + def __call__(self, *args, **kwargs): if self.name is None: return _Call(('', args, kwargs), name='()') diff --git a/Lib/unittest/test/testmock/testmock.py b/Lib/unittest/test/testmock/testmock.py index 2a6069f..03c95de 100644 --- a/Lib/unittest/test/testmock/testmock.py +++ b/Lib/unittest/test/testmock/testmock.py @@ -304,6 +304,17 @@ class MockTest(unittest.TestCase): # an exception. See issue 24857. 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): mock = Mock() mock() @@ -319,6 +330,12 @@ class MockTest(unittest.TestCase): 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 f(a, b, c, d=None): pass @@ -94,6 +94,10 @@ Core and Builtins 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 length is passed to SSLSocket.recv() or read(). |