From: Elizabeth Uselton Date: Mon, 15 Jul 2019 01:51:43 +0000 (-0700) Subject: bpo-37555: Add regression tests for mock ANY ordering issues X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=49c5310ad493c4356dd3bc58c03653cd9466c4fa;p=thirdparty%2FPython%2Fcpython.git bpo-37555: Add regression tests for mock ANY ordering issues Add regression tests for whether __eq__ is order agnostic on _Call and _CallList, which is useful for comparisons involving ANY, especially if the ANY comparison is to a class not defaulting __eq__ to NotImplemented. Co-authored-by: Neal Finne --- diff --git a/Lib/unittest/test/testmock/testhelpers.py b/Lib/unittest/test/testmock/testhelpers.py index 49fffa38439f..75d4ac54078e 100644 --- a/Lib/unittest/test/testmock/testhelpers.py +++ b/Lib/unittest/test/testmock/testhelpers.py @@ -322,6 +322,16 @@ class CallTest(unittest.TestCase): kall = call(1).method(2)(3).foo.bar.baz(4)(5).__int__() self.assertEqual(kall.call_list(), mock.mock_calls) + def test_call_list_with_any_comparison_order(self): + class Foo: + def __eq__(self, other): pass + def __ne__(self, other): pass + + mock = MagicMock() + mock(Foo()) + + self.assertEqual(call(ANY).call_list(), mock.mock_calls) + self.assertEqual(mock.mock_calls, call(ANY).call_list()) def test_call_any(self): self.assertEqual(call, ANY) @@ -331,6 +341,16 @@ class CallTest(unittest.TestCase): self.assertEqual(m.mock_calls, [ANY]) self.assertEqual([ANY], m.mock_calls) + def test_call_any_comparison_order(self): + class Foo: + def __eq__(self, other): pass + def __ne__(self, other): pass + + m = MagicMock() + m(Foo()) + + self.assertEqual(m.mock_calls[0], call(ANY)) + self.assertEqual(call(ANY), m.mock_calls[0]) def test_two_args_call(self): args = _Call(((1, 2), {'a': 3}), two=True)