bpo-44185: Added close() to mock_open __exit__ (#26902)

This commit is contained in:
Samet YASLAN 2023-06-11 20:51:21 +02:00 committed by GitHub
parent 18d16e93b6
commit 3f7c0810f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 3 deletions

View File

@ -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):

View File

@ -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)

View File

@ -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.