commit 3196fb44355b7e7d578e511d8e21c74eda49aec3
parent 70289e9930135b87f9a78bd082d457a33aacee17
Author: triesap <tyson@radroots.org>
Date: Fri, 10 Apr 2026 22:37:18 +0000
runtime: cover parentless and fallback paths
Diffstat:
2 files changed, 55 insertions(+), 3 deletions(-)
diff --git a/crates/runtime/src/secret_file/tests.rs b/crates/runtime/src/secret_file/tests.rs
@@ -3,6 +3,13 @@ use super::{
open_local_secret_file, seal_local_secret_file,
};
use radroots_secret_vault::RadrootsSecretKeyWrapping;
+use std::path::PathBuf;
+use std::sync::{Mutex, OnceLock};
+
+fn cwd_lock() -> &'static Mutex<()> {
+ static LOCK: OnceLock<Mutex<()>> = OnceLock::new();
+ LOCK.get_or_init(|| Mutex::new(()))
+}
#[test]
fn secret_file_round_trips_with_sidecar_key() {
@@ -209,3 +216,39 @@ fn open_local_secret_file_reports_decode_error_for_invalid_payload() {
assert_eq!(err_path, &path);
}
}
+
+#[test]
+fn local_wrapped_key_source_creates_key_for_parentless_paths() {
+ let _guard = cwd_lock().lock().expect("cwd lock");
+ let temp = tempfile::tempdir().expect("tempdir");
+ let original = std::env::current_dir().expect("current dir");
+ std::env::set_current_dir(temp.path()).expect("switch cwd");
+
+ let path = PathBuf::from("identity.secret.json");
+ let source = LocalWrappedKeySource::new(&path);
+ let loaded = source
+ .load_or_create_wrapping_key()
+ .expect("parentless path should create key");
+
+ assert_eq!(loaded.len(), super::RADROOTS_PROTECTED_STORE_KEY_LENGTH);
+ assert!(local_wrapping_key_path(&path).is_file());
+
+ std::env::set_current_dir(original).expect("restore cwd");
+}
+
+#[test]
+fn seal_local_secret_file_allows_parentless_paths() {
+ let _guard = cwd_lock().lock().expect("cwd lock");
+ let temp = tempfile::tempdir().expect("tempdir");
+ let original = std::env::current_dir().expect("current dir");
+ std::env::set_current_dir(temp.path()).expect("switch cwd");
+
+ let path = PathBuf::from("identity.secret.json");
+ seal_local_secret_file(&path, "runtime_test_identity", b"payload")
+ .expect("parentless path should seal");
+ let payload =
+ open_local_secret_file(&path, "runtime_test_identity").expect("parentless path opens");
+ assert_eq!(payload, b"payload");
+
+ std::env::set_current_dir(original).expect("restore cwd");
+}
diff --git a/crates/runtime/src/tracing/tests.rs b/crates/runtime/src/tracing/tests.rs
@@ -1,7 +1,8 @@
use super::{
- default_log_file_name, default_log_file_name_from_exe_name, default_shared_runtime_logs_dir,
- default_shared_runtime_logs_dir_for, env_value, init, init_with_logs_dir, log_name_from_path,
- log_name_from_stem, normalize_env_value, resolve_default_level, test_hooks,
+ current_path_resolver, default_log_file_name, default_log_file_name_from_exe_name,
+ default_shared_runtime_logs_dir, default_shared_runtime_logs_dir_for, env_value, init,
+ init_with_logs_dir, log_name_from_path, log_name_from_stem, normalize_env_value,
+ resolve_default_level, test_hooks,
};
use radroots_runtime_paths::{
RadrootsHostEnvironment, RadrootsPathOverrides, RadrootsPathProfile, RadrootsPathResolver,
@@ -116,6 +117,14 @@ fn default_shared_runtime_logs_dir_and_init_use_current_resolver() {
}
#[test]
+fn current_path_resolver_falls_back_when_no_override_is_set() {
+ test_hooks::set_current_resolver(None);
+ let expected = format!("{:?}", RadrootsPathResolver::current());
+ let actual = format!("{:?}", current_path_resolver());
+ assert_eq!(actual, expected);
+}
+
+#[test]
fn init_paths_execute() {
let dir = tempdir().expect("tempdir");
test_hooks::set_ignore_env(true);