From: Samet YASLAN Date: Sun, 11 Jun 2023 18:51:21 +0000 (+0200) Subject: bpo-44185: Added close() to mock_open __exit__ (#26902) X-Git-Tag: v3.13.0a1~1794 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3f7c0810f6158a7ff37be432f8d7f9511427489f;p=thirdparty%2FPython%2Fcpython.git bpo-44185: Added close() to mock_open __exit__ (#26902) --- diff --git a/Lib/test/test_unittest/testmock/testwith.py b/Lib/test/test_unittest/testmock/testwith.py index 8dc8eb113769..56cb16394fac 100644 --- a/Lib/test/test_unittest/testmock/testwith.py +++ b/Lib/test/test_unittest/testmock/testwith.py @@ -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): diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 4ca7062961a6..f10f9b04a5ab 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -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) diff --git a/Misc/NEWS.d/next/Library/2021-06-24-20-45-03.bpo-44185.ZHb8yJ.rst b/Misc/NEWS.d/next/Library/2021-06-24-20-45-03.bpo-44185.ZHb8yJ.rst new file mode 100644 index 000000000000..056ab8d93515 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-24-20-45-03.bpo-44185.ZHb8yJ.rst @@ -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.