// file: crates/ksp-logging-lib/unit_tests/writer.rs // version: 3 #[test] fn ansi_writer_strips_csi_sequences() { let mut writer = crate::StripAnsiWriter::new(std::vec::Vec::::new()); let write_result = std::io::Write::write_all(&mut writer, b"before\x1b[31mred\x1b[0mafter"); assert!(write_result.is_ok()); assert_eq!(writer.into_inner(), b"beforeredafter"); } #[test] fn ansi_writer_preserves_state_across_split_writes() { let mut writer = crate::StripAnsiWriter::new(std::vec::Vec::::new()); let first = std::io::Write::write_all(&mut writer, b"a\x1b["); let second = std::io::Write::write_all(&mut writer, b"32mb"); assert!(first.is_ok()); assert!(second.is_ok()); assert_eq!(writer.into_inner(), b"ab"); } #[test] fn ansi_writer_strips_osc_sequences_terminated_by_bell_or_st() { let mut writer = crate::StripAnsiWriter::new(std::vec::Vec::::new()); let first = std::io::Write::write_all(&mut writer, b"a\x1b]0;title\x07b"); let second = std::io::Write::write_all(&mut writer, b"c\x1b]8;;https://example.invalid\x1b\\d"); assert!(first.is_ok()); assert!(second.is_ok()); assert_eq!(writer.into_inner(), b"abcd"); } #[test] fn output_level_routing_covers_all_filter_levels() { assert!(!super::level_is_enabled(&tracing::Level::ERROR, crate::LogFilterLevel::Off)); assert!(super::level_is_enabled(&tracing::Level::ERROR, crate::LogFilterLevel::Error)); assert!(!super::level_is_enabled(&tracing::Level::WARN, crate::LogFilterLevel::Error)); assert!(super::level_is_enabled(&tracing::Level::WARN, crate::LogFilterLevel::Warn)); assert!(!super::level_is_enabled(&tracing::Level::INFO, crate::LogFilterLevel::Warn)); assert!(super::level_is_enabled(&tracing::Level::INFO, crate::LogFilterLevel::Info)); assert!(super::level_is_enabled(&tracing::Level::DEBUG, crate::LogFilterLevel::Debug)); assert!(super::level_is_enabled(&tracing::Level::TRACE, crate::LogFilterLevel::Trace)); } #[test] fn disabled_routed_writer_discards_bytes_without_error() { let mut writer = crate::RoutedWriter::>::Disabled; let write_result = std::io::Write::write_all(&mut writer, b"discarded"); let flush_result = std::io::Write::flush(&mut writer); assert!(write_result.is_ok()); assert!(flush_result.is_ok()); }