diff options
| author | tv <tv@krebsco.de> | 2026-10-31 05:25:54 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-31 05:25:54 +0100 |
| commit | 4a42f2791292104059fc5daf9c9fddc5d9b249d3 (patch) | |
| tree | e911f3b2da198c6af91a42cdb313d377d077b0c7 | |
| parent | ec85763bf5345a394b6cad7c609867a4e04f659b (diff) | |
tests: unify scratch dir logic
| -rw-r--r-- | src/config/file.rs | 15 | ||||
| -rw-r--r-- | src/files.rs | 13 | ||||
| -rw-r--r-- | src/identity.rs | 13 |
3 files changed, 18 insertions, 23 deletions
diff --git a/src/config/file.rs b/src/config/file.rs index 114d452..fbbd89a 100644 --- a/src/config/file.rs +++ b/src/config/file.rs @@ -169,6 +169,7 @@ fn flatten( #[cfg(test)] mod tests { use super::*; + use crate::files::scratch_dir; use serde_json::json; fn write(dir: &Path, name: &str, text: &str) -> PathBuf { @@ -177,17 +178,9 @@ mod tests { path } - fn scratch(name: &str) -> PathBuf { - let dir = - std::env::temp_dir().join(format!("continuum-config-{name}-{}", std::process::id())); - let _ = std::fs::remove_dir_all(&dir); - std::fs::create_dir_all(&dir).unwrap(); - dir - } - #[test] fn includes_tables_and_importers() { - let dir = scratch("includes"); + let dir = scratch_dir("config-includes"); write(&dir, "key-path", "/run/secrets/swarm-key\n"); write( &dir, @@ -218,7 +211,7 @@ mod tests { #[test] fn unset() { - let dir = scratch("unset"); + let dir = scratch_dir("config-unset"); write( &dir, "base.toml", @@ -246,7 +239,7 @@ mod tests { #[test] fn errors() { - let dir = scratch("errors"); + let dir = scratch_dir("config-errors"); let unknown = write(&dir, "unknown.toml", "nieghbours = 3\n"); assert!(load(&unknown).is_err()); let cycle = write(&dir, "cycle.toml", "include = [\"cycle.toml\"]\n"); diff --git a/src/files.rs b/src/files.rs index 0ec741e..e27bde6 100644 --- a/src/files.rs +++ b/src/files.rs @@ -173,14 +173,23 @@ fn with_suffix(path: &Path, suffix: &str) -> PathBuf { PathBuf::from(name) } +/// An empty directory for the test `name`: `continuum-<name>-<process ID>` in the +/// temporary directory, emptied first. +#[cfg(test)] +pub(crate) fn scratch_dir(name: &str) -> PathBuf { + let dir = std::env::temp_dir().join(format!("continuum-{name}-{}", std::process::id())); + let _ = std::fs::remove_dir_all(&dir); + std::fs::create_dir_all(&dir).unwrap(); + dir +} + #[cfg(test)] mod tests { use super::*; #[test] fn writes_reads_and_counts() { - let dir = std::env::temp_dir().join(format!("continuum-files-{}", std::process::id())); - std::fs::create_dir_all(&dir).unwrap(); + let dir = scratch_dir("files"); let path = dir.join("state.json"); let files = Files::default(); diff --git a/src/identity.rs b/src/identity.rs index 93d8739..96e524e 100644 --- a/src/identity.rs +++ b/src/identity.rs @@ -129,18 +129,11 @@ pub(crate) fn is_node_id(id: &str) -> bool { #[cfg(test)] mod tests { use super::*; - - fn scratch(name: &str) -> std::path::PathBuf { - let dir = - std::env::temp_dir().join(format!("continuum-identity-{name}-{}", std::process::id())); - let _ = std::fs::remove_dir_all(&dir); - std::fs::create_dir_all(&dir).unwrap(); - dir - } + use crate::files::scratch_dir; #[test] fn created_only_when_asked_and_then_kept() { - let path = scratch("create").join("node.key"); + let path = scratch_dir("identity-create").join("node.key"); assert!(NodeKey::load(&path, false).is_err()); assert!(!path.exists()); @@ -160,7 +153,7 @@ mod tests { #[test] fn a_key_of_the_wrong_size_is_refused() { - let path = scratch("size").join("node.key"); + let path = scratch_dir("identity-size").join("node.key"); std::fs::write(&path, [7u8; 16]).unwrap(); assert!(NodeKey::load(&path, true).is_err()); } |
