v0.1.2-pre.002
This commit is contained in:
102
crates/ksp-logging-lib/unit_tests/settings.rs
Normal file
102
crates/ksp-logging-lib/unit_tests/settings.rs
Normal 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());
|
||||
}
|
||||
22
crates/ksp-logging-lib/unit_tests/span.rs
Normal file
22
crates/ksp-logging-lib/unit_tests/span.rs
Normal 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));
|
||||
}
|
||||
Reference in New Issue
Block a user