♻️ migrate to core json

This commit is contained in:
Nanaloveyuki
2026-07-17 21:19:11 +08:00
parent bcfb35d7ae
commit a58a0747bb
49 changed files with 533 additions and 601 deletions
+67 -74
View File
@@ -43,11 +43,7 @@ test "config subtype json helpers stringify stable shapes" {
content="{\"kind\":\"file\",\"path\":\"logs/demo.log\",\"append\":false,\"auto_flush\":false,\"text_formatter\":{\"show_timestamp\":false,\"show_level\":true,\"show_target\":true,\"show_fields\":true,\"separator\":\" \",\"field_separator\":\" \",\"template\":\"\",\"color_mode\":\"auto\",\"color_support\":\"truecolor\",\"style_markup\":\"full\",\"target_style_markup\":\"disabled\",\"fields_style_markup\":\"disabled\"},\"rotation\":{\"max_bytes\":128,\"max_backups\":2}}",
)
inspect(
@json_parser.stringify(
file_rotation_config_to_json(
file_rotation_i64(4294967296L, max_backups=2),
),
),
file_rotation_config_to_json(file_rotation_i64(4294967296L, max_backups=2)).stringify(),
content="{\"max_bytes\":2147483647,\"max_backups\":2,\"max_bytes_i64\":\"4294967296\"}",
)
}
@@ -57,17 +53,17 @@ 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()
let queue_obj = queue_json.expect_json_object()
inspect(
@json_parser.stringify(queue_json),
queue_json.stringify(),
content="{\"max_pending\":8,\"overflow\":\"DropOldest\"}",
)
inspect(
queue_obj.get("max_pending").unwrap().as_number().unwrap().to_int(),
queue_obj.get("max_pending").unwrap().expect_json_number().to_int(),
content="8",
)
inspect(
queue_obj.get("overflow").unwrap().as_string().unwrap(),
queue_obj.get("overflow").unwrap().expect_json_string(),
content="DropOldest",
)
@@ -88,55 +84,54 @@ test "config json helpers export stable structured shapes" {
style_tags={ "accent": text_style(fg=Some("#4cc9f0"), bold=true) },
),
)
let formatter_obj = formatter_json.as_object().unwrap()
let formatter_obj = formatter_json.expect_json_object()
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()
.expect_json_object()
let accent_obj = style_tags_obj.get("accent").unwrap().expect_json_object()
inspect(
formatter_obj.get("show_timestamp").unwrap().as_bool().unwrap(),
formatter_obj.get("show_timestamp").unwrap().expect_json_bool(),
content="false",
)
inspect(
formatter_obj.get("show_target").unwrap().as_bool().unwrap(),
formatter_obj.get("show_target").unwrap().expect_json_bool(),
content="false",
)
inspect(
formatter_obj.get("separator").unwrap().as_string().unwrap(),
formatter_obj.get("separator").unwrap().expect_json_string(),
content=" | ",
)
inspect(
formatter_obj.get("field_separator").unwrap().as_string().unwrap(),
formatter_obj.get("field_separator").unwrap().expect_json_string(),
content=",",
)
inspect(
formatter_obj.get("template").unwrap().as_string().unwrap(),
formatter_obj.get("template").unwrap().expect_json_string(),
content="[{level}] {message} :: {fields}",
)
inspect(
formatter_obj.get("color_mode").unwrap().as_string().unwrap(),
formatter_obj.get("color_mode").unwrap().expect_json_string(),
content="always",
)
inspect(
formatter_obj.get("color_support").unwrap().as_string().unwrap(),
formatter_obj.get("color_support").unwrap().expect_json_string(),
content="basic",
)
inspect(
formatter_obj.get("style_markup").unwrap().as_string().unwrap(),
formatter_obj.get("style_markup").unwrap().expect_json_string(),
content="builtin",
)
inspect(
formatter_obj.get("target_style_markup").unwrap().as_string().unwrap(),
formatter_obj.get("target_style_markup").unwrap().expect_json_string(),
content="builtin",
)
inspect(
formatter_obj.get("fields_style_markup").unwrap().as_string().unwrap(),
formatter_obj.get("fields_style_markup").unwrap().expect_json_string(),
content="disabled",
)
inspect(accent_obj.get("bold").unwrap().as_bool().unwrap(), content="true")
inspect(accent_obj.get("fg").unwrap().as_string().unwrap(), content="#4cc9f0")
inspect(accent_obj.get("bold").unwrap().expect_json_bool(), content="true")
inspect(accent_obj.get("fg").unwrap().expect_json_string(), content="#4cc9f0")
let sink_json = sink_config_to_json(
SinkConfig::new(
@@ -151,37 +146,36 @@ test "config json helpers export stable structured shapes" {
),
),
)
let sink_obj = sink_json.as_object().unwrap()
let sink_obj = sink_json.expect_json_object()
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")
.expect_json_object()
let rotation_obj = sink_obj.get("rotation").unwrap().expect_json_object()
inspect(sink_obj.get("kind").unwrap().expect_json_string(), content="file")
inspect(
sink_obj.get("path").unwrap().as_string().unwrap(),
sink_obj.get("path").unwrap().expect_json_string(),
content="logs/demo.log",
)
inspect(sink_obj.get("append").unwrap().as_bool().unwrap(), content="false")
inspect(sink_obj.get("append").unwrap().expect_json_bool(), content="false")
inspect(
sink_obj.get("auto_flush").unwrap().as_bool().unwrap(),
sink_obj.get("auto_flush").unwrap().expect_json_bool(),
content="false",
)
inspect(
sink_formatter_obj.get("show_timestamp").unwrap().as_bool().unwrap(),
sink_formatter_obj.get("show_timestamp").unwrap().expect_json_bool(),
content="false",
)
inspect(
sink_formatter_obj.get("color_mode").unwrap().as_string().unwrap(),
sink_formatter_obj.get("color_mode").unwrap().expect_json_string(),
content="auto",
)
inspect(
rotation_obj.get("max_bytes").unwrap().as_number().unwrap().to_int(),
rotation_obj.get("max_bytes").unwrap().expect_json_number().to_int(),
content="128",
)
inspect(
rotation_obj.get("max_backups").unwrap().as_number().unwrap().to_int(),
rotation_obj.get("max_backups").unwrap().expect_json_number().to_int(),
content="2",
)
inspect(rotation_obj.get("max_bytes_i64") is None, content="true")
@@ -189,17 +183,17 @@ test "config json helpers export stable structured shapes" {
let wide_rotation_json = file_rotation_config_to_json(
file_rotation_i64(4294967296L, max_backups=3),
)
let wide_rotation_obj = wide_rotation_json.as_object().unwrap()
let wide_rotation_obj = wide_rotation_json.expect_json_object()
inspect(
wide_rotation_obj.get("max_bytes").unwrap().as_number().unwrap().to_int(),
wide_rotation_obj.get("max_bytes").unwrap().expect_json_number().to_int(),
content="2147483647",
)
inspect(
wide_rotation_obj.get("max_backups").unwrap().as_number().unwrap().to_int(),
wide_rotation_obj.get("max_backups").unwrap().expect_json_number().to_int(),
content="3",
)
inspect(
wide_rotation_obj.get("max_bytes_i64").unwrap().as_string().unwrap(),
wide_rotation_obj.get("max_bytes_i64").unwrap().expect_json_string(),
content="4294967296",
)
@@ -212,28 +206,28 @@ test "config json helpers export stable structured shapes" {
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()
let logger_obj = logger_json.expect_json_object()
let logger_sink_obj = logger_obj.get("sink").unwrap().expect_json_object()
let logger_queue_obj = logger_obj.get("queue").unwrap().expect_json_object()
inspect(
logger_obj.get("min_level").unwrap().as_string().unwrap(),
logger_obj.get("min_level").unwrap().expect_json_string(),
content="WARN",
)
inspect(logger_obj.get("target").unwrap().as_string().unwrap(), content="api")
inspect(logger_obj.get("target").unwrap().expect_json_string(), content="api")
inspect(
logger_obj.get("timestamp").unwrap().as_bool().unwrap(),
logger_obj.get("timestamp").unwrap().expect_json_bool(),
content="true",
)
inspect(
logger_sink_obj.get("kind").unwrap().as_string().unwrap(),
logger_sink_obj.get("kind").unwrap().expect_json_string(),
content="text_console",
)
inspect(
logger_queue_obj.get("max_pending").unwrap().as_number().unwrap().to_int(),
logger_queue_obj.get("max_pending").unwrap().expect_json_number().to_int(),
content="8",
)
inspect(
logger_queue_obj.get("overflow").unwrap().as_string().unwrap(),
logger_queue_obj.get("overflow").unwrap().expect_json_string(),
content="DropNewest",
)
}
@@ -242,81 +236,80 @@ test "config json helpers export stable structured shapes" {
test "logger config json export materializes parsed omitted defaults" {
let parsed = parse_logger_config_text("{}")
let logger_json = logger_config_to_json(parsed)
let logger_obj = logger_json.as_object().unwrap()
let sink_obj = logger_obj.get("sink").unwrap().as_object().unwrap()
let logger_obj = logger_json.expect_json_object()
let sink_obj = logger_obj.get("sink").unwrap().expect_json_object()
let formatter_obj = sink_obj
.get("text_formatter")
.unwrap()
.as_object()
.unwrap()
.expect_json_object()
inspect(
@json_parser.stringify(logger_json),
logger_json.stringify(),
content="{\"min_level\":\"INFO\",\"target\":\"\",\"timestamp\":false,\"sink\":{\"kind\":\"console\",\"path\":\"\",\"append\":true,\"auto_flush\":true,\"text_formatter\":{\"show_timestamp\":true,\"show_level\":true,\"show_target\":true,\"show_fields\":true,\"separator\":\" \",\"field_separator\":\" \",\"template\":\"\",\"color_mode\":\"never\",\"color_support\":\"truecolor\",\"style_markup\":\"full\",\"target_style_markup\":\"disabled\",\"fields_style_markup\":\"disabled\"}}}",
)
inspect(
logger_obj.get("min_level").unwrap().as_string().unwrap(),
logger_obj.get("min_level").unwrap().expect_json_string(),
content="INFO",
)
inspect(logger_obj.get("target").unwrap().as_string().unwrap(), content="")
inspect(logger_obj.get("target").unwrap().expect_json_string(), content="")
inspect(
logger_obj.get("timestamp").unwrap().as_bool().unwrap(),
logger_obj.get("timestamp").unwrap().expect_json_bool(),
content="false",
)
inspect(logger_obj.get("queue") is None, content="true")
inspect(sink_obj.get("kind").unwrap().as_string().unwrap(), content="console")
inspect(sink_obj.get("path").unwrap().as_string().unwrap(), content="")
inspect(sink_obj.get("append").unwrap().as_bool().unwrap(), content="true")
inspect(sink_obj.get("kind").unwrap().expect_json_string(), content="console")
inspect(sink_obj.get("path").unwrap().expect_json_string(), content="")
inspect(sink_obj.get("append").unwrap().expect_json_bool(), content="true")
inspect(
sink_obj.get("auto_flush").unwrap().as_bool().unwrap(),
sink_obj.get("auto_flush").unwrap().expect_json_bool(),
content="true",
)
inspect(
formatter_obj.get("show_timestamp").unwrap().as_bool().unwrap(),
formatter_obj.get("show_timestamp").unwrap().expect_json_bool(),
content="true",
)
inspect(
formatter_obj.get("show_level").unwrap().as_bool().unwrap(),
formatter_obj.get("show_level").unwrap().expect_json_bool(),
content="true",
)
inspect(
formatter_obj.get("show_target").unwrap().as_bool().unwrap(),
formatter_obj.get("show_target").unwrap().expect_json_bool(),
content="true",
)
inspect(
formatter_obj.get("show_fields").unwrap().as_bool().unwrap(),
formatter_obj.get("show_fields").unwrap().expect_json_bool(),
content="true",
)
inspect(
formatter_obj.get("separator").unwrap().as_string().unwrap(),
formatter_obj.get("separator").unwrap().expect_json_string(),
content=" ",
)
inspect(
formatter_obj.get("field_separator").unwrap().as_string().unwrap(),
formatter_obj.get("field_separator").unwrap().expect_json_string(),
content=" ",
)
inspect(
formatter_obj.get("template").unwrap().as_string().unwrap(),
formatter_obj.get("template").unwrap().expect_json_string(),
content="",
)
inspect(
formatter_obj.get("color_mode").unwrap().as_string().unwrap(),
formatter_obj.get("color_mode").unwrap().expect_json_string(),
content="never",
)
inspect(
formatter_obj.get("color_support").unwrap().as_string().unwrap(),
formatter_obj.get("color_support").unwrap().expect_json_string(),
content="truecolor",
)
inspect(
formatter_obj.get("style_markup").unwrap().as_string().unwrap(),
formatter_obj.get("style_markup").unwrap().expect_json_string(),
content="full",
)
inspect(
formatter_obj.get("target_style_markup").unwrap().as_string().unwrap(),
formatter_obj.get("target_style_markup").unwrap().expect_json_string(),
content="disabled",
)
inspect(
formatter_obj.get("fields_style_markup").unwrap().as_string().unwrap(),
formatter_obj.get("fields_style_markup").unwrap().expect_json_string(),
content="disabled",
)
inspect(formatter_obj.get("style_tags") is None, content="true")