Skip to content

Commit bffbb16

Browse files
committed
pcf-compact: test compacting a trailer-mode input
1 parent e7066b1 commit bffbb16

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

tools/pcf-compact/tests/integration.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,31 @@ fn format_size_smoke() {
187187
assert_eq!(format_size(1024), "1 KiB");
188188
assert_eq!(format_size(1536), "1.5 KiB");
189189
}
190+
191+
#[test]
192+
fn compacts_trailer_mode_input() {
193+
// A trailer-mode (sentinel header) input must compact transparently via
194+
// Container::open into a valid canonical (header-mode) image.
195+
let bytes = {
196+
let mut c = Container::create_with(Cursor::new(Vec::new()), 8, HashAlgo::Sha256).unwrap();
197+
for i in 1..=3u8 {
198+
c.add_partition(
199+
i as u32,
200+
uid(i),
201+
&format!("f{i}"),
202+
&[i; 32],
203+
4096,
204+
HashAlgo::Sha256,
205+
)
206+
.unwrap();
207+
}
208+
c.finalize_with_trailer().unwrap();
209+
c.into_storage().into_inner()
210+
};
211+
212+
let compacted = compact_bytes(&bytes, true, true).unwrap();
213+
// Output is canonical header-mode (smaller; no sentinel/trailer needed).
214+
assert!(compacted.len() < bytes.len());
215+
let mut c = Container::open(Cursor::new(compacted)).unwrap();
216+
assert_eq!(c.entries().unwrap().len(), 3);
217+
}

0 commit comments

Comments
 (0)