diff --git a/swiftclient/service.py b/swiftclient/service.py index 5fa2870b..f253ec86 100644 --- a/swiftclient/service.py +++ b/swiftclient/service.py @@ -1004,7 +1004,7 @@ class SwiftService(object): raise raise SwiftError('Account not found', exc=err) - elif not objects: + elif objects is None: if '/' in container: raise SwiftError('\'/\' in container name', container=container) diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index 3fbe987a..dcd2b854 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -1690,6 +1690,22 @@ class TestServiceDownload(_TestServiceBase): self.assertEqual(resp['object'], 'test') self.assertEqual(resp['path'], 'test') + @mock.patch('swiftclient.service.interruptable_as_completed') + @mock.patch('swiftclient.service.SwiftService._download_container') + @mock.patch('swiftclient.service.SwiftService._download_object_job') + def test_download_with_objects_empty(self, mock_down_obj, + mock_down_cont, mock_as_comp): + fake_future = Future() + fake_future.set_result(1) + mock_as_comp.return_value = [fake_future] + service = SwiftService() + next(service.download('c', [], self.opts), None) + mock_down_obj.assert_not_called() + mock_down_cont.assert_not_called() + + next(service.download('c', options=self.opts), None) + self.assertEqual(True, mock_down_cont.called) + def test_download_with_output_dir(self): service = SwiftService() with mock.patch('swiftclient.service.Connection') as mock_conn: