fix: create test and benchmark temp directories fresh, never adopt an existing one (#1977)

This commit is contained in:
Dylan M. Taylor authored and GitHub committed 2026-11-03 23:48:46 -05:00
1 parent ee4edc7364
commit 6d1b5da863
3 files changed
+9 -4

No files matched your search

+2 -1
View File
@@ -498,7 +498,8 @@ fn measure_components(table: &mut Table, col: usize, instances: usize) -> CliRes
static RUNS: std::sync::atomic::AtomicUsize = std::sync::atomic::AtomicUsize::new(0);
let run = RUNS.fetch_add(1, std::sync::atomic::Ordering::Relaxed);
let dir = std::env::temp_dir().join(format!("figcraft-perf-{}-{run}", std::process::id()));
std::fs::create_dir_all(&dir).map_err(failed)?;
// `create_dir`, not `create_dir_all`: a directory or link already at this predictable name is refused.
std::fs::create_dir(&dir).map_err(failed)?;
let path = dir.join("design-system.figcraft").to_string_lossy().into_owned();
let (lib_doc, lib_ds) = design_system_document(&spec).map_err(failed)?;
let mut lib_s = Session::with_document(lib_doc);
+3 -2
View File
@@ -153,8 +153,9 @@ fn an_image_stretched_into_its_box_stays_stretched() {
#[test]
fn linked_files_are_never_read() {
let dir = std::env::temp_dir().join("figcraft-svg-linked");
std::fs::create_dir_all(&dir).unwrap();
let dir = std::env::temp_dir().join(format!("figcraft-svg-linked-{}", std::process::id()));
// `create_dir` refuses a directory or link someone else planted at this name.
std::fs::create_dir(&dir).unwrap();
let png = dir.join("secret.png");
std::fs::write(&png, base64::Engine::decode(&base64::engine::general_purpose::STANDARD, PNG).unwrap()).unwrap();
let href = png.to_string_lossy().replace('\\', "/");
+4 -1
View File
@@ -139,7 +139,10 @@ fn macos_font_assets_are_found_in_the_asset_store() {
let _ = std::fs::remove_dir_all(&self.0);
}
}
let tmp = TempDir(std::env::temp_dir().join(format!("figcraft-font-assets-{}", std::process::id())));
// Created fresh: a directory or link already at this predictable name is refused, and not removed.
let root = std::env::temp_dir().join(format!("figcraft-font-assets-{}", std::process::id()));
std::fs::create_dir(&root).unwrap();
let tmp = TempDir(root);
let store = tmp.0.join("AssetsV2");
let fonts = store.join("com_apple_MobileAsset_Font7");
let data = |kind: &std::path::Path| kind.join("0f1e2d.asset").join("AssetData");