From b0fb6f3a39bdd84d28c1906626a009be5276bfc1 Mon Sep 17 00:00:00 2001 From: Roman Inflianskas Date: Thu, 15 Oct 2026 08:54:54 +0000 Subject: [PATCH] test(archive-props): pin that an absolute-named symlink keeps its target moved_one_level_down returns an entry with an absolute name untouched, before it looks at a symlink target. No case combined an absolute name with a symlink, so hoisting the target's ../ above that early return stayed green. Add one per absolute spelling. Signed-off-by: Roman Inflianskas --- apps/rocm/src/comfyui.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apps/rocm/src/comfyui.rs b/apps/rocm/src/comfyui.rs index de18e6cb5..6b1a74e1e 100644 --- a/apps/rocm/src/comfyui.rs +++ b/apps/rocm/src/comfyui.rs @@ -4922,6 +4922,19 @@ mod archive_properties { "name {} was moved", String::from_utf8_lossy(name) ); + // An absolute-named symlink is left whole: its relative target + // does not gain the `../` a moved link gets. + let link = moved_one_level_down(Entry { + name: name.to_vec(), + kind: Kind::Symlink(b"t".to_vec()), + mode: 0o777, + }); + assert_eq!(link.name, name, "name {}", String::from_utf8_lossy(name)); + assert!( + matches!(&link.kind, Kind::Symlink(t) if t == b"t"), + "target of {} was rewritten", + String::from_utf8_lossy(name) + ); } }