Issue #26807: mock_open 'files' no longer error on readline at end of file.

Patch from Yolanda Robla.
This commit is contained in:
Robert Collins 2016-05-16 15:22:45 +12:00
commit c85dd85f1a
4 changed files with 18 additions and 0 deletions

View file

@ -2341,6 +2341,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

View file

@ -1440,6 +1440,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()