From 3a47e14cbe6e15de0758c8bd4233a8d84ff80aa8 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Wed, 12 Aug 2026 05:12:40 +0000 Subject: Reject archive outputs inside rootfs --- tests/archive.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tests/archive.rs') diff --git a/tests/archive.rs b/tests/archive.rs index da3e66a..6f803ef 100644 --- a/tests/archive.rs +++ b/tests/archive.rs @@ -107,6 +107,23 @@ fn rejects_a_missing_rootfs() { assert!(error.to_string().contains("rootfs is not a directory")); } +#[test] +fn rejects_an_archive_output_inside_the_rootfs() { + let fixture = tempdir().expect("fixture directory"); + let rootfs = fixture.path().join("rootfs"); + fs::create_dir_all(rootfs.join("etc")).expect("create rootfs"); + fs::write(rootfs.join("etc/controller.conf"), "controller=true\n").expect("write rootfs file"); + let artifact = rootfs.join("controller.tar"); + + let error = NativeTarWriter::new() + .write(&rootfs, &artifact) + .expect_err("archive output inside rootfs must be rejected"); + + assert!(error.to_string().contains("archive output must not be inside rootfs")); + assert!(!artifact.exists()); + assert!(!rootfs.join("controller.tar.partial").exists()); +} + #[test] fn removes_partial_output_when_an_unsupported_entry_stops_packaging() { let fixture = tempdir().expect("fixture directory"); -- cgit v1.2.3