From 9549a3e3d4be2a15c222996abff8cb97180ee9be Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Mon, 16 May 2016 15:22:01 +1200 Subject: Issue #26807: mock_open 'files' no longer error on readline at end of file. Patch from Yolanda Robla. --- Lib/unittest/mock.py | 2 ++ Lib/unittest/test/testmock/testmock.py | 12 ++++++++++++ Misc/ACKS | 1 + Misc/NEWS | 3 +++ 4 files changed, 18 insertions(+) diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index cabae15..86a5a3d 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -2323,6 +2323,8 @@ def mock_open(mock=None, read_data=''): yield handle.readline.return_value for line in _state[0]: yield line + while True: + yield type(read_data)() global file_spec diff --git a/Lib/unittest/test/testmock/testmock.py b/Lib/unittest/test/testmock/testmock.py index 03c95de..5f82b82 100644 --- a/Lib/unittest/test/testmock/testmock.py +++ b/Lib/unittest/test/testmock/testmock.py @@ -1419,6 +1419,18 @@ class MockTest(unittest.TestCase): self.assertEqual('abc', first) self.assertEqual('abc', second) + def test_mock_open_after_eof(self): + # read, readline and readlines should work after end of file. + _open = mock.mock_open(read_data='foo') + h = _open('bar') + h.read() + self.assertEqual('', h.read()) + self.assertEqual('', h.read()) + self.assertEqual('', h.readline()) + self.assertEqual('', h.readline()) + self.assertEqual([], h.readlines()) + self.assertEqual([], h.readlines()) + def test_mock_parents(self): for Klass in Mock, MagicMock: m = Klass() diff --git a/Misc/ACKS b/Misc/ACKS index 2d920db..dda42ca 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1223,6 +1223,7 @@ Ben Roberts Mark Roberts Andy Robinson Jim Robinson +Yolanda Robla Daniel Rocco Mark Roddy Kevin Rodgers diff --git a/Misc/NEWS b/Misc/NEWS index e248275..73c32e9 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -124,6 +124,9 @@ Library - Issue #22274: In the subprocess module, allow stderr to be redirected to stdout even when stdout is not redirected. Patch by Akira Li. +- Issue #26807: mock_open 'files' no longer error on readline at end of file. + Patch from Yolanda Robla. + - Issue #25745: Fixed leaking a userptr in curses panel destructor. - Issue #26977: Removed unnecessary, and ignored, call to sum of squares helper -- cgit v0.12