-
-
Notifications
You must be signed in to change notification settings - Fork 32.6k
Closed
Labels
stdlibPython modules in the Lib dirPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
It seems, such bug appeared after 4b222c9
Suppose we have initialized patch, than call start
more than once and than call stop
more than once:
>>> from unittest import mock
... class Foo:
... bar = None
... patch = mock.patch.object(Foo, 'bar', 'x')
>>> patch.start()
'x'
>>> patch.start()
'x'
>>> patch.stop()
False
>>> patch.stop()
Traceback (most recent call last):
File "...", line ..., in runcode
coro = func()
File "<input>", line 1, in <module>
File "/usr/lib/python3.8/unittest/mock.py", line 1542, in stop
return self.__exit__(None, None, None)
File "/usr/lib/python3.8/unittest/mock.py", line 1508, in __exit__
if self.is_local and self.temp_original is not DEFAULT:
AttributeError: '_patch' object has no attribute 'is_local'
But if we call start
only once, multiple stop
s won't cause such error.
For a first glance it is due to stop
excepting ValueError
on removing patch from _active_patches
and if ValueError
was not raised it proceeds assuming patch have attribute is_local
.
Your environment
- CPython versions tested on: Python 3.8
- Operating system: Ubuntu
- I think error exists in newer versions too
Linked PRs
Metadata
Metadata
Assignees
Labels
stdlibPython modules in the Lib dirPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Projects
Status
Done