mirror of https://github.com/python/cpython
Remove AnyCompare and use call objects everywhere.
This commit is contained in:
parent
38650c98c6
commit
24973c0b32
|
@ -864,7 +864,7 @@ class NonCallableMock(Base):
|
|||
def _error_message():
|
||||
msg = self._format_mock_failure_message(args, kwargs)
|
||||
return msg
|
||||
expected = self._call_matcher(_Call((args, kwargs)))
|
||||
expected = self._call_matcher(_Call((args, kwargs), two=True))
|
||||
actual = self._call_matcher(self.call_args)
|
||||
if actual != expected:
|
||||
cause = expected if isinstance(expected, Exception) else None
|
||||
|
@ -927,9 +927,9 @@ class NonCallableMock(Base):
|
|||
`assert_called_with` and `assert_called_once_with` that only pass if
|
||||
the call is the most recent one."""
|
||||
expected = self._call_matcher(_Call((args, kwargs), two=True))
|
||||
cause = expected if isinstance(expected, Exception) else None
|
||||
actual = [self._call_matcher(c) for c in self.call_args_list]
|
||||
if cause or expected not in _AnyComparer(actual):
|
||||
if expected not in actual:
|
||||
cause = expected if isinstance(expected, Exception) else None
|
||||
expected_string = self._format_mock_call_signature(args, kwargs)
|
||||
raise AssertionError(
|
||||
'%s call not found' % expected_string
|
||||
|
@ -982,23 +982,6 @@ class NonCallableMock(Base):
|
|||
return f"\n{prefix}: {safe_repr(self.mock_calls)}."
|
||||
|
||||
|
||||
class _AnyComparer(list):
|
||||
"""A list which checks if it contains a call which may have an
|
||||
argument of ANY, flipping the components of item and self from
|
||||
their traditional locations so that ANY is guaranteed to be on
|
||||
the left."""
|
||||
def __contains__(self, item):
|
||||
for _call in self:
|
||||
if len(item) != len(_call):
|
||||
continue
|
||||
if all([
|
||||
expected == actual
|
||||
for expected, actual in zip(item, _call)
|
||||
]):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def _try_iter(obj):
|
||||
if obj is None:
|
||||
return obj
|
||||
|
@ -2172,7 +2155,7 @@ class AsyncMockMixin(Base):
|
|||
"""
|
||||
expected = self._call_matcher(_Call((args, kwargs), two=True))
|
||||
actual = [self._call_matcher(c) for c in self.await_args_list]
|
||||
if expected not in _AnyComparer(actual):
|
||||
if expected not in actual:
|
||||
cause = expected if isinstance(expected, Exception) else None
|
||||
expected_string = self._format_mock_call_signature(args, kwargs)
|
||||
raise AssertionError(
|
||||
|
|
|
@ -184,6 +184,10 @@ class AsyncAutospecTest(unittest.TestCase):
|
|||
spec.assert_awaited_with(1, 2, c=3)
|
||||
spec.assert_awaited()
|
||||
|
||||
with self.assertRaises(AssertionError):
|
||||
spec.assert_any_await(e=1)
|
||||
|
||||
|
||||
def test_patch_with_autospec(self):
|
||||
|
||||
async def test_async():
|
||||
|
|
Loading…
Reference in New Issue