v0.1.2-pre.002

This commit is contained in:
2026-08-14 18:03:20 +02:00
parent bd8401c0d0
commit 7b4444fb07
14 changed files with 1067 additions and 26 deletions

View File

@@ -0,0 +1,102 @@
// file: crates/ksp-logging-lib/unit_tests/settings.rs
// version: 1
#[test]
fn level_variants_are_distinct() {
assert_ne!(crate::LogFilterLevel::Off, crate::LogFilterLevel::Error);
assert_ne!(crate::LogFilterLevel::Error, crate::LogFilterLevel::Warn);
assert_ne!(crate::LogFilterLevel::Warn, crate::LogFilterLevel::Info);
assert_ne!(crate::LogFilterLevel::Info, crate::LogFilterLevel::Debug);
assert_ne!(crate::LogFilterLevel::Debug, crate::LogFilterLevel::Trace);
}
#[test]
fn target_filter_preserves_prefix_and_level() {
let filter = crate::TargetFilter::new("ksp-store-lib", crate::LogFilterLevel::Trace);
assert_eq!(filter.target_prefix(), "ksp-store-lib");
assert_eq!(filter.level(), crate::LogFilterLevel::Trace);
}
#[test]
fn console_settings_select_requested_stream() {
assert_eq!(crate::ConsoleSettings::stdout().output(), crate::ConsoleOutput::Stdout);
assert_eq!(crate::ConsoleSettings::stderr().output(), crate::ConsoleOutput::Stderr);
}
#[test]
fn file_settings_preserve_values() {
let settings = crate::FileSettings::new("logs", "ksp", crate::FileRotation::Daily);
assert_eq!(settings.directory(), std::path::Path::new("logs"));
assert_eq!(settings.file_name_prefix(), "ksp");
assert_eq!(settings.rotation(), crate::FileRotation::Daily);
}
#[test]
fn logging_settings_preserve_explicit_values() {
let settings = crate::LoggingSettings::new(
crate::LogFilterLevel::Info,
crate::SpanEvents::NewAndClose,
std::option::Option::Some(crate::ConsoleSettings::stdout()),
std::option::Option::Some(crate::FileSettings::new("logs", "ksp", crate::FileRotation::Hourly)),
)
.with_target_filter(crate::TargetFilter::new("ksp-store-lib", crate::LogFilterLevel::Trace));
assert_eq!(settings.default_filter(), crate::LogFilterLevel::Info);
assert_eq!(settings.span_events(), crate::SpanEvents::NewAndClose);
assert_eq!(settings.target_filters().len(), 1);
assert_eq!(settings.target_filters()[0].target_prefix(), "ksp-store-lib");
assert_eq!(settings.console(), std::option::Option::Some(&crate::ConsoleSettings::stdout()));
assert_eq!(settings.file().map(crate::FileSettings::rotation), std::option::Option::Some(crate::FileRotation::Hourly));
}
#[test]
fn validation_rejects_empty_target_prefix() {
let settings = crate::LoggingSettings::new(
crate::LogFilterLevel::Info,
crate::SpanEvents::Off,
std::option::Option::Some(crate::ConsoleSettings::stdout()),
std::option::Option::None,
)
.with_target_filter(crate::TargetFilter::new("", crate::LogFilterLevel::Debug));
assert!(settings.validate().is_err());
}
#[test]
fn validation_rejects_external_target_prefix() {
let settings = crate::LoggingSettings::new(
crate::LogFilterLevel::Info,
crate::SpanEvents::Off,
std::option::Option::Some(crate::ConsoleSettings::stdout()),
std::option::Option::None,
)
.with_target_filter(crate::TargetFilter::new("sqlx", crate::LogFilterLevel::Debug));
assert!(settings.validate().is_err());
}
#[test]
fn validation_rejects_empty_file_prefix() {
let settings = crate::LoggingSettings::new(
crate::LogFilterLevel::Info,
crate::SpanEvents::Off,
std::option::Option::None,
std::option::Option::Some(crate::FileSettings::new("logs", "", crate::FileRotation::Never)),
);
assert!(settings.validate().is_err());
}
#[test]
fn validation_accepts_ksp_outputs_and_filters() {
let settings = crate::LoggingSettings::new(
crate::LogFilterLevel::Info,
crate::SpanEvents::Full,
std::option::Option::Some(crate::ConsoleSettings::stderr()),
std::option::Option::Some(crate::FileSettings::new("logs", "worker", crate::FileRotation::Daily)),
)
.with_target_filter(crate::TargetFilter::new("ksp-worker-", crate::LogFilterLevel::Debug));
assert!(settings.validate().is_ok());
}
#[test]
fn settings_allow_logging_to_be_disabled() {
let settings = crate::LoggingSettings::new(crate::LogFilterLevel::Off, crate::SpanEvents::Off, std::option::Option::None, std::option::Option::None);
assert!(settings.validate().is_ok());
}

View File

@@ -0,0 +1,22 @@
// file: crates/ksp-logging-lib/unit_tests/span.rs
// version: 1
#[test]
fn synchronous_scope_returns_operation_value() {
let span = crate::Span::__from_tracing(tracing::info_span!("unit_test_span"));
let value = span.in_scope(|| -> u32 {
return 42;
});
assert_eq!(value, 42);
}
#[test]
fn async_instrumentation_returns_future_output() {
let span = crate::Span::__from_tracing(tracing::info_span!("unit_test_async_span"));
let future = crate::instrument(span, std::future::ready(42_u32));
let mut future = std::boxed::Box::pin(future);
let waker = std::task::Waker::noop();
let mut context = std::task::Context::from_waker(waker);
let poll = std::future::Future::poll(future.as_mut(), &mut context);
assert_eq!(poll, std::task::Poll::Ready(42_u32));
}