From af7381301d2d1f94e163365b00f98a088bbcdc0f Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Tue, 3 Nov 2026 11:47:10 +0000 Subject: [PATCH] test(export): write the LibreOffice check into a fresh private folder --- crates/export/src/pptx/tests.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/crates/export/src/pptx/tests.rs b/crates/export/src/pptx/tests.rs index 2e1c1bd046..3f5a3eba6c 100644 --- a/crates/export/src/pptx/tests.rs +++ b/crates/export/src/pptx/tests.rs @@ -376,9 +376,16 @@ fn pptx_table_cell_with_largest_font_stays_in_table_and_not_in_title() { fn pptx_opens_in_libreoffice() { let p = sample_page(); let bytes = pptx(&[p], "LibreOffice Check"); - let dir = std::env::temp_dir().join(format!("pdfcraft-pptx-lo-{}", std::process::id())); - let _ = std::fs::remove_dir_all(&dir); - let _ = std::fs::create_dir_all(&dir); + // A new folder of our own, never one left (or planted) at a guessable name. + let nanos = std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).map_or(0, |d| d.as_nanos()); + let dir = std::env::temp_dir().join(format!("pdfcraft-pptx-lo-{}-{nanos:x}", std::process::id())); + let mut made = std::fs::DirBuilder::new(); + #[cfg(unix)] + { + use std::os::unix::fs::DirBuilderExt as _; + made.mode(0o700); + } + made.create(&dir).expect("a fresh test folder"); let pptx_path = dir.join("test.pptx"); std::fs::write(&pptx_path, &bytes).unwrap();