Skip to content

Commit 7707220

Browse files
Fix: BlobWriter.close() will do nothing if already closed (#887)
* Fix: BlobWriter.close() will do nothing if already closed * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 3d84972 commit 7707220

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

google/cloud/storage/fileio.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -423,9 +423,8 @@ def flush(self):
423423
)
424424

425425
def close(self):
426-
self._checkClosed() # Raises ValueError if closed.
427-
428-
self._upload_chunks_from_buffer(1)
426+
if not self._buffer.closed:
427+
self._upload_chunks_from_buffer(1)
429428
self._buffer.close()
430429

431430
def _checkClosed(self):

tests/unit/test_fileio.py

+17
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,23 @@ def test_write(self, mock_warn):
402402
stacklevel=2,
403403
)
404404

405+
def test_close_errors(self):
406+
blob = mock.Mock(chunk_size=None)
407+
408+
upload = mock.Mock()
409+
transport = mock.Mock()
410+
411+
blob._initiate_resumable_upload.return_value = (upload, transport)
412+
413+
writer = self._make_blob_writer(blob)
414+
415+
writer.close()
416+
# Close a second time to verify it successfully does nothing.
417+
writer.close()
418+
# Try to write to closed file.
419+
with self.assertRaises(ValueError):
420+
writer.write(TEST_BINARY_DATA)
421+
405422
def test_flush_fails(self):
406423
blob = mock.Mock(chunk_size=None)
407424
writer = self._make_blob_writer(blob)

0 commit comments

Comments
 (0)