1234567891011121314151617181920212223242526272829303132333435363738394041 |
- # Copyright (c) Jupyter Development Team.
- # Distributed under the terms of the Modified BSD License.
- import argparse
- import hashlib
- import json
- import shutil
- from pathlib import Path
- parser = argparse.ArgumentParser(description="Update Galata Snapshot images.")
- parser.add_argument("report", help="Path to the galata-report directory")
- args = parser.parse_args()
- # Calculate hashes of all png files in the test/directory
- def sha1(path):
- with open(path, "rb") as f:
- return hashlib.sha1(f.read()).hexdigest()
- filehashes = {sha1(p): p for p in Path(".").glob("**/*-snapshots/*-linux.png")}
- # For every json file in data directory except report.json
- data_dir = Path(args.report).expanduser().resolve() / "data"
- for p in data_dir.glob("*.json"):
- if p.name == "report.json":
- continue
- with open(p, "rb") as f:
- z = json.load(f)
- for t in z["tests"]:
- if t["outcome"] != "unexpected":
- continue
- for r in t["results"]:
- for attachment in r["attachments"]:
- if attachment["name"] == "expected":
- expected = Path(attachment["path"]).stem
- elif attachment["name"] == "actual":
- actual = data_dir / Path(attachment["path"]).name
- if expected and attachment and expected in filehashes:
- shutil.copyfile(actual, filehashes[expected])
- print(f"{actual} -> {filehashes[expected]}")
|