use vyre_conform::published::{fingerprint_spec, published_hash, PUBLISHED_SPEC_HASHES};
use vyre_conform::registry::all_specs;
#[test]
fn published_specs_have_not_drifted() {
let specs = all_specs();
for published in PUBLISHED_SPEC_HASHES {
let spec = specs
.iter()
.find(|spec| spec.id == published.id && spec.version == published.version)
.unwrap_or_else(|| {
panic!(
"{} v{} was removed from the registry. Fix: published specs are immutable; restore it.",
published.id, published.version
)
});
let fingerprint = fingerprint_spec(spec).unwrap_or_else(|e| {
panic!(
"{} v{} fingerprint failed: {}. Fix: ensure CPU reference is panic-free.",
spec.id, spec.version, e
)
});
assert_eq!(
fingerprint, published.fingerprint,
"{} v{} semantic fingerprint changed. Fix: restore cpu_fn/laws or add a new version.",
spec.id, spec.version
);
}
}
#[test]
fn registry_specs_are_published() {
for spec in all_specs() {
assert!(
published_hash(spec.id, spec.version).is_some(),
"{} v{} is not in PUBLISHED_SPEC_HASHES. Fix: commit the fingerprint before publishing.",
spec.id,
spec.version
);
}
}