mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-25 17:32:20 +00:00
♻️ migrate to core json
This commit is contained in:
@@ -831,29 +831,29 @@ test "async json helpers export stable structured shapes" {
|
||||
flush=AsyncFlushPolicy::Batch,
|
||||
),
|
||||
)
|
||||
let config_obj = config_json.as_object().unwrap()
|
||||
let config_obj = config_json.expect_json_object()
|
||||
inspect(
|
||||
@json_parser.stringify(config_json),
|
||||
config_json.stringify(),
|
||||
content="{\"max_pending\":8,\"max_batch\":3,\"linger_ms\":25,\"overflow\":\"DropOldest\",\"flush\":\"Batch\"}",
|
||||
)
|
||||
inspect(
|
||||
config_obj.get("max_pending").unwrap().as_number().unwrap().to_int(),
|
||||
config_obj.get("max_pending").unwrap().expect_json_number().to_int(),
|
||||
content="8",
|
||||
)
|
||||
inspect(
|
||||
config_obj.get("max_batch").unwrap().as_number().unwrap().to_int(),
|
||||
config_obj.get("max_batch").unwrap().expect_json_number().to_int(),
|
||||
content="3",
|
||||
)
|
||||
inspect(
|
||||
config_obj.get("linger_ms").unwrap().as_number().unwrap().to_int(),
|
||||
config_obj.get("linger_ms").unwrap().expect_json_number().to_int(),
|
||||
content="25",
|
||||
)
|
||||
inspect(
|
||||
config_obj.get("overflow").unwrap().as_string().unwrap(),
|
||||
config_obj.get("overflow").unwrap().expect_json_string(),
|
||||
content="DropOldest",
|
||||
)
|
||||
inspect(
|
||||
config_obj.get("flush").unwrap().as_string().unwrap(),
|
||||
config_obj.get("flush").unwrap().expect_json_string(),
|
||||
content="Batch",
|
||||
)
|
||||
|
||||
@@ -874,85 +874,84 @@ test "async json helpers export stable structured shapes" {
|
||||
),
|
||||
),
|
||||
)
|
||||
let build_obj = build_json.as_object().unwrap()
|
||||
let logger_obj = build_obj.get("logger").unwrap().as_object().unwrap()
|
||||
let sink_obj = logger_obj.get("sink").unwrap().as_object().unwrap()
|
||||
let build_obj = build_json.expect_json_object()
|
||||
let logger_obj = build_obj.get("logger").unwrap().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()
|
||||
let async_obj = build_obj.get("async_config").unwrap().as_object().unwrap()
|
||||
.expect_json_object()
|
||||
let async_obj = build_obj.get("async_config").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(),
|
||||
logger_obj.get("target").unwrap().expect_json_string(),
|
||||
content="async.roundtrip",
|
||||
)
|
||||
inspect(
|
||||
logger_obj.get("timestamp").unwrap().as_bool().unwrap(),
|
||||
logger_obj.get("timestamp").unwrap().expect_json_bool(),
|
||||
content="true",
|
||||
)
|
||||
inspect(logger_obj.get("queue") is None, content="true")
|
||||
inspect(
|
||||
sink_obj.get("kind").unwrap().as_string().unwrap(),
|
||||
sink_obj.get("kind").unwrap().expect_json_string(),
|
||||
content="text_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("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("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(
|
||||
async_obj.get("max_pending").unwrap().as_number().unwrap().to_int(),
|
||||
async_obj.get("max_pending").unwrap().expect_json_number().to_int(),
|
||||
content="2",
|
||||
)
|
||||
inspect(
|
||||
async_obj.get("max_batch").unwrap().as_number().unwrap().to_int(),
|
||||
async_obj.get("max_batch").unwrap().expect_json_number().to_int(),
|
||||
content="5",
|
||||
)
|
||||
inspect(
|
||||
async_obj.get("linger_ms").unwrap().as_number().unwrap().to_int(),
|
||||
async_obj.get("linger_ms").unwrap().expect_json_number().to_int(),
|
||||
content="40",
|
||||
)
|
||||
inspect(
|
||||
async_obj.get("overflow").unwrap().as_string().unwrap(),
|
||||
async_obj.get("overflow").unwrap().expect_json_string(),
|
||||
content="DropNewest",
|
||||
)
|
||||
inspect(
|
||||
async_obj.get("flush").unwrap().as_string().unwrap(),
|
||||
async_obj.get("flush").unwrap().expect_json_string(),
|
||||
content="Shutdown",
|
||||
)
|
||||
}
|
||||
@@ -961,103 +960,102 @@ test "async json helpers export stable structured shapes" {
|
||||
test "async build config json export materializes parsed omitted defaults" {
|
||||
let parsed = parse_async_logger_build_config_text("{}")
|
||||
let build_json = async_logger_build_config_to_json(parsed)
|
||||
let build_obj = build_json.as_object().unwrap()
|
||||
let logger_obj = build_obj.get("logger").unwrap().as_object().unwrap()
|
||||
let sink_obj = logger_obj.get("sink").unwrap().as_object().unwrap()
|
||||
let build_obj = build_json.expect_json_object()
|
||||
let logger_obj = build_obj.get("logger").unwrap().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()
|
||||
let async_obj = build_obj.get("async_config").unwrap().as_object().unwrap()
|
||||
.expect_json_object()
|
||||
let async_obj = build_obj.get("async_config").unwrap().expect_json_object()
|
||||
|
||||
inspect(
|
||||
@json_parser.stringify(build_json),
|
||||
build_json.stringify(),
|
||||
content="{\"logger\":{\"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\"}}},\"async_config\":{\"max_pending\":0,\"max_batch\":1,\"linger_ms\":0,\"overflow\":\"Blocking\",\"flush\":\"Never\"}}",
|
||||
)
|
||||
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")
|
||||
inspect(
|
||||
async_obj.get("max_pending").unwrap().as_number().unwrap().to_int(),
|
||||
async_obj.get("max_pending").unwrap().expect_json_number().to_int(),
|
||||
content="0",
|
||||
)
|
||||
inspect(
|
||||
async_obj.get("max_batch").unwrap().as_number().unwrap().to_int(),
|
||||
async_obj.get("max_batch").unwrap().expect_json_number().to_int(),
|
||||
content="1",
|
||||
)
|
||||
inspect(
|
||||
async_obj.get("linger_ms").unwrap().as_number().unwrap().to_int(),
|
||||
async_obj.get("linger_ms").unwrap().expect_json_number().to_int(),
|
||||
content="0",
|
||||
)
|
||||
inspect(
|
||||
async_obj.get("overflow").unwrap().as_string().unwrap(),
|
||||
async_obj.get("overflow").unwrap().expect_json_string(),
|
||||
content="Blocking",
|
||||
)
|
||||
inspect(async_obj.get("flush").unwrap().as_string().unwrap(), content="Never")
|
||||
inspect(async_obj.get("flush").unwrap().expect_json_string(), content="Never")
|
||||
}
|
||||
|
||||
///|
|
||||
@@ -1068,7 +1066,7 @@ test "async config parsers reject malformed input" {
|
||||
})() catch {
|
||||
err => err.to_string()
|
||||
}
|
||||
inspect(invalid_json_error.contains("UnexpectedToken"), content="true")
|
||||
inspect(invalid_json_error != "no error", content="true")
|
||||
|
||||
let wrong_type_error = (fn() -> String raise {
|
||||
ignore(parse_async_logger_config_text("{\"max_pending\":\"many\"}"))
|
||||
@@ -1144,7 +1142,7 @@ test "async runtime capability helpers stay consistent" {
|
||||
)
|
||||
inspect(state.background_worker == worker_supported, content="true")
|
||||
inspect(
|
||||
@json_parser.stringify(async_runtime_state_to_json(state)),
|
||||
async_runtime_state_to_json(state).stringify(),
|
||||
content=if worker_supported {
|
||||
"{\"mode\":\"native_worker\",\"background_worker\":true}"
|
||||
} else {
|
||||
@@ -1225,7 +1223,7 @@ test "async logger state snapshot reflects current counters and runtime" {
|
||||
content="Shutdown",
|
||||
)
|
||||
inspect(
|
||||
@json_parser.stringify(async_logger_state_to_json(state)),
|
||||
async_logger_state_to_json(state).stringify(),
|
||||
content=if async_runtime_supports_background_worker() {
|
||||
"{\"runtime\":{\"mode\":\"native_worker\",\"background_worker\":true},\"phase\":\"ready\",\"pending_count\":0,\"dropped_count\":0,\"is_closed\":false,\"is_running\":false,\"has_failed\":false,\"backlog_retained\":false,\"can_rerun\":true,\"terminal\":false,\"last_error\":\"\",\"flush_policy\":\"Shutdown\"}"
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user