cover async build-config export defaults

This commit is contained in:
Nanaloveyuki
2026-06-14 04:50:09 +08:00
parent e97407c22c
commit 9da5b9d659
+41
View File
@@ -323,6 +323,47 @@ test "async json helpers export stable structured shapes" {
inspect(async_obj.get("flush").unwrap().as_string().unwrap(), content="Shutdown")
}
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 formatter_obj = sink_obj.get("text_formatter").unwrap().as_object().unwrap()
let async_obj = build_obj.get("async_config").unwrap().as_object().unwrap()
inspect(
@json_parser.stringify(build_json),
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(), content="INFO")
inspect(logger_obj.get("target").unwrap().as_string().unwrap(), content="")
inspect(logger_obj.get("timestamp").unwrap().as_bool().unwrap(), 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("auto_flush").unwrap().as_bool().unwrap(), content="true")
inspect(formatter_obj.get("show_timestamp").unwrap().as_bool().unwrap(), content="true")
inspect(formatter_obj.get("show_level").unwrap().as_bool().unwrap(), content="true")
inspect(formatter_obj.get("show_target").unwrap().as_bool().unwrap(), content="true")
inspect(formatter_obj.get("show_fields").unwrap().as_bool().unwrap(), content="true")
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="")
inspect(formatter_obj.get("color_mode").unwrap().as_string().unwrap(), content="never")
inspect(formatter_obj.get("color_support").unwrap().as_string().unwrap(), content="truecolor")
inspect(formatter_obj.get("style_markup").unwrap().as_string().unwrap(), content="full")
inspect(formatter_obj.get("target_style_markup").unwrap().as_string().unwrap(), content="disabled")
inspect(formatter_obj.get("fields_style_markup").unwrap().as_string().unwrap(), content="disabled")
inspect(formatter_obj.get("style_tags") is None, content="true")
inspect(async_obj.get("max_pending").unwrap().as_number().unwrap().to_int(), content="0")
inspect(async_obj.get("max_batch").unwrap().as_number().unwrap().to_int(), content="1")
inspect(async_obj.get("linger_ms").unwrap().as_number().unwrap().to_int(), content="0")
inspect(async_obj.get("overflow").unwrap().as_string().unwrap(), content="Blocking")
inspect(async_obj.get("flush").unwrap().as_string().unwrap(), content="Never")
}
test "async config parsers reject malformed input" {
let invalid_json_error = (fn() -> String raise {
ignore(parse_async_logger_config_text("{"))