// file: crates/ksp-logging-lib/unit_tests/runtime.rs // version: 2 #[test] fn level_mapping_covers_all_ksp_levels() { assert_eq!(super::map_filter_level(crate::LogFilterLevel::Off), tracing_subscriber::filter::LevelFilter::OFF); assert_eq!(super::map_filter_level(crate::LogFilterLevel::Error), tracing_subscriber::filter::LevelFilter::ERROR); assert_eq!(super::map_filter_level(crate::LogFilterLevel::Warn), tracing_subscriber::filter::LevelFilter::WARN); assert_eq!(super::map_filter_level(crate::LogFilterLevel::Info), tracing_subscriber::filter::LevelFilter::INFO); assert_eq!(super::map_filter_level(crate::LogFilterLevel::Debug), tracing_subscriber::filter::LevelFilter::DEBUG); assert_eq!(super::map_filter_level(crate::LogFilterLevel::Trace), tracing_subscriber::filter::LevelFilter::TRACE); } #[test] fn takeover_filter_silences_external_targets_and_applies_ksp_overrides() { 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("ksp-logging-lib", crate::LogFilterLevel::Trace)); let filter = super::build_target_filter(&settings); assert!(filter.would_enable("ksp-store-lib", &tracing::Level::INFO)); assert!(!filter.would_enable("ksp-store-lib", &tracing::Level::DEBUG)); assert!(filter.would_enable("ksp-logging-lib", &tracing::Level::TRACE)); assert!(!filter.would_enable("sqlx", &tracing::Level::ERROR)); assert!(!filter.would_enable("hyper", &tracing::Level::ERROR)); } #[test] fn span_event_mapping_supports_disabled_timing_and_full_lifecycle() { assert_eq!(super::map_span_events(crate::SpanEvents::Off), tracing_subscriber::fmt::format::FmtSpan::NONE); assert_eq!( super::map_span_events(crate::SpanEvents::NewAndClose), tracing_subscriber::fmt::format::FmtSpan::NEW | tracing_subscriber::fmt::format::FmtSpan::CLOSE, ); assert_eq!(super::map_span_events(crate::SpanEvents::Full), tracing_subscriber::fmt::format::FmtSpan::FULL); } #[test] fn file_output_is_rejected_until_file_runtime_is_introduced() { let settings = crate::LoggingSettings::new( crate::LogFilterLevel::Info, crate::SpanEvents::Off, std::option::Option::None, std::option::Option::Some(crate::FileSettings::new("logs", "ksp", crate::FileRotation::Daily)), ); let result = super::prepare_runtime_layers(&settings); assert!(result.is_err()); let error = match result { std::result::Result::Ok(_) => return, std::result::Result::Err(error) => error, }; assert_eq!(error.code(), crate::ERROR_CODE_INVALID_SETTINGS); } #[test] fn console_runtime_keeps_takeover_filter_separate_from_formatter() { let settings = crate::LoggingSettings::new( crate::LogFilterLevel::Info, crate::SpanEvents::Off, std::option::Option::Some(crate::ConsoleSettings::stdout()), std::option::Option::None, ); let result = super::prepare_runtime_layers(&settings); assert!(result.is_ok()); let layers = match result { std::result::Result::Ok(layers) => layers, std::result::Result::Err(_) => return, }; assert_eq!(layers.len(), 2); }