Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7a994b0

Browse filesBrowse files
committed
Merge pull request googleapis#1312 from tseaver/bigquery-fix_list_jobs_missing_sourceUris
Allow for 'sourceUris' to be missing in load job config.
2 parents 4734112 + 18a3e43 commit 7a994b0
Copy full SHA for 7a994b0

2 files changed

+53-1Lines changed: 53 additions & 1 deletion

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎gcloud/bigquery/job.py‎

Copy file name to clipboardExpand all lines: gcloud/bigquery/job.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ def from_api_repr(cls, resource, client):
615615
dest_config = config['destinationTable']
616616
dataset = Dataset(dest_config['datasetId'], client)
617617
destination = Table(dest_config['tableId'], dataset)
618-
source_urls = config['sourceUris']
618+
source_urls = config.get('sourceUris', ())
619619
job = cls(name, destination, source_urls, client=client)
620620
job._set_properties(resource)
621621
return job
Collapse file

‎gcloud/bigquery/test_client.py‎

Copy file name to clipboardExpand all lines: gcloud/bigquery/test_client.py
+52Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,58 @@ def test_list_jobs_defaults(self):
262262
self.assertEqual(req['path'], '/%s' % PATH)
263263
self.assertEqual(req['query_params'], {'projection': 'full'})
264264

265+
def test_list_jobs_load_job_wo_sourceUris(self):
266+
from gcloud.bigquery.job import LoadTableFromStorageJob
267+
PROJECT = 'PROJECT'
268+
DATASET = 'test_dataset'
269+
SOURCE_TABLE = 'source_table'
270+
JOB_TYPES = {
271+
'load_job': LoadTableFromStorageJob,
272+
}
273+
PATH = 'projects/%s/jobs' % PROJECT
274+
TOKEN = 'TOKEN'
275+
LOAD_DATA = {
276+
'id': '%s:%s' % (PROJECT, 'load_job'),
277+
'jobReference': {
278+
'projectId': PROJECT,
279+
'jobId': 'load_job',
280+
},
281+
'state': 'DONE',
282+
'configuration': {
283+
'load': {
284+
'destinationTable': {
285+
'projectId': PROJECT,
286+
'datasetId': DATASET,
287+
'tableId': SOURCE_TABLE,
288+
},
289+
}
290+
},
291+
}
292+
DATA = {
293+
'nextPageToken': TOKEN,
294+
'jobs': [
295+
LOAD_DATA,
296+
]
297+
}
298+
creds = _Credentials()
299+
client = self._makeOne(PROJECT, creds)
300+
conn = client.connection = _Connection(DATA)
301+
302+
jobs, token = client.list_jobs()
303+
304+
self.assertEqual(len(jobs), len(DATA['jobs']))
305+
for found, expected in zip(jobs, DATA['jobs']):
306+
name = expected['jobReference']['jobId']
307+
self.assertTrue(isinstance(found, JOB_TYPES[name]))
308+
self.assertEqual(found.job_id, expected['id'])
309+
self.assertEqual(token, TOKEN)
310+
311+
self.assertEqual(len(conn._requested), 1)
312+
req = conn._requested[0]
313+
self.assertEqual(req['method'], 'GET')
314+
self.assertEqual(req['path'], '/%s' % PATH)
315+
self.assertEqual(req['query_params'], {'projection': 'full'})
316+
265317
def test_list_jobs_explicit_empty(self):
266318
PROJECT = 'PROJECT'
267319
PATH = 'projects/%s/jobs' % PROJECT

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.