|
27 | 27 | import mock
|
28 | 28 | import pytest
|
29 | 29 |
|
| 30 | +from google.cloud.exceptions import NotFound |
30 | 31 | from google.cloud.storage import _helpers
|
31 | 32 | from google.cloud.storage._helpers import _get_default_headers
|
32 | 33 | from google.cloud.storage._helpers import _get_default_storage_base_url
|
@@ -1848,6 +1849,48 @@ def test_download_to_filename_corrupted(self):
|
1848 | 1849 | stream = blob._prep_and_do_download.mock_calls[0].args[0]
|
1849 | 1850 | self.assertEqual(stream.name, filename)
|
1850 | 1851 |
|
| 1852 | + def test_download_to_filename_notfound(self): |
| 1853 | + blob_name = "blob-name" |
| 1854 | + client = self._make_client() |
| 1855 | + bucket = _Bucket(client) |
| 1856 | + blob = self._make_one(blob_name, bucket=bucket) |
| 1857 | + |
| 1858 | + with mock.patch.object(blob, "_prep_and_do_download"): |
| 1859 | + blob._prep_and_do_download.side_effect = NotFound("testing") |
| 1860 | + |
| 1861 | + # Try to download into a temporary file (don't use |
| 1862 | + # `_NamedTemporaryFile` it will try to remove after the file is |
| 1863 | + # already removed) |
| 1864 | + filehandle, filename = tempfile.mkstemp() |
| 1865 | + os.close(filehandle) |
| 1866 | + self.assertTrue(os.path.exists(filename)) |
| 1867 | + |
| 1868 | + with self.assertRaises(NotFound): |
| 1869 | + blob.download_to_filename(filename) |
| 1870 | + |
| 1871 | + # Make sure the file was cleaned up. |
| 1872 | + self.assertFalse(os.path.exists(filename)) |
| 1873 | + |
| 1874 | + expected_timeout = self._get_default_timeout() |
| 1875 | + blob._prep_and_do_download.assert_called_once_with( |
| 1876 | + mock.ANY, |
| 1877 | + client=None, |
| 1878 | + start=None, |
| 1879 | + end=None, |
| 1880 | + if_etag_match=None, |
| 1881 | + if_etag_not_match=None, |
| 1882 | + if_generation_match=None, |
| 1883 | + if_generation_not_match=None, |
| 1884 | + if_metageneration_match=None, |
| 1885 | + if_metageneration_not_match=None, |
| 1886 | + raw_download=False, |
| 1887 | + timeout=expected_timeout, |
| 1888 | + checksum="auto", |
| 1889 | + retry=DEFAULT_RETRY, |
| 1890 | + ) |
| 1891 | + stream = blob._prep_and_do_download.mock_calls[0].args[0] |
| 1892 | + self.assertEqual(stream.name, filename) |
| 1893 | + |
1851 | 1894 | def _download_as_bytes_helper(self, raw_download, timeout=None, **extra_kwargs):
|
1852 | 1895 | blob_name = "blob-name"
|
1853 | 1896 | client = self._make_client()
|
|
0 commit comments