lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

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:
Mcrates/runtime/src/secret_file/tests.rs | 43+++++++++++++++++++++++++++++++++++++++++++
Mcrates/runtime/src/tracing/tests.rs | 15++++++++++++---
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);