summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHermes Agent <hermes@localhost>2026-08-12 04:10:14 +0000
committerHermes Agent <hermes@localhost>2026-08-12 04:10:14 +0000
commitfc4e46c41bfb769193159143f6567341cd3e3a51 (patch)
tree5fac35118f11f71ae6f31e9f7fac4b80508fdf76 /tests
parent196f315321643a0ce2327f750c779a7d40e4b427 (diff)
Validate semantic file record invariants
Diffstat (limited to 'tests')
-rw-r--r--tests/compare.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/compare.rs b/tests/compare.rs
index 43c91e0..45522d1 100644
--- a/tests/compare.rs
+++ b/tests/compare.rs
@@ -173,6 +173,39 @@ fn rejects_duplicate_semantic_keys() {
}
#[test]
+fn rejects_malformed_file_records_before_comparison() {
+ let error = ArtifactManifest::new(
+ vec![],
+ vec![FileRecord {
+ path: "etc/controller.conf".into(),
+ kind: "file".into(),
+ digest: None,
+ target: None,
+ }],
+ None,
+ vec![],
+ vec![],
+ )
+ .expect_err("regular files require a digest");
+ assert!(error.to_string().contains("regular file record requires a digest"));
+
+ let error = ArtifactManifest::new(
+ vec![],
+ vec![FileRecord {
+ path: "etc/controller-link".into(),
+ kind: "symlink".into(),
+ digest: Some("not-applicable".into()),
+ target: Some("controller.conf".into()),
+ }],
+ None,
+ vec![],
+ vec![],
+ )
+ .expect_err("symlinks cannot carry a digest");
+ assert!(error.to_string().contains("symlink record cannot carry a digest"));
+}
+
+#[test]
fn collects_semantic_facts_from_native_rootfs_and_tar_artifact() {
let fixture = tempdir().expect("temporary directory");
let rootfs = fixture.path().join("rootfs");