def test__run_query(): magics.context._credentials = None job_id = "job_1234" sql = "SELECT 17" responses = [ futures.TimeoutError, futures.TimeoutError, [table.Row((17, ), {"num": 0})], ] client_patch = mock.patch("google.cloud.bigquery.magics.bigquery.Client", autospec=True) with client_patch as client_mock, io.capture_output() as captured: client_mock().query(sql).result.side_effect = responses client_mock().query(sql).job_id = job_id query_job = magics._run_query(client_mock(), sql) lines = re.split("\n|\r", captured.stdout) # Removes blanks & terminal code (result of display clearing) updates = list(filter(lambda x: bool(x) and x != "\x1b[2K", lines)) assert query_job.job_id == job_id expected_first_line = "Executing query with job ID: {}".format(job_id) assert updates[0] == expected_first_line execution_updates = updates[1:-1] assert len(execution_updates) == 3 # one update per API response for line in execution_updates: assert re.match("Query executing: .*s", line) assert re.match("Query complete after .*s", updates[-1])
def test__run_query(): magics.context._credentials = None job_id = 'job_1234' sql = 'SELECT 17' responses = [ futures.TimeoutError, futures.TimeoutError, [table.Row((17,), {'num': 0})] ] client_patch = mock.patch( 'google.cloud.bigquery.magics.bigquery.Client', autospec=True) with client_patch as client_mock, io.capture_output() as captured: client_mock().query(sql).result.side_effect = responses client_mock().query(sql).job_id = job_id query_job = magics._run_query(client_mock(), sql) lines = re.split('\n|\r', captured.stdout) # Removes blanks & terminal code (result of display clearing) updates = list(filter(lambda x: bool(x) and x != '\x1b[2K', lines)) assert query_job.job_id == job_id expected_first_line = "Executing query with job ID: {}".format(job_id) assert updates[0] == expected_first_line execution_updates = updates[1:-1] assert len(execution_updates) == 3 # one update per API response assert all(re.match("Query executing: .*s", line) for line in execution_updates) assert re.match("Query complete after .*s", updates[-1])
def test__run_query_dry_run_without_errors_is_silent(): magics.context._credentials = None sql = "SELECT 17" client_patch = mock.patch("google.cloud.bigquery.magics.bigquery.Client", autospec=True) job_config = job.QueryJobConfig() job_config.dry_run = True with client_patch as client_mock, io.capture_output() as captured: client_mock().query(sql).job_id = None magics._run_query(client_mock(), sql, job_config=job_config) assert len(captured.stderr) == 0 assert len(captured.stdout) == 0