mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-24 00:42:18 +00:00
✅ cover config json helper exports
This commit is contained in:
@@ -268,6 +268,92 @@ test "config subtype json helpers stringify stable shapes" {
|
||||
)
|
||||
}
|
||||
|
||||
test "config json helpers export stable structured shapes" {
|
||||
let queue_json = queue_config_to_json(
|
||||
QueueConfig::new(8, overflow=QueueOverflowPolicy::DropOldest),
|
||||
)
|
||||
let queue_obj = queue_json.as_object().unwrap()
|
||||
inspect(@json_parser.stringify(queue_json), content="{\"max_pending\":8,\"overflow\":\"DropOldest\"}")
|
||||
inspect(queue_obj.get("max_pending").unwrap().as_number().unwrap().to_int(), content="8")
|
||||
inspect(queue_obj.get("overflow").unwrap().as_string().unwrap(), content="DropOldest")
|
||||
|
||||
let formatter_json = text_formatter_config_to_json(
|
||||
TextFormatterConfig::new(
|
||||
show_timestamp=false,
|
||||
show_level=true,
|
||||
show_target=false,
|
||||
show_fields=true,
|
||||
separator=" | ",
|
||||
field_separator=",",
|
||||
template="[{level}] {message} :: {fields}",
|
||||
color_mode=ColorMode::Always,
|
||||
color_support=ColorSupport::Basic,
|
||||
style_markup=StyleMarkupMode::Builtin,
|
||||
target_style_markup=StyleMarkupMode::Builtin,
|
||||
fields_style_markup=StyleMarkupMode::Disabled,
|
||||
style_tags={
|
||||
"accent": text_style(fg=Some("#4cc9f0"), bold=true),
|
||||
},
|
||||
),
|
||||
)
|
||||
let formatter_obj = formatter_json.as_object().unwrap()
|
||||
let style_tags_obj = formatter_obj.get("style_tags").unwrap().as_object().unwrap()
|
||||
let accent_obj = style_tags_obj.get("accent").unwrap().as_object().unwrap()
|
||||
inspect(formatter_obj.get("show_timestamp").unwrap().as_bool().unwrap(), content="false")
|
||||
inspect(formatter_obj.get("show_target").unwrap().as_bool().unwrap(), content="false")
|
||||
inspect(formatter_obj.get("separator").unwrap().as_string().unwrap(), content=" | ")
|
||||
inspect(formatter_obj.get("field_separator").unwrap().as_string().unwrap(), content=",")
|
||||
inspect(formatter_obj.get("template").unwrap().as_string().unwrap(), content="[{level}] {message} :: {fields}")
|
||||
inspect(formatter_obj.get("color_mode").unwrap().as_string().unwrap(), content="always")
|
||||
inspect(formatter_obj.get("color_support").unwrap().as_string().unwrap(), content="basic")
|
||||
inspect(formatter_obj.get("style_markup").unwrap().as_string().unwrap(), content="builtin")
|
||||
inspect(formatter_obj.get("target_style_markup").unwrap().as_string().unwrap(), content="builtin")
|
||||
inspect(formatter_obj.get("fields_style_markup").unwrap().as_string().unwrap(), content="disabled")
|
||||
inspect(accent_obj.get("bold").unwrap().as_bool().unwrap(), content="true")
|
||||
inspect(accent_obj.get("fg").unwrap().as_string().unwrap(), content="#4cc9f0")
|
||||
|
||||
let sink_json = sink_config_to_json(
|
||||
SinkConfig::new(
|
||||
kind=SinkKind::File,
|
||||
path="demo.log",
|
||||
append=false,
|
||||
auto_flush=false,
|
||||
rotation=Some(file_rotation(128, max_backups=2)),
|
||||
text_formatter=TextFormatterConfig::new(show_timestamp=false, color_mode=ColorMode::Auto),
|
||||
),
|
||||
)
|
||||
let sink_obj = sink_json.as_object().unwrap()
|
||||
let sink_formatter_obj = sink_obj.get("text_formatter").unwrap().as_object().unwrap()
|
||||
let rotation_obj = sink_obj.get("rotation").unwrap().as_object().unwrap()
|
||||
inspect(sink_obj.get("kind").unwrap().as_string().unwrap(), content="file")
|
||||
inspect(sink_obj.get("path").unwrap().as_string().unwrap(), content="demo.log")
|
||||
inspect(sink_obj.get("append").unwrap().as_bool().unwrap(), content="false")
|
||||
inspect(sink_obj.get("auto_flush").unwrap().as_bool().unwrap(), content="false")
|
||||
inspect(sink_formatter_obj.get("show_timestamp").unwrap().as_bool().unwrap(), content="false")
|
||||
inspect(sink_formatter_obj.get("color_mode").unwrap().as_string().unwrap(), content="auto")
|
||||
inspect(rotation_obj.get("max_bytes").unwrap().as_number().unwrap().to_int(), content="128")
|
||||
inspect(rotation_obj.get("max_backups").unwrap().as_number().unwrap().to_int(), content="2")
|
||||
|
||||
let logger_json = logger_config_to_json(
|
||||
LoggerConfig::new(
|
||||
min_level=Level::Warn,
|
||||
target="api",
|
||||
timestamp=true,
|
||||
sink=SinkConfig::new(kind=SinkKind::TextConsole),
|
||||
queue=Some(QueueConfig::new(8, overflow=QueueOverflowPolicy::DropNewest)),
|
||||
),
|
||||
)
|
||||
let logger_obj = logger_json.as_object().unwrap()
|
||||
let logger_sink_obj = logger_obj.get("sink").unwrap().as_object().unwrap()
|
||||
let logger_queue_obj = logger_obj.get("queue").unwrap().as_object().unwrap()
|
||||
inspect(logger_obj.get("min_level").unwrap().as_string().unwrap(), content="WARN")
|
||||
inspect(logger_obj.get("target").unwrap().as_string().unwrap(), content="api")
|
||||
inspect(logger_obj.get("timestamp").unwrap().as_bool().unwrap(), content="true")
|
||||
inspect(logger_sink_obj.get("kind").unwrap().as_string().unwrap(), content="text_console")
|
||||
inspect(logger_queue_obj.get("max_pending").unwrap().as_number().unwrap().to_int(), content="8")
|
||||
inspect(logger_queue_obj.get("overflow").unwrap().as_string().unwrap(), content="DropNewest")
|
||||
}
|
||||
|
||||
test "default config helpers expose baseline config shapes" {
|
||||
let formatter = default_text_formatter_config()
|
||||
inspect(formatter.show_timestamp, content="true")
|
||||
|
||||
Reference in New Issue
Block a user