summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/compare.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/compare.rs b/tests/compare.rs
index 63e4a4f..2dfd46d 100644
--- a/tests/compare.rs
+++ b/tests/compare.rs
@@ -371,3 +371,27 @@ fn archive_collection_coalesces_a_service_enabled_by_multiple_targets() {
assert_eq!(manifest.services, vec![ServiceRecord::new("controller.service", true)]);
}
+
+#[test]
+fn archive_collection_only_treats_direct_target_wants_symlinks_as_enabled_services() {
+ let fixture = tempdir().expect("temporary directory");
+ let artifact = fixture.path().join("malformed-service-state.tar");
+ let file = fs::File::create(&artifact).expect("create archive");
+ let mut archive = tar::Builder::new(file);
+ let mut header = tar::Header::new_gnu();
+ header.set_entry_type(tar::EntryType::Symlink);
+ header.set_size(0);
+ header.set_cksum();
+ archive
+ .append_link(
+ &mut header,
+ "etc/systemd/system/multi-user.target.wants/nested/controller.service",
+ "/usr/lib/systemd/system/controller.service",
+ )
+ .expect("append nested symlink");
+ archive.finish().expect("finish archive");
+
+ let manifest = ArtifactManifest::collect_archive(&artifact).expect("collect archive facts");
+
+ assert!(manifest.services.is_empty());
+}