Skip to content

Commit 60887ab

Browse files
committed
Merge pull request #191 from tseaver/137-upload_file-guess_key_based_on_filename
Fix #137: default key based on filename.
2 parents 62e887d + e6ad297 commit 60887ab

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

gcloud/storage/bucket.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@ def upload_file(self, filename, key=None):
232232
to the root of the bucket
233233
with the same name as on your local file system.
234234
"""
235+
if key is None:
236+
key = os.path.basename(filename)
235237
key = self.new_key(key)
236238
return key.set_contents_from_filename(filename)
237239

gcloud/storage/test_bucket.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,8 +248,22 @@ def test_delete_keys_miss(self):
248248
self.assertEqual(kw[1]['method'], 'DELETE')
249249
self.assertEqual(kw[1]['path'], '/b/%s/o/%s' % (NAME, NONESUCH))
250250

251-
# See: https://github.com/GoogleCloudPlatform/gcloud-python/issues/137
252-
#def test_upload_file_default_key(self):
251+
def test_upload_file_default_key(self):
252+
from gcloud.test_credentials import _Monkey
253+
from gcloud.storage import bucket as MUT
254+
BASENAME = 'file.ext'
255+
FILENAME = '/path/to/%s' % BASENAME
256+
_uploaded = []
257+
class _Key(object):
258+
def __init__(self, bucket, name):
259+
self._bucket = bucket
260+
self._name = name
261+
def set_contents_from_filename(self, filename):
262+
_uploaded.append((self._bucket, self._name, filename))
263+
bucket = self._makeOne()
264+
with _Monkey(MUT, Key=_Key):
265+
bucket.upload_file(FILENAME)
266+
self.assertEqual(_uploaded, [(bucket, BASENAME, FILENAME)])
253267

254268
def test_upload_file_explicit_key(self):
255269
from gcloud.test_credentials import _Monkey

0 commit comments

Comments
 (0)