feat: complete production naming and reference lifecycle gates
This commit is contained in:
@@ -277,8 +277,16 @@ def collect_case(case_id, factory, index, directory):
|
||||
after_stages = [entry for obj in reopened.Objects if (entry := stage_report(obj)) is not None]
|
||||
after_names = {(stage["name"], entry["name"]): entry.get("mappedName") for stage in after_stages for entry in stage["names"]}
|
||||
roundtrip_drift = sum(1 for key, value in before_names.items() if after_names.get(key) != value)
|
||||
resaved_path = os.path.join(directory, "%s-resaved.FCStd" % case_id)
|
||||
reopened.saveAs(resaved_path)
|
||||
App.closeDocument(reopened.Name)
|
||||
return {"id": case_id, "finalObject": final_name, "stages": stages, "elementMapResources": resources, "stringHasherResource": string_hasher_resource, "roundtripNameDrift": roundtrip_drift, "status": "pass"}
|
||||
resaved = App.openDocument(resaved_path)
|
||||
resaved.recompute()
|
||||
resaved_stages = [entry for obj in resaved.Objects if (entry := stage_report(obj)) is not None]
|
||||
resaved_names = {(stage["name"], entry["name"]): entry.get("mappedName") for stage in resaved_stages for entry in stage["names"]}
|
||||
resave_name_drift = sum(1 for key, value in before_names.items() if resaved_names.get(key) != value)
|
||||
App.closeDocument(resaved.Name)
|
||||
return {"id": case_id, "finalObject": final_name, "stages": stages, "elementMapResources": resources, "stringHasherResource": string_hasher_resource, "roundtripNameDrift": roundtrip_drift, "resaveNameDrift": resave_name_drift, "nativeDesktopResaveCovered": True, "status": "pass"}
|
||||
except Exception as error:
|
||||
return {"id": case_id, "finalObject": "", "stages": [], "elementMapResources": {}, "status": "failed", "error": str(error)}
|
||||
finally:
|
||||
@@ -309,6 +317,6 @@ report = {
|
||||
"gitCommit": FREECAD_COMMIT,
|
||||
"status": "pass" if len(cases) == 30 and all(case["status"] == "pass" for case in cases) else "failed",
|
||||
"cases": cases,
|
||||
"summary": {"cases": len(cases), "passed": sum(1 for case in cases if case["status"] == "pass"), "failed": sum(1 for case in cases if case["status"] != "pass")},
|
||||
"summary": {"cases": len(cases), "passed": sum(1 for case in cases if case["status"] == "pass"), "failed": sum(1 for case in cases if case["status"] != "pass"), "roundtripNameDrift": sum(case.get("roundtripNameDrift", 0) for case in cases), "resaveNameDrift": sum(case.get("resaveNameDrift", 0) for case in cases), "nativeDesktopResaveCases": sum(1 for case in cases if case.get("nativeDesktopResaveCovered") is True)},
|
||||
}
|
||||
print("FREECAD_COMPOSITE_HISTORY_ELEMENTMAP_RESULT=" + json.dumps(report, sort_keys=True, separators=(",", ":")))
|
||||
|
||||
Reference in New Issue
Block a user