diff options
Diffstat (limited to 'tests/compare.rs')
| -rw-r--r-- | tests/compare.rs | 24 |
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()); +} |