aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-31 05:25:54 +0100
committertv <tv@krebsco.de>2026-10-31 05:25:54 +0100
commit1e7207b0575f59dc16a4b2fd9a92b793ff3541f8 (patch)
tree33230652742f9fa33b96a165e0a7ffb6773233e5
parent766640539b76f8d7dbbc76a8a0cd1686aa3f255b (diff)
tests: unify scratch dir logic
-rw-r--r--src/config/file.rs15
-rw-r--r--src/files.rs13
-rw-r--r--src/identity.rs13
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());
}