feat: complete S-52 resource contract
This commit is contained in:
@@ -496,7 +496,58 @@ def finalize_release(
|
||||
else "FAIL"
|
||||
)
|
||||
|
||||
s52_resource_contract = {
|
||||
"status": "NOT_APPLICABLE",
|
||||
"path": plan.get("s52_resource_contract_path"),
|
||||
"sha256": None,
|
||||
"expected_sha256": (plan.get("s52") or {}).get("resource_contract_sha256"),
|
||||
"defined_resource_counts": None,
|
||||
"active_resource_counts": None,
|
||||
"failures": [],
|
||||
}
|
||||
expected_resource_sha = str(
|
||||
(plan.get("s52") or {}).get("resource_contract_sha256") or ""
|
||||
)
|
||||
if expected_resource_sha:
|
||||
resource_path_raw = plan.get("s52_resource_contract_path")
|
||||
resource_failures: list[str] = []
|
||||
resource_obj: dict[str, Any] = {}
|
||||
if not resource_path_raw:
|
||||
resource_failures.append("missing_resource_contract_path")
|
||||
else:
|
||||
resource_path = Path(resource_path_raw)
|
||||
if not resource_path.exists():
|
||||
resource_failures.append("resource_contract_file_missing")
|
||||
else:
|
||||
actual_sha = sha256_file(resource_path)
|
||||
s52_resource_contract["sha256"] = actual_sha
|
||||
if actual_sha != expected_resource_sha:
|
||||
resource_failures.append("resource_contract_sha256_mismatch")
|
||||
try:
|
||||
resource_obj = json.loads(
|
||||
resource_path.read_text(encoding="utf-8")
|
||||
)
|
||||
except Exception as exc:
|
||||
resource_failures.append(
|
||||
f"resource_contract_parse_error:{type(exc).__name__}"
|
||||
)
|
||||
else:
|
||||
if resource_obj.get("status") != "PASS":
|
||||
resource_failures.append("resource_contract_not_pass")
|
||||
s52_resource_contract["defined_resource_counts"] = (
|
||||
resource_obj.get("defined_resource_counts")
|
||||
)
|
||||
s52_resource_contract["active_resource_counts"] = (
|
||||
resource_obj.get("active_resource_counts")
|
||||
)
|
||||
s52_resource_contract["failures"] = resource_failures
|
||||
s52_resource_contract["status"] = (
|
||||
"PASS" if not resource_failures else "FAIL"
|
||||
)
|
||||
|
||||
failures = []
|
||||
if expected_resource_sha and s52_resource_contract["status"] != "PASS":
|
||||
failures.append("s52_resource_contract")
|
||||
if tile_enumeration_mode == "aoi-complete":
|
||||
if len(report_files) != int(plan["job_count"]):
|
||||
failures.append("aoi_complete_report_count_mismatch")
|
||||
@@ -537,6 +588,7 @@ def finalize_release(
|
||||
"tile_footprint_contract": tile_footprint_contract,
|
||||
"s52": plan.get("s52"),
|
||||
"aoi": plan.get("aoi"),
|
||||
"s52_resource_contract": s52_resource_contract,
|
||||
"s52_runtime_contract": s52_runtime_contract,
|
||||
"style_sha256": style_sha,
|
||||
"sprite_json_sha256": sprite_sha,
|
||||
|
||||
Reference in New Issue
Block a user