def ui_screenshot_set(json_path): with open(json_path) as json_file: json_object = json.loads(json_file.read()) if not 'per_iteration_data' in json_object: # This will be reported as an error by result_details, no need to duplicate. return None ui_screenshots = [] # pylint: disable=too-many-nested-blocks for testsuite_run in json_object['per_iteration_data']: for _, test_runs in testsuite_run.items(): for test_run in test_runs: if 'ui screenshot' in test_run['links']: screenshot_link = test_run['links']['ui screenshot'] if screenshot_link.startswith('file:'): with contextlib.closing(urlopen(screenshot_link)) as f: test_screenshots = json.load(f) else: # Assume anything that isn't a file link is a google storage link screenshot_string = google_storage_helper.read_from_link( screenshot_link) if not screenshot_string: logging.error('Bad screenshot link %s', screenshot_link) continue test_screenshots = json.loads( screenshot_string) ui_screenshots.extend(test_screenshots) # pylint: enable=too-many-nested-blocks if ui_screenshots: return json.dumps(ui_screenshots) return None
def ui_screenshot_set(json_path): with open(json_path) as json_file: json_object = json.loads(json_file.read()) if not 'per_iteration_data' in json_object: # This will be reported as an error by result_details, no need to duplicate. return None ui_screenshots = [] for testsuite_run in json_object['per_iteration_data']: for _, test_runs in testsuite_run.iteritems(): for test_run in test_runs: if 'ui screenshot' in test_run['links']: screenshot_link = test_run['links']['ui screenshot'] if screenshot_link.startswith('file:'): with contextlib.closing(urllib.urlopen(screenshot_link)) as f: test_screenshots = json.load(f) else: # Assume anything that isn't a file link is a google storage link screenshot_string = google_storage_helper.read_from_link( screenshot_link) if not screenshot_string: logging.error('Bad screenshot link %s', screenshot_link) continue test_screenshots = json.loads( screenshot_string) ui_screenshots.extend(test_screenshots) if ui_screenshots: return json.dumps(ui_screenshots) return None