103 lines
4.1 KiB
Rust
103 lines
4.1 KiB
Rust
// 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());
|
|
}
|