mirror of https://github.com/python/cpython
bpo-44185: Added close() to mock_open __exit__ (#26902)
This commit is contained in:
parent
18d16e93b6
commit
3f7c0810f6
|
@ -158,7 +158,7 @@ class TestMockOpen(unittest.TestCase):
|
|||
f.read()
|
||||
|
||||
expected_calls = [call('foo'), call().__enter__(), call().read(),
|
||||
call().__exit__(None, None, None)]
|
||||
call().__exit__(None, None, None), call().close()]
|
||||
self.assertEqual(mock.mock_calls, expected_calls)
|
||||
self.assertIs(f, handle)
|
||||
|
||||
|
@ -172,9 +172,9 @@ class TestMockOpen(unittest.TestCase):
|
|||
|
||||
expected_calls = [
|
||||
call('foo'), call().__enter__(), call().read(),
|
||||
call().__exit__(None, None, None),
|
||||
call().__exit__(None, None, None), call().close(),
|
||||
call('bar'), call().__enter__(), call().read(),
|
||||
call().__exit__(None, None, None)]
|
||||
call().__exit__(None, None, None), call().close()]
|
||||
self.assertEqual(mock.mock_calls, expected_calls)
|
||||
|
||||
def test_explicit_mock(self):
|
||||
|
|
|
@ -2941,6 +2941,9 @@ def mock_open(mock=None, read_data=''):
|
|||
return handle.readline.return_value
|
||||
return next(_state[0])
|
||||
|
||||
def _exit_side_effect(exctype, excinst, exctb):
|
||||
handle.close()
|
||||
|
||||
global file_spec
|
||||
if file_spec is None:
|
||||
import _io
|
||||
|
@ -2967,6 +2970,7 @@ def mock_open(mock=None, read_data=''):
|
|||
handle.readlines.side_effect = _readlines_side_effect
|
||||
handle.__iter__.side_effect = _iter_side_effect
|
||||
handle.__next__.side_effect = _next_side_effect
|
||||
handle.__exit__.side_effect = _exit_side_effect
|
||||
|
||||
def reset_data(*args, **kwargs):
|
||||
_state[0] = _to_stream(read_data)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
:func:`unittest.mock.mock_open` will call the :func:`close` method of the file
|
||||
handle mock when it is exiting from the context manager.
|
||||
Patch by Samet Yaslan.
|
Loading…
Reference in New Issue