lib

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

commit 56e130e200c87eeb892405db88efe11c52dbebed
parent b960684682cce44f5dd1593d761fc0f2a575c83e
Author: triesap <tyson@radroots.org>
Date:   Thu, 13 Aug 2026 19:10:28 +0000

test: close service host coverage gate

Diffstat:
Mcrates/service_host/src/admin/server.rs | 36++++++++++++++++++++++++++++++++++++
Mcrates/service_host/src/config/value.rs | 8++++++++
Mcrates/service_host/src/lifecycle/signal.rs | 3+++
Mcrates/service_host/src/lifecycle/task.rs | 7+++++++
4 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/crates/service_host/src/admin/server.rs b/crates/service_host/src/admin/server.rs @@ -2058,6 +2058,42 @@ mod tests { #[test] fn strict_json_routes_accessors_and_safe_errors_cover_the_full_value_surface() { + assert!(valid_parameter_name("item_1")); + for rejected in [ + "", + "1item", + "Item", + "item-name", + &"x".repeat(ADMIN_ROUTE_PARAMETER_NAME_MAX_UTF8_BYTES + 1), + ] { + assert!(!valid_parameter_name(rejected)); + } + assert_eq!(decode_route_parameter(""), None); + assert_eq!(decode_route_parameter("plain"), Some("plain".to_owned())); + + for path in ["/", "/v", "/v1", "/version2", "/v2beta"] { + assert!(!unknown_major_version(path), "{path}"); + } + for path in ["/v0", "/v2", "/v99/status"] { + assert!(unknown_major_version(path), "{path}"); + } + assert_eq!(query_item_count(None), 0); + assert_eq!(query_item_count(Some("")), 0); + assert_eq!(query_item_count(Some("one")), 1); + assert_eq!(query_item_count(Some("one&two")), 2); + + let mut headers = HeaderMap::new(); + assert!(!is_json_content_type(&headers)); + headers.insert(CONTENT_TYPE, HeaderValue::from_static(JSON_CONTENT_TYPE)); + assert!(is_json_content_type(&headers)); + headers.insert( + CONTENT_TYPE, + HeaderValue::from_static("application/json; charset=utf-8"), + ); + assert!(is_json_content_type(&headers)); + headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/plain")); + assert!(!is_json_content_type(&headers)); + for (document, expected) in [ ("true", Value::Bool(true)), ("-7", Value::Number((-7).into())), diff --git a/crates/service_host/src/config/value.rs b/crates/service_host/src/config/value.rs @@ -698,6 +698,10 @@ mod tests { #[test] fn optional_operations_bind_is_explicit_redacted_and_policy_checked() { + assert_eq!( + OptionalOperationsBind::disabled(), + OptionalOperationsBind::default() + ); let disabled: OptionalOperationsBind = "disabled".parse().unwrap(); assert!(!disabled.is_enabled()); assert_eq!(disabled.address(), None); @@ -713,6 +717,10 @@ mod tests { ); let loopback: OptionalOperationsBind = "127.0.0.1:9100".parse().unwrap(); + assert_eq!( + OptionalOperationsBind::listen(loopback.address().unwrap()), + loopback + ); assert!(loopback.is_enabled()); assert_eq!(loopback.to_string(), "127.0.0.1:9100"); assert!(!format!("{loopback:?}").contains("127.0.0.1")); diff --git a/crates/service_host/src/lifecycle/signal.rs b/crates/service_host/src/lifecycle/signal.rs @@ -227,5 +227,8 @@ mod tests { assert_eq!(ProcessSignal::Interrupt.as_str(), "interrupt"); #[cfg(unix)] assert_eq!(ProcessSignal::Terminate.as_str(), "terminate"); + + let adapter = ProcessSignalAdapter::new(InjectedSignals::new([ProcessSignal::Interrupt])); + assert_eq!(adapter.into_inner().events.len(), 1); } } diff --git a/crates/service_host/src/lifecycle/task.rs b/crates/service_host/src/lifecycle/task.rs @@ -226,6 +226,13 @@ mod tests { ) .is_ok() ); + let optional = TaskMetadata::new( + name(), + TaskClassification::Optional, + Some(ShutdownPhase::CloseNetwork), + ) + .unwrap(); + assert_eq!(optional.shutdown_phase(), Some(ShutdownPhase::CloseNetwork)); assert_eq!( TaskMetadata::new(name(), TaskClassification::Optional, None), Err(TaskMetadataError::InvalidShutdownPhaseAssignment)