52 lines
2.3 KiB
Rust
52 lines
2.3 KiB
Rust
// file: crates/ksp-logging-lib/unit_tests/writer.rs
|
|
// version: 2
|
|
|
|
#[test]
|
|
fn ansi_writer_strips_csi_sequences() {
|
|
let mut writer = super::StripAnsiWriter::new(std::vec::Vec::<u8>::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 = super::StripAnsiWriter::new(std::vec::Vec::<u8>::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 = super::StripAnsiWriter::new(std::vec::Vec::<u8>::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 = super::RoutedWriter::<std::vec::Vec<u8>>::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());
|
|
}
|