Changes by Robert Collins robe...@robertcollins.net:
--
nosy: +rbcollins
versions: +Python 3.6
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue18622
___
Robert Collins added the comment:
Applying this to 3.4 and up with a test.
Laurent, it would be good to sign the CLA - since your change here is minimal
and Nicola has, I'm just going ahead.
--
___
Python tracker rep...@bugs.python.org
Roundup Robot added the comment:
New changeset 4c8cb603ab42 by Robert Collins in branch '3.4':
- Issue #18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
https://hg.python.org/cpython/rev/4c8cb603ab42
--
nosy: +python-dev
___
Changes by Robert Collins robe...@robertcollins.net:
--
assignee: michael.foord - rbcollins
resolution: - fixed
status: open - closed
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue18622
___
Roundup Robot added the comment:
New changeset c0ec61cf5a7d by Robert Collins in branch '3.5':
- Issue #18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
https://hg.python.org/cpython/rev/c0ec61cf5a7d
New changeset a4fe32477df6 by Robert Collins in branch 'default':
- Issue
Florent Xicluna added the comment:
I've been bitten by this issue with a custom psycopg2 mock.
cur = mock.Mock()
cur.connection.cursor.return_value = cur
cur.reset_mock()
RuntimeError: maximum recursion depth exceeded
the patch looks ok, except the mix of tab and spaces :-)
--
Changes by Michael Foord mich...@voidspace.org.uk:
--
nosy: +kushal.das
versions: +Python 3.5 -Python 3.3
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue18622
___
Changes by Berker Peksag berker.pek...@gmail.com:
--
nosy: +berker.peksag
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue18622
___
___
Laurent De Buyst added the comment:
Sorry Michael, I should have read your second comment more closely since you
already pointed out that using a list as default argument is bad.
It is, however, easily fixed by changing to this:
def reset_mock(self, visited=None):
Restore the mock object
Nicola Palumbo added the comment:
I should have read more carefully, too! Thanks to both.
--
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue18622
___
Laurent De Buyst added the comment:
And here's an actual patch with the corrected code
--
Added file: http://bugs.python.org/file33463/issue18622_2.patch
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue18622
Laurent De Buyst added the comment:
The proposed patch does solve the infinite recursion bug, but a different
problem appears when resetting the same mock multiple times: it only works the
first time.
Using the patch as it stands:
from unittest.mock import mock_open
mo = mock_open()
a =
Nicola Palumbo added the comment:
Hi all,
I've fixed the infinite recursion in `reset_mock()`. It has been solved by
tracking a set of visited ids as suggested.
from unittest import mock
a = mock.mock_open()
a.reset_mock()
a
MagicMock name='open' spec='builtin_function_or_method'
Michael Foord added the comment:
The best way to solve this seems to be to track a set of visited ids (mocks
we've reset) and not recurse into mocks we've already done. This is similar to
the patch proposed on the google code issue - but not identical as that uses a
list and has it as the
New submission from Michael Foord:
As reported at: http://code.google.com/p/mock/issues/detail?id=209
from unittest import mock
[107971 refs]
mock.mock_open
function mock_open at 0x10cff9d20
[107974 refs]
a = mock.mock_open()
[109965 refs]
a.reset_mock()
...
--
assignee:
15 matches
Mail list logo