def test_file_examples(file_example, example, report): if example.is_skip: pytest.skip("skipping %s" % example.relpath) (status, duration, out, err) = _run_example(example) info("Example run in %s" % white("%.3fs" % duration)) for line in out.split("\n"): if len(line) == 0 or line.startswith("Wrote "): continue info(line, label="PY") for line in err.split("\n"): if len(line) == 0: continue warn(line, label="PY") assert status != "timeout", "%s timed out" % example.relpath assert status == 0, "%s failed to run (exit code %s)" % (example.relpath, status) if example.no_js: if not pytest.config.option.no_js: warn("skipping bokehjs for %s" % example.relpath) else: _assert_snapshot(example, "file://%s.html" % example.path_no_ext, 'file') if example.no_diff: warn("skipping image diff for %s" % example.relpath) else: _get_pdiff(example)
def _get_pdiff(example): img_path, ref_path, diff_path = example.img_path, example.ref_path, example.diff_path trace("generated image: " + img_path) ref = example.fetch_ref() if not ref: warn("reference image %s doesn't exist" % example.ref_url) else: ref_dir = dirname(ref_path) if not exists(ref_dir): os.makedirs(ref_dir) with open(ref_path, "wb") as f: f.write(ref) trace("saved reference: " + ref_path) example.pixels = image_diff(diff_path, img_path, ref_path) if example.pixels != 0: comment = "dimensions don't match" if example.pixels == -1 else white( "%.02f%%" % example.pixels) + " of pixels" warn("generated and reference images differ: %s" % comment) else: ok("generated and reference images match")
def _assert_snapshot(example, url, example_type): screenshot_path = example.img_path height = 2000 if example_type == 'notebook' else 1000 wait = 30000 start = time.time() result = get_phantomjs_screenshot(url, screenshot_path, 1000, wait, 1000, height) end = time.time() info("Example rendered in %s" % white("%.3fs" % (end - start))) success = result['success'] timeout = result['timeout'] errors = result['errors'] resources = result['resources'] no_errors = len(errors) == 0 no_resources = len(resources) == 0 if timeout: warn("%s: %s" % (red("TIMEOUT: "), "bokehjs did not finish in %s ms" % wait)) if pytest.config.option.verbose: _print_phantomjs_output(result) assert success, "%s failed to load" % example.relpath assert no_resources, "%s failed with %d missing resources" % (example.relpath, len(resources)) assert no_errors, "%s failed with %d errors" % (example.relpath, len(errors))
def _assert_snapshot(example, url, example_type): screenshot_path = example.img_path height = 2000 if example_type == 'notebook' else 1000 wait = 30000 start = time.time() result = get_phantomjs_screenshot(url, screenshot_path, 1000, wait, 1000, height) end = time.time() info("Example rendered in %s" % white("%.3fs" % (end - start))) success = result['success'] timeout = result['timeout'] errors = result['errors'] resources = result['resources'] no_errors = len(errors) == 0 no_resources = len(resources) == 0 if timeout: warn("%s: %s" % (red("TIMEOUT: "), "bokehjs did not finish in %s ms" % wait)) if pytest.config.option.verbose: _print_phantomjs_output(result) assert success, "%s failed to load" % example.relpath assert no_resources, "%s failed with %d missing resources" % ( example.relpath, len(resources)) assert no_errors, "%s failed with %d errors" % (example.relpath, len(errors))
def _assert_snapshot(example, url, example_type): screenshot_path = example.img_path width = 1000 height = 2000 if example_type == 'notebook' else 1000 local_wait = 100 global_wait = 15000 start = time.time() result = get_screenshot(url, screenshot_path, local_wait, global_wait, width, height) end = time.time() info("Example rendered in %s" % white("%.3fs" % (end - start))) success = result['success'] timeout = result['timeout'] errors = result['errors'] no_errors = len(errors) == 0 if timeout: warn("%s %s" % (red("TIMEOUT:"), "bokehjs did not finish in %s ms" % global_wait)) if pytest.config.option.verbose: _print_webengine_output(result) assert success, "%s failed to load" % example.relpath assert no_errors, "%s failed with %d errors" % (example.relpath, len(errors))
def _get_pdiff(example): img_path, ref_path, diff_path = example.img_path, example.ref_path, example.diff_path trace("generated image: " + img_path) ref = example.fetch_ref() if not ref: warn("reference image %s doesn't exist" % example.ref_url) else: ref_dir = dirname(ref_path) if not exists(ref_dir): os.makedirs(ref_dir) with open(ref_path, "wb") as f: f.write(ref) trace("saved reference: " + ref_path) example.pixels = image_diff(diff_path, img_path, ref_path) if example.pixels != 0: comment = "dimensions don't match" if example.pixels == -1 else white("%.02f%%" % example.pixels) + " of pixels" warn("generated and reference images differ: %s" % comment) else: ok("generated and reference images match")