v0.1.2-pre.004-fix.003

This commit is contained in:
2026-08-14 19:37:37 +02:00
parent 37f53f3080
commit d55903b13e
5 changed files with 147 additions and 14 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-logging-lib/src/runtime.rs
// version: 5
// version: 6
use tracing_subscriber::Layer; // rust-rules: trait-import
use tracing_subscriber::layer::SubscriberExt; // rust-rules: trait-import
@@ -178,17 +178,19 @@ fn prepare_runtime(settings: &crate::LoggingSettings) -> ksp_core_lib::Result<Pr
let prepared_console = settings.console().map(|console| -> PreparedOutput {
return build_console_output(console, settings);
});
let mut layers = RuntimeLayers::new();
layers.push(std::boxed::Box::new(build_target_filter(settings)));
let mut output_layers = RuntimeLayers::new();
let mut outputs = RuntimeOutputs::default();
if let std::option::Option::Some(console) = prepared_console {
layers.push(console.layer);
output_layers.push(console.layer);
outputs.console = std::option::Option::Some(console.output);
}
if let std::option::Option::Some(file) = prepared_file {
layers.push(file.layer);
output_layers.push(file.layer);
outputs.file = std::option::Option::Some(file.output);
}
let takeover_layer = build_target_filter(settings).and_then(output_layers).boxed();
let mut layers = RuntimeLayers::new();
layers.push(takeover_layer);
return std::result::Result::Ok(PreparedRuntime { layers, outputs });
}

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-logging-lib/unit_tests/runtime.rs
// version: 3
// version: 4
#[test]
fn level_mapping_covers_all_ksp_levels() {
@@ -60,7 +60,7 @@ fn disabled_runtime_has_no_layers_or_outputs() {
}
#[test]
fn console_runtime_keeps_takeover_filter_separate_from_formatter_and_owns_guard() {
fn console_runtime_composes_takeover_filter_before_formatter_and_owns_guard() {
let settings = crate::LoggingSettings::new(
crate::LogFilterLevel::Info,
crate::SpanEvents::Off,
@@ -73,7 +73,7 @@ fn console_runtime_keeps_takeover_filter_separate_from_formatter_and_owns_guard(
std::result::Result::Ok(prepared) => prepared,
std::result::Result::Err(_) => return,
};
assert_eq!(prepared.layers.len(), 2);
assert_eq!(prepared.layers.len(), 1);
assert!(prepared.outputs.console.is_some());
assert!(prepared.outputs.file.is_none());
assert_eq!(prepared.outputs.dropped_lines(), crate::DroppedLines::zero());