diff --git a/changelog/3748.bugfix.rst b/changelog/3748.bugfix.rst new file mode 100644 index 00000000000..1cac9cb6995 --- /dev/null +++ b/changelog/3748.bugfix.rst @@ -0,0 +1 @@ +Fix infinite recursion in ``pytest.approx`` with arrays in ``numpy<1.13``. diff --git a/src/_pytest/python_api.py b/src/_pytest/python_api.py index 5331d8a84a3..596bac19165 100644 --- a/src/_pytest/python_api.py +++ b/src/_pytest/python_api.py @@ -211,7 +211,9 @@ def __eq__(self, actual): the pre-specified tolerance. """ if _is_numpy_array(actual): - return all(a == self for a in actual.flat) + # Call ``__eq__()`` manually to prevent infinite-recursion with + # numpy<1.13. See #3748. + return all(self.__eq__(a) for a in actual.flat) # Short-circuit exact equality. if actual == self.expected: