]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #26807: mock_open 'files' no longer error on readline at end of file.
authorRobert Collins <rbtcollins@hp.com>
Mon, 16 May 2016 03:22:01 +0000 (15:22 +1200)
committerRobert Collins <rbtcollins@hp.com>
Mon, 16 May 2016 03:22:01 +0000 (15:22 +1200)
Patch from Yolanda Robla.

Lib/unittest/mock.py
Lib/unittest/test/testmock/testmock.py
Misc/ACKS
Misc/NEWS

index cabae15214a9728ed807de5ec81d381713fc5cf0..86a5a3dfebd8f425b22b4cae26f0f66f311dec01 100644 (file)
@@ -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
index 03c95de6cd504cca7e2bbb6206f2f38db9980308..5f82b8296610e172009f96de48462171975091c7 100644 (file)
@@ -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()
index 2d920dbdcde21047698bf7a8671073daa542f36f..dda42cad4ef04f1de93d59968df8f42e178a9021 100644 (file)
--- 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
index e248275e45152b06cd13732930bbfb4aa7b210ec..73c32e911ce24b69b070f838d8e708ceb8785ea5 100644 (file)
--- 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