🧪 relocate test logs

This commit is contained in:
Nanaloveyuki
2026-07-17 18:22:04 +08:00
parent a745cd5172
commit b18dcf972d
22 changed files with 137 additions and 99 deletions
+1
View File
@@ -0,0 +1 @@
+7 -7
View File
@@ -2404,7 +2404,7 @@ async test "library async parse-build unwrap matches parsed direct async builder
///| ///|
async test "library async parse-build unwrap preserves file-backed runtime helpers" { async test "library async parse-build unwrap preserves file-backed runtime helpers" {
let raw = "{\"logger\":{\"min_level\":\"warn\",\"target\":\"async.lib.json.file.same-build\",\"queue\":{\"max_pending\":3,\"overflow\":\"DropOldest\"},\"sink\":{\"kind\":\"file\",\"path\":\"async-lib-json-file-same-build.log\"}},\"async_config\":{\"max_pending\":2,\"overflow\":\"DropOldest\",\"max_batch\":1,\"linger_ms\":0,\"flush\":\"Shutdown\"}}" let raw = "{\"logger\":{\"min_level\":\"warn\",\"target\":\"async.lib.json.file.same-build\",\"queue\":{\"max_pending\":3,\"overflow\":\"DropOldest\"},\"sink\":{\"kind\":\"file\",\"path\":\"logs/async-lib-json-file-same-build.log\"}},\"async_config\":{\"max_pending\":2,\"overflow\":\"DropOldest\",\"max_batch\":1,\"linger_ms\":0,\"flush\":\"Shutdown\"}}"
let logger = parse_and_build_library_async_logger(raw) let logger = parse_and_build_library_async_logger(raw)
let full = logger.to_async_logger() let full = logger.to_async_logger()
let direct = build_async_logger(parse_async_logger_build_config_text(raw)) let direct = build_async_logger(parse_async_logger_build_config_text(raw))
@@ -2920,7 +2920,7 @@ test "library async text logger ignores sink kind and still uses text formatter"
target="async.lib.text.kind", target="async.lib.text.kind",
sink=@bitlogger.SinkConfig::new( sink=@bitlogger.SinkConfig::new(
kind=@bitlogger.SinkKind::File, kind=@bitlogger.SinkKind::File,
path="ignored.log", path="logs/ignored.log",
text_formatter=@bitlogger.TextFormatterConfig::new( text_formatter=@bitlogger.TextFormatterConfig::new(
show_timestamp=false, show_timestamp=false,
separator=" | ", separator=" | ",
@@ -3233,7 +3233,7 @@ async test "async logger projection preserves file-backed runtime helpers throug
target="async.projected.file", target="async.projected.file",
sink=@bitlogger.SinkConfig::new( sink=@bitlogger.SinkConfig::new(
kind=@bitlogger.SinkKind::File, kind=@bitlogger.SinkKind::File,
path="async-projected-file.log", path="logs/async-projected-file.log",
), ),
queue=Some( queue=Some(
@bitlogger.QueueConfig::new( @bitlogger.QueueConfig::new(
@@ -3530,7 +3530,7 @@ async test "application async builder preserves file-backed runtime helpers" {
target="async.app.file.same-build", target="async.app.file.same-build",
sink=@bitlogger.SinkConfig::new( sink=@bitlogger.SinkConfig::new(
kind=@bitlogger.SinkKind::File, kind=@bitlogger.SinkKind::File,
path="async-app-file-same-build.log", path="logs/async-app-file-same-build.log",
), ),
queue=Some( queue=Some(
@bitlogger.QueueConfig::new( @bitlogger.QueueConfig::new(
@@ -4384,7 +4384,7 @@ test "application text async logger ignores sink kind and still uses text format
target="async.app.text.kind.alias", target="async.app.text.kind.alias",
sink=@bitlogger.SinkConfig::new( sink=@bitlogger.SinkConfig::new(
kind=@bitlogger.SinkKind::File, kind=@bitlogger.SinkKind::File,
path="ignored.log", path="logs/ignored.log",
text_formatter=@bitlogger.TextFormatterConfig::new( text_formatter=@bitlogger.TextFormatterConfig::new(
show_timestamp=false, show_timestamp=false,
separator=" | ", separator=" | ",
@@ -4462,7 +4462,7 @@ test "build async text logger ignores sink kind and still uses text formatter" {
target="async.text.kind", target="async.text.kind",
sink=@bitlogger.SinkConfig::new( sink=@bitlogger.SinkConfig::new(
kind=@bitlogger.SinkKind::File, kind=@bitlogger.SinkKind::File,
path="ignored.log", path="logs/ignored.log",
text_formatter=@bitlogger.TextFormatterConfig::new( text_formatter=@bitlogger.TextFormatterConfig::new(
show_timestamp=false, show_timestamp=false,
separator=" | ", separator=" | ",
@@ -4959,7 +4959,7 @@ async test "application async parse-build matches parsed direct async builder be
///| ///|
async test "application async parse-build preserves file-backed runtime helpers" { async test "application async parse-build preserves file-backed runtime helpers" {
let raw = "{\"logger\":{\"min_level\":\"warn\",\"target\":\"async.app.json.file.same-build\",\"queue\":{\"max_pending\":3,\"overflow\":\"DropOldest\"},\"sink\":{\"kind\":\"file\",\"path\":\"async-app-json-file-same-build.log\"}},\"async_config\":{\"max_pending\":2,\"overflow\":\"DropOldest\",\"max_batch\":1,\"linger_ms\":0,\"flush\":\"Shutdown\"}}" let raw = "{\"logger\":{\"min_level\":\"warn\",\"target\":\"async.app.json.file.same-build\",\"queue\":{\"max_pending\":3,\"overflow\":\"DropOldest\"},\"sink\":{\"kind\":\"file\",\"path\":\"logs/async-app-json-file-same-build.log\"}},\"async_config\":{\"max_pending\":2,\"overflow\":\"DropOldest\",\"max_batch\":1,\"linger_ms\":0,\"flush\":\"Shutdown\"}}"
let application = parse_and_build_application_async_logger(raw) let application = parse_and_build_application_async_logger(raw)
let direct = build_async_logger(parse_async_logger_build_config_text(raw)) let direct = build_async_logger(parse_async_logger_build_config_text(raw))
+5 -5
View File
@@ -1,6 +1,6 @@
///| ///|
test "file sink tracks rotation failures on unavailable backend" { test "file sink tracks rotation failures on unavailable backend" {
let path = "bitlogger-rotate.log" let path = "logs/bitlogger-rotate.log"
ignore(@utils.remove_file_internal(path)) ignore(@utils.remove_file_internal(path))
ignore(@utils.remove_file_internal(path + ".1")) ignore(@utils.remove_file_internal(path + ".1"))
let sink = file_sink(path, rotation=Some(file_rotation(1, max_backups=1))) let sink = file_sink(path, rotation=Some(file_rotation(1, max_backups=1)))
@@ -19,7 +19,7 @@ test "file sink tracks rotation failures on unavailable backend" {
///| ///|
test "file sink reopen and failure counters reflect backend state" { test "file sink reopen and failure counters reflect backend state" {
let sink = file_sink("bitlogger-reopen.log") let sink = file_sink("logs/bitlogger-reopen.log")
if sink.is_available() { if sink.is_available() {
inspect(sink.append_mode(), content="true") inspect(sink.append_mode(), content="true")
inspect(sink.open_failures(), content="0") inspect(sink.open_failures(), content="0")
@@ -45,7 +45,7 @@ test "file sink reopen and failure counters reflect backend state" {
inspect(sink.flush_failures(), content="0") inspect(sink.flush_failures(), content="0")
inspect(sink.rotation_failures(), content="0") inspect(sink.rotation_failures(), content="0")
inspect(sink.close(), content="true") inspect(sink.close(), content="true")
ignore(@utils.remove_file_internal("bitlogger-reopen.log")) ignore(@utils.remove_file_internal("logs/bitlogger-reopen.log"))
} else { } else {
inspect(sink.append_mode(), content="true") inspect(sink.append_mode(), content="true")
inspect(sink.open_failures(), content="1") inspect(sink.open_failures(), content="1")
@@ -71,7 +71,7 @@ test "file sink reopen and failure counters reflect backend state" {
///| ///|
test "file sink can rotate on native backend" { test "file sink can rotate on native backend" {
let path = "bitlogger-rotate-native.log" let path = "logs/bitlogger-rotate-native.log"
ignore(@utils.remove_file_internal(path)) ignore(@utils.remove_file_internal(path))
ignore(@utils.remove_file_internal(path + ".1")) ignore(@utils.remove_file_internal(path + ".1"))
ignore(@utils.remove_file_internal(path + ".2")) ignore(@utils.remove_file_internal(path + ".2"))
@@ -109,7 +109,7 @@ test "file sink can rotate on native backend" {
///| ///|
#cfg(platform="windows") #cfg(platform="windows")
test "file sink rotation failure counts partial backup-chain failure on native backend" { test "file sink rotation failure counts partial backup-chain failure on native backend" {
let path = "bitlogger-rotate-partial-failure.log" let path = "logs/bitlogger-rotate-partial-failure.log"
ignore(@utils.remove_file_internal(path)) ignore(@utils.remove_file_internal(path))
ignore(@utils.remove_file_internal(path + ".1")) ignore(@utils.remove_file_internal(path + ".1"))
ignore(@utils.remove_file_internal(path + ".2")) ignore(@utils.remove_file_internal(path + ".2"))
+6 -3
View File
@@ -81,7 +81,7 @@ test "application logger keeps configured runtime helper surface" {
LoggerConfig::new( LoggerConfig::new(
min_level=Level::Warn, min_level=Level::Warn,
target="app.alias.helpers", target="app.alias.helpers",
sink=SinkConfig::new(kind=SinkKind::File, path="app-alias.log"), sink=SinkConfig::new(kind=SinkKind::File, path="logs/app-alias.log"),
queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropOldest)), queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropOldest)),
), ),
) )
@@ -229,7 +229,10 @@ test "application logger file helpers match direct configured builder behavior"
let config = LoggerConfig::new( let config = LoggerConfig::new(
min_level=Level::Warn, min_level=Level::Warn,
target="app.file.same-build", target="app.file.same-build",
sink=SinkConfig::new(kind=SinkKind::File, path="app-file-same-build.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/app-file-same-build.log",
),
queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropOldest)), queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropOldest)),
) )
let application = build_application_logger(config) let application = build_application_logger(config)
@@ -344,7 +347,7 @@ test "application logger file controls match direct configured builder behavior"
target="app.file.controls.same-build", target="app.file.controls.same-build",
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="app-file-controls-same-build.log", path="logs/app-file-controls-same-build.log",
), ),
) )
let application = build_application_logger(config) let application = build_application_logger(config)
+3 -3
View File
@@ -5,7 +5,7 @@ test "configured logger file setters stay aligned with runtime sink setters" {
target="config.file.setters.delegate", target="config.file.setters.delegate",
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-file-setters-delegate.log", path="logs/config-file-setters-delegate.log",
), ),
), ),
) )
@@ -100,7 +100,7 @@ test "configured logger file reopen helpers stay aligned with runtime sink helpe
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-reopen-delegate.log", path="logs/config-reopen-delegate.log",
), ),
), ),
) )
@@ -174,7 +174,7 @@ test "configured logger file reset helpers stay aligned with runtime sink helper
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-reset-delegate.log", path="logs/config-reset-delegate.log",
append=false, append=false,
auto_flush=false, auto_flush=false,
rotation=Some(file_rotation(40, max_backups=2)), rotation=Some(file_rotation(40, max_backups=2)),
+20 -8
View File
@@ -2,7 +2,7 @@
test "configured logger file setters update file sink policy state" { test "configured logger file setters update file sink policy state" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-setters.log"), sink=SinkConfig::new(kind=SinkKind::File, path="logs/config-setters.log"),
queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropNewest)), queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropNewest)),
), ),
) )
@@ -61,7 +61,7 @@ test "configured logger reset policy restores configured file defaults" {
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-reset-policy.log", path="logs/config-reset-policy.log",
append=false, append=false,
auto_flush=false, auto_flush=false,
rotation=Some(file_rotation(36, max_backups=2)), rotation=Some(file_rotation(36, max_backups=2)),
@@ -93,7 +93,10 @@ test "configured logger reset policy restores configured file defaults" {
test "configured logger set policy applies bundled runtime file policy" { test "configured logger set policy applies bundled runtime file policy" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-set-policy.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/config-set-policy.log",
),
), ),
) )
let default_policy = logger.file_default_policy() let default_policy = logger.file_default_policy()
@@ -140,7 +143,7 @@ test "configured non-file logger cannot reset file policy" {
test "configured logger can reopen built file sink" { test "configured logger can reopen built file sink" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-reopen.log"), sink=SinkConfig::new(kind=SinkKind::File, path="logs/config-reopen.log"),
), ),
) )
if logger.file_available() { if logger.file_available() {
@@ -199,7 +202,7 @@ test "configured non-file logger cannot reset file failure counters" {
test "configured logger exposes file flush and close helpers" { test "configured logger exposes file flush and close helpers" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-control.log"), sink=SinkConfig::new(kind=SinkKind::File, path="logs/config-control.log"),
), ),
) )
if logger.file_available() { if logger.file_available() {
@@ -218,7 +221,10 @@ test "configured logger exposes file flush and close helpers" {
test "configured queued file logger flushes queue through file helper" { test "configured queued file logger flushes queue through file helper" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-queued-file.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/config-queued-file.log",
),
queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)), queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)),
), ),
) )
@@ -257,7 +263,10 @@ test "configured queued file logger flushes queue through file helper" {
test "configured queued file logger blocks policy mutation while queue is pending" { test "configured queued file logger blocks policy mutation while queue is pending" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-queued-policy.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/config-queued-policy.log",
),
queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)), queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)),
), ),
) )
@@ -293,7 +302,10 @@ test "configured queued file logger blocks policy mutation while queue is pendin
test "configured queued file logger close drains queue before teardown" { test "configured queued file logger close drains queue before teardown" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-close-queued.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/config-close-queued.log",
),
queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)), queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)),
), ),
) )
@@ -3,7 +3,10 @@ test "configured logger file observation helpers stay aligned with runtime sink
let file_logger = build_logger( let file_logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
target="config.file.delegate", target="config.file.delegate",
sink=SinkConfig::new(kind=SinkKind::File, path="config-file-delegate.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/config-file-delegate.log",
),
), ),
) )
let file_sink = file_logger.sink let file_sink = file_logger.sink
@@ -74,7 +77,7 @@ test "configured logger file policy helpers stay aligned with runtime sink helpe
target="config.file.policy.delegate", target="config.file.policy.delegate",
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-file-policy-delegate.log", path="logs/config-file-policy-delegate.log",
append=false, append=false,
auto_flush=true, auto_flush=true,
rotation=Some(file_rotation(64, max_backups=2)), rotation=Some(file_rotation(64, max_backups=2)),
@@ -213,7 +216,7 @@ test "configured logger file flush and close stay aligned with runtime sink help
let file_config = LoggerConfig::new( let file_config = LoggerConfig::new(
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-file-helper-delegate.log", path="logs/config-file-helper-delegate.log",
), ),
) )
let file_logger = build_logger(file_config) let file_logger = build_logger(file_config)
@@ -245,7 +248,7 @@ test "configured logger file state helpers stay aligned with runtime sink helper
target="config.file.state.delegate", target="config.file.state.delegate",
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-file-state-delegate.log", path="logs/config-file-state-delegate.log",
), ),
), ),
) )
@@ -297,7 +300,7 @@ test "configured logger file state helpers stay aligned with runtime sink helper
target="config.file.runtime.delegate", target="config.file.runtime.delegate",
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-file-runtime-delegate.log", path="logs/config-file-runtime-delegate.log",
), ),
queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)), queue=Some(QueueConfig::new(4, overflow=QueueOverflowPolicy::DropNewest)),
), ),
+13 -7
View File
@@ -4,7 +4,7 @@ test "configured logger exposes file sink observability helpers" {
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="config-file.log", path="logs/config-file.log",
auto_flush=false, auto_flush=false,
rotation=Some(file_rotation(64, max_backups=3)), rotation=Some(file_rotation(64, max_backups=3)),
), ),
@@ -13,8 +13,8 @@ test "configured logger exposes file sink observability helpers" {
let state = logger.file_state() let state = logger.file_state()
let runtime_state = logger.file_runtime_state() let runtime_state = logger.file_runtime_state()
inspect(logger.file_available() == native_files_supported(), content="true") inspect(logger.file_available() == native_files_supported(), content="true")
inspect(logger.file_path(), content="config-file.log") inspect(logger.file_path(), content="logs/config-file.log")
inspect(state.path, content="config-file.log") inspect(state.path, content="logs/config-file.log")
inspect(state.available == logger.file_available(), content="true") inspect(state.available == logger.file_available(), content="true")
inspect(state.append == logger.file_append_mode(), content="true") inspect(state.append == logger.file_append_mode(), content="true")
inspect(state.auto_flush == logger.file_auto_flush(), content="true") inspect(state.auto_flush == logger.file_auto_flush(), content="true")
@@ -25,7 +25,7 @@ test "configured logger exposes file sink observability helpers" {
inspect(snapshot.queued, content="false") inspect(snapshot.queued, content="false")
inspect(snapshot.pending_count, content="0") inspect(snapshot.pending_count, content="0")
inspect(snapshot.dropped_count, content="0") inspect(snapshot.dropped_count, content="0")
inspect(snapshot.file.path, content="config-file.log") inspect(snapshot.file.path, content="logs/config-file.log")
} }
None => inspect(false, content="true") None => inspect(false, content="true")
} }
@@ -51,7 +51,10 @@ test "configured logger exposes file sink observability helpers" {
test "configured logger reports disabled rotation when file sink has none" { test "configured logger reports disabled rotation when file sink has none" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-no-rotation.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/config-no-rotation.log",
),
), ),
) )
inspect(logger.file_rotation_enabled(), content="false") inspect(logger.file_rotation_enabled(), content="false")
@@ -79,12 +82,15 @@ test "configured non-file logger has no file runtime state" {
test "configured file logger mirrors backend file capability" { test "configured file logger mirrors backend file capability" {
let logger = build_logger( let logger = build_logger(
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new(kind=SinkKind::File, path="config-capability.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/config-capability.log",
),
), ),
) )
inspect(logger.file_available() == native_files_supported(), content="true") inspect(logger.file_available() == native_files_supported(), content="true")
match logger.file_path_or_none() { match logger.file_path_or_none() {
Some(path) => inspect(path, content="config-capability.log") Some(path) => inspect(path, content="logs/config-capability.log")
None => inspect(false, content="true") None => inspect(false, content="true")
} }
inspect(logger.file_policy_or_none() is None, content="false") inspect(logger.file_policy_or_none() is None, content="false")
+4 -1
View File
@@ -82,7 +82,10 @@ test "configured logger projection preserves file runtime helpers through unwrap
LoggerConfig::new( LoggerConfig::new(
min_level=Level::Warn, min_level=Level::Warn,
target="lib.projected.file", target="lib.projected.file",
sink=SinkConfig::new(kind=SinkKind::File, path="lib-projected-file.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/lib-projected-file.log",
),
queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropOldest)), queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropOldest)),
), ),
) )
+11 -8
View File
@@ -8,11 +8,11 @@ test "native file support flag is queryable" {
///| ///|
test "file sink availability reflects backend support" { test "file sink availability reflects backend support" {
let sink = file_sink("bitlogger-test.log") let sink = file_sink("logs/bitlogger-test.log")
let state = sink.state() let state = sink.state()
inspect(sink.path(), content="bitlogger-test.log") inspect(sink.path(), content="logs/bitlogger-test.log")
inspect(sink.is_available() == native_files_supported(), content="true") inspect(sink.is_available() == native_files_supported(), content="true")
inspect(state.path, content="bitlogger-test.log") inspect(state.path, content="logs/bitlogger-test.log")
inspect(state.available == sink.is_available(), content="true") inspect(state.available == sink.is_available(), content="true")
inspect(state.append == sink.append_mode(), content="true") inspect(state.append == sink.append_mode(), content="true")
inspect(state.auto_flush == sink.auto_flush_enabled(), content="true") inspect(state.auto_flush == sink.auto_flush_enabled(), content="true")
@@ -42,7 +42,7 @@ test "file sink availability reflects backend support" {
///| ///|
test "file sink unavailable backend keeps stable fallback state" { test "file sink unavailable backend keeps stable fallback state" {
let sink = file_sink( let sink = file_sink(
"bitlogger-unavailable.log", "logs/bitlogger-unavailable.log",
rotation=Some(file_rotation(64, max_backups=2)), rotation=Some(file_rotation(64, max_backups=2)),
) )
if sink.is_available() { if sink.is_available() {
@@ -73,7 +73,10 @@ test "file sink rotation config normalizes invalid inputs" {
let rotation = file_rotation(0, max_backups=0) let rotation = file_rotation(0, max_backups=0)
inspect(rotation.max_bytes, content="1") inspect(rotation.max_bytes, content="1")
inspect(rotation.max_backups, content="1") inspect(rotation.max_backups, content="1")
let sink = file_sink("bitlogger-rotation-config.log", rotation=Some(rotation)) let sink = file_sink(
"logs/bitlogger-rotation-config.log",
rotation=Some(rotation),
)
inspect(sink.rotation_enabled(), content="true") inspect(sink.rotation_enabled(), content="true")
match sink.rotation_config() { match sink.rotation_config() {
Some(config) => { Some(config) => {
@@ -97,7 +100,7 @@ test "file rotation i64 preserves wide threshold metadata" {
///| ///|
test "file sink setters update auto flush and rotation state" { test "file sink setters update auto flush and rotation state" {
let sink = file_sink("bitlogger-setters.log") let sink = file_sink("logs/bitlogger-setters.log")
let default_policy = sink.default_policy() let default_policy = sink.default_policy()
inspect(sink.append_mode(), content="true") inspect(sink.append_mode(), content="true")
inspect(sink.auto_flush_enabled(), content="true") inspect(sink.auto_flush_enabled(), content="true")
@@ -146,7 +149,7 @@ test "file sink setters update auto flush and rotation state" {
///| ///|
test "file sink reset policy restores configured defaults" { test "file sink reset policy restores configured defaults" {
let sink = file_sink( let sink = file_sink(
"bitlogger-reset-policy.log", "logs/bitlogger-reset-policy.log",
append=false, append=false,
auto_flush=false, auto_flush=false,
rotation=Some(file_rotation(24, max_backups=3)), rotation=Some(file_rotation(24, max_backups=3)),
@@ -173,7 +176,7 @@ test "file sink reset policy restores configured defaults" {
///| ///|
test "file sink set policy applies bundled runtime policy" { test "file sink set policy applies bundled runtime policy" {
let sink = file_sink("bitlogger-set-policy.log") let sink = file_sink("logs/bitlogger-set-policy.log")
let default_policy = sink.default_policy() let default_policy = sink.default_policy()
sink.set_policy( sink.set_policy(
FileSinkPolicy::new( FileSinkPolicy::new(
+5 -2
View File
@@ -164,7 +164,10 @@ test "library logger builder unwrap preserves file runtime helpers" {
let config = LoggerConfig::new( let config = LoggerConfig::new(
min_level=Level::Warn, min_level=Level::Warn,
target="lib.file.same-build", target="lib.file.same-build",
sink=SinkConfig::new(kind=SinkKind::File, path="lib-file-same-build.log"), sink=SinkConfig::new(
kind=SinkKind::File,
path="logs/lib-file-same-build.log",
),
queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropOldest)), queue=Some(QueueConfig::new(2, overflow=QueueOverflowPolicy::DropOldest)),
) )
let logger = build_library_logger(config) let logger = build_library_logger(config)
@@ -236,7 +239,7 @@ test "library logger builder unwrap preserves file controls" {
target="lib.file.controls.same-build", target="lib.file.controls.same-build",
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="lib-file-controls-same-build.log", path="logs/lib-file-controls-same-build.log",
), ),
) )
let logger = build_library_logger(config) let logger = build_library_logger(config)
+4 -4
View File
@@ -30,7 +30,7 @@ test "config subtype json helpers stringify stable shapes" {
stringify_sink_config( stringify_sink_config(
SinkConfig::new( SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="demo.log", path="logs/demo.log",
append=false, append=false,
auto_flush=false, auto_flush=false,
rotation=Some(file_rotation(128, max_backups=2)), rotation=Some(file_rotation(128, max_backups=2)),
@@ -40,7 +40,7 @@ test "config subtype json helpers stringify stable shapes" {
), ),
), ),
), ),
content="{\"kind\":\"file\",\"path\":\"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}}", 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( inspect(
@json_parser.stringify( @json_parser.stringify(
@@ -141,7 +141,7 @@ test "config json helpers export stable structured shapes" {
let sink_json = sink_config_to_json( let sink_json = sink_config_to_json(
SinkConfig::new( SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="demo.log", path="logs/demo.log",
append=false, append=false,
auto_flush=false, auto_flush=false,
rotation=Some(file_rotation(128, max_backups=2)), rotation=Some(file_rotation(128, max_backups=2)),
@@ -161,7 +161,7 @@ test "config json helpers export stable structured shapes" {
inspect(sink_obj.get("kind").unwrap().as_string().unwrap(), content="file") inspect(sink_obj.get("kind").unwrap().as_string().unwrap(), content="file")
inspect( inspect(
sink_obj.get("path").unwrap().as_string().unwrap(), sink_obj.get("path").unwrap().as_string().unwrap(),
content="demo.log", content="logs/demo.log",
) )
inspect(sink_obj.get("append").unwrap().as_bool().unwrap(), content="false") inspect(sink_obj.get("append").unwrap().as_bool().unwrap(), content="false")
inspect( inspect(
+4 -4
View File
@@ -45,7 +45,7 @@ test "logger config parser reads formatter and queue options" {
///| ///|
test "logger config parser reads file rotation options" { test "logger config parser reads file rotation options" {
let config = parse_logger_config_text( let config = parse_logger_config_text(
"{\"sink\":{\"kind\":\"file\",\"path\":\"bitlogger.log\",\"rotation\":{\"max_bytes\":128,\"max_backups\":3}}}", "{\"sink\":{\"kind\":\"file\",\"path\":\"logs/bitlogger.log\",\"rotation\":{\"max_bytes\":128,\"max_backups\":3}}}",
) )
inspect( inspect(
match config.sink.kind { match config.sink.kind {
@@ -54,7 +54,7 @@ test "logger config parser reads file rotation options" {
}, },
content="File", content="File",
) )
inspect(config.sink.path, content="bitlogger.log") inspect(config.sink.path, content="logs/bitlogger.log")
match config.sink.rotation { match config.sink.rotation {
Some(rotation) => { Some(rotation) => {
inspect(rotation.max_bytes, content="128") inspect(rotation.max_bytes, content="128")
@@ -68,9 +68,9 @@ test "logger config parser reads file rotation options" {
///| ///|
test "logger config parser prefers max_bytes_i64 when present" { test "logger config parser prefers max_bytes_i64 when present" {
let config = parse_logger_config_text( let config = parse_logger_config_text(
"{\"sink\":{\"kind\":\"file\",\"path\":\"bitlogger.log\",\"rotation\":{\"max_bytes\":128,\"max_bytes_i64\":\"4294967296\",\"max_backups\":3}}}", "{\"sink\":{\"kind\":\"file\",\"path\":\"logs/bitlogger.log\",\"rotation\":{\"max_bytes\":128,\"max_bytes_i64\":\"4294967296\",\"max_backups\":3}}}",
) )
inspect(config.sink.path, content="bitlogger.log") inspect(config.sink.path, content="logs/bitlogger.log")
match config.sink.rotation { match config.sink.rotation {
Some(rotation) => { Some(rotation) => {
inspect(rotation.max_bytes, content="2147483647") inspect(rotation.max_bytes, content="2147483647")
+4 -4
View File
@@ -43,13 +43,13 @@ test "logger config stringify roundtrips file rotation fields" {
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="bitlogger.log", path="logs/bitlogger.log",
rotation=Some(file_rotation(256, max_backups=2)), rotation=Some(file_rotation(256, max_backups=2)),
), ),
), ),
) )
let config = parse_logger_config_text(text) let config = parse_logger_config_text(text)
inspect(config.sink.path, content="bitlogger.log") inspect(config.sink.path, content="logs/bitlogger.log")
match config.sink.rotation { match config.sink.rotation {
Some(rotation) => { Some(rotation) => {
inspect(rotation.max_bytes, content="256") inspect(rotation.max_bytes, content="256")
@@ -66,13 +66,13 @@ test "logger config stringify roundtrips file rotation i64 metadata" {
LoggerConfig::new( LoggerConfig::new(
sink=SinkConfig::new( sink=SinkConfig::new(
kind=SinkKind::File, kind=SinkKind::File,
path="bitlogger.log", path="logs/bitlogger.log",
rotation=Some(file_rotation_i64(4294967296L, max_backups=2)), rotation=Some(file_rotation_i64(4294967296L, max_backups=2)),
), ),
), ),
) )
let config = parse_logger_config_text(text) let config = parse_logger_config_text(text)
inspect(config.sink.path, content="bitlogger.log") inspect(config.sink.path, content="logs/bitlogger.log")
match config.sink.rotation { match config.sink.rotation {
Some(rotation) => { Some(rotation) => {
inspect(rotation.max_bytes, content="2147483647") inspect(rotation.max_bytes, content="2147483647")
+1 -1
View File
@@ -147,7 +147,7 @@ test "application logger parse-build matches parsed direct builder behavior" {
///| ///|
test "parsed application logger keeps direct runtime helper surface" { test "parsed application logger keeps direct runtime helper surface" {
let logger : ApplicationLogger = parse_and_build_application_logger( let logger : ApplicationLogger = parse_and_build_application_logger(
"{\"min_level\":\"warn\",\"target\":\"app.json.helpers\",\"queue\":{\"max_pending\":2,\"overflow\":\"DropOldest\"},\"sink\":{\"kind\":\"file\",\"path\":\"app-json-helpers.log\"}}", "{\"min_level\":\"warn\",\"target\":\"app.json.helpers\",\"queue\":{\"max_pending\":2,\"overflow\":\"DropOldest\"},\"sink\":{\"kind\":\"file\",\"path\":\"logs/app-json-helpers.log\"}}",
) )
logger.error("one") logger.error("one")
+2 -2
View File
@@ -143,7 +143,7 @@ test "library logger parse-build unwrap matches parsed direct builder behavior"
///| ///|
test "library logger parse-build unwrap preserves file runtime helpers" { test "library logger parse-build unwrap preserves file runtime helpers" {
let raw = "{\"min_level\":\"warn\",\"target\":\"lib.json.file.same-build\",\"queue\":{\"max_pending\":2,\"overflow\":\"DropOldest\"},\"sink\":{\"kind\":\"file\",\"path\":\"lib-json-file-same-build.log\"}}" let raw = "{\"min_level\":\"warn\",\"target\":\"lib.json.file.same-build\",\"queue\":{\"max_pending\":2,\"overflow\":\"DropOldest\"},\"sink\":{\"kind\":\"file\",\"path\":\"logs/lib-json-file-same-build.log\"}}"
let logger = parse_and_build_library_logger(raw) let logger = parse_and_build_library_logger(raw)
let full = logger.to_logger() let full = logger.to_logger()
let configured = parse_and_build_logger(raw) let configured = parse_and_build_logger(raw)
@@ -208,7 +208,7 @@ test "library logger parse-build unwrap preserves file runtime helpers" {
///| ///|
test "library logger parse-build unwrap preserves file controls" { test "library logger parse-build unwrap preserves file controls" {
let raw = "{\"min_level\":\"warn\",\"target\":\"lib.json.file.controls.same-build\",\"sink\":{\"kind\":\"file\",\"path\":\"lib-json-file-controls-same-build.log\"}}" let raw = "{\"min_level\":\"warn\",\"target\":\"lib.json.file.controls.same-build\",\"sink\":{\"kind\":\"file\",\"path\":\"logs/lib-json-file-controls-same-build.log\"}}"
let logger = parse_and_build_library_logger(raw) let logger = parse_and_build_library_logger(raw)
let full = logger.to_logger() let full = logger.to_logger()
let configured = parse_and_build_logger(raw) let configured = parse_and_build_logger(raw)
+12 -8
View File
@@ -40,7 +40,7 @@ test "logger config presets use expected defaults" {
///| ///|
test "file preset uses file sink defaults" { test "file preset uses file sink defaults" {
let config = file("bitlogger.log") let config = file("logs/bitlogger.log")
inspect(config.min_level.label(), content="INFO") inspect(config.min_level.label(), content="INFO")
inspect(config.target, content="") inspect(config.target, content="")
inspect(config.timestamp, content="false") inspect(config.timestamp, content="false")
@@ -51,7 +51,7 @@ test "file preset uses file sink defaults" {
}, },
content="File", content="File",
) )
inspect(config.sink.path, content="bitlogger.log") inspect(config.sink.path, content="logs/bitlogger.log")
inspect(config.sink.append, content="true") inspect(config.sink.append, content="true")
inspect(config.sink.auto_flush, content="true") inspect(config.sink.auto_flush, content="true")
inspect(config.sink.rotation is None, content="true") inspect(config.sink.rotation is None, content="true")
@@ -86,7 +86,7 @@ test "preset helpers compose queue and file rotation without losing config" {
separator=" | ", separator=" | ",
) )
let config = file( let config = file(
"service.log", "logs/service.log",
min_level=Level::Warn, min_level=Level::Warn,
target="svc.worker", target="svc.worker",
timestamp=true, timestamp=true,
@@ -102,7 +102,7 @@ test "preset helpers compose queue and file rotation without losing config" {
inspect(config.min_level.label(), content="WARN") inspect(config.min_level.label(), content="WARN")
inspect(config.target, content="svc.worker") inspect(config.target, content="svc.worker")
inspect(config.timestamp, content="true") inspect(config.timestamp, content="true")
inspect(config.sink.path, content="service.log") inspect(config.sink.path, content="logs/service.log")
inspect(config.sink.append, content="false") inspect(config.sink.append, content="false")
inspect(config.sink.auto_flush, content="false") inspect(config.sink.auto_flush, content="false")
inspect(config.sink.text_formatter.show_timestamp, content="false") inspect(config.sink.text_formatter.show_timestamp, content="false")
@@ -132,11 +132,15 @@ test "preset helpers compose queue and file rotation without losing config" {
///| ///|
test "queue helper preserves file rotation when applied after rotation" { test "queue helper preserves file rotation when applied after rotation" {
let config = with_queue( let config = with_queue(
with_file_rotation(file("service.log", append=false), 256, max_backups=2), with_file_rotation(
file("logs/service.log", append=false),
256,
max_backups=2,
),
max_pending=8, max_pending=8,
overflow=QueueOverflowPolicy::DropNewest, overflow=QueueOverflowPolicy::DropNewest,
) )
inspect(config.sink.path, content="service.log") inspect(config.sink.path, content="logs/service.log")
inspect(config.sink.append, content="false") inspect(config.sink.append, content="false")
match config.queue { match config.queue {
Some(queue) => { Some(queue) => {
@@ -163,11 +167,11 @@ test "queue helper preserves file rotation when applied after rotation" {
///| ///|
test "file rotation i64 helper preserves file preset shape" { test "file rotation i64 helper preserves file preset shape" {
let config = with_file_rotation_i64( let config = with_file_rotation_i64(
with_queue(file("service.log", append=false), max_pending=8), with_queue(file("logs/service.log", append=false), max_pending=8),
4294967296L, 4294967296L,
max_backups=2, max_backups=2,
) )
inspect(config.sink.path, content="service.log") inspect(config.sink.path, content="logs/service.log")
inspect(config.sink.append, content="false") inspect(config.sink.append, content="false")
match config.sink.rotation { match config.sink.rotation {
Some(rotation) => { Some(rotation) => {
+11 -11
View File
@@ -29,7 +29,7 @@ test "file state json helpers stringify stable snapshots" {
let plain = file_sink_state_to_json( let plain = file_sink_state_to_json(
FileSinkState::new( FileSinkState::new(
"demo.log", "logs/demo.log",
available=true, available=true,
append=false, append=false,
auto_flush=true, auto_flush=true,
@@ -48,11 +48,11 @@ test "file state json helpers stringify stable snapshots" {
.unwrap() .unwrap()
inspect( inspect(
@json_parser.stringify(plain), @json_parser.stringify(plain),
content="{\"path\":\"demo.log\",\"available\":true,\"append\":false,\"auto_flush\":true,\"open_failures\":1,\"write_failures\":2,\"flush_failures\":3,\"rotation_failures\":4,\"rotation\":{\"max_bytes\":64,\"max_backups\":2}}", content="{\"path\":\"logs/demo.log\",\"available\":true,\"append\":false,\"auto_flush\":true,\"open_failures\":1,\"write_failures\":2,\"flush_failures\":3,\"rotation_failures\":4,\"rotation\":{\"max_bytes\":64,\"max_backups\":2}}",
) )
inspect( inspect(
plain_obj.get("path").unwrap().as_string().unwrap(), plain_obj.get("path").unwrap().as_string().unwrap(),
content="demo.log", content="logs/demo.log",
) )
inspect( inspect(
plain_obj.get("available").unwrap().as_bool().unwrap(), plain_obj.get("available").unwrap().as_bool().unwrap(),
@@ -90,7 +90,7 @@ test "file state json helpers stringify stable snapshots" {
let wide = file_sink_state_to_json( let wide = file_sink_state_to_json(
FileSinkState::new( FileSinkState::new(
"wide.log", "logs/wide.log",
available=true, available=true,
append=true, append=true,
auto_flush=false, auto_flush=false,
@@ -132,7 +132,7 @@ test "file state json helpers stringify stable snapshots" {
inspect( inspect(
stringify_file_sink_state( stringify_file_sink_state(
FileSinkState::new( FileSinkState::new(
"plain.log", "logs/plain.log",
available=false, available=false,
append=true, append=true,
auto_flush=false, auto_flush=false,
@@ -143,7 +143,7 @@ test "file state json helpers stringify stable snapshots" {
rotation_failures=0, rotation_failures=0,
), ),
), ),
content="{\"path\":\"plain.log\",\"available\":false,\"append\":true,\"auto_flush\":false,\"open_failures\":0,\"write_failures\":0,\"flush_failures\":0,\"rotation_failures\":0,\"rotation\":null}", content="{\"path\":\"logs/plain.log\",\"available\":false,\"append\":true,\"auto_flush\":false,\"open_failures\":0,\"write_failures\":0,\"flush_failures\":0,\"rotation_failures\":0,\"rotation\":null}",
) )
} }
@@ -152,7 +152,7 @@ test "runtime file state json helpers stringify queue snapshots" {
let runtime_json = runtime_file_state_to_json( let runtime_json = runtime_file_state_to_json(
RuntimeFileState::new( RuntimeFileState::new(
FileSinkState::new( FileSinkState::new(
"queue.log", "logs/queue.log",
available=true, available=true,
append=true, append=true,
auto_flush=false, auto_flush=false,
@@ -180,7 +180,7 @@ test "runtime file state json helpers stringify queue snapshots" {
) )
inspect( inspect(
runtime_file_obj.get("path").unwrap().as_string().unwrap(), runtime_file_obj.get("path").unwrap().as_string().unwrap(),
content="queue.log", content="logs/queue.log",
) )
inspect( inspect(
runtime_file_obj.get("available").unwrap().as_bool().unwrap(), runtime_file_obj.get("available").unwrap().as_bool().unwrap(),
@@ -194,7 +194,7 @@ test "runtime file state json helpers stringify queue snapshots" {
let json = stringify_runtime_file_state( let json = stringify_runtime_file_state(
RuntimeFileState::new( RuntimeFileState::new(
FileSinkState::new( FileSinkState::new(
"queue.log", "logs/queue.log",
available=true, available=true,
append=true, append=true,
auto_flush=false, auto_flush=false,
@@ -211,13 +211,13 @@ test "runtime file state json helpers stringify queue snapshots" {
) )
inspect( inspect(
json, json,
content="{\"file\":{\"path\":\"queue.log\",\"available\":true,\"append\":true,\"auto_flush\":false,\"open_failures\":0,\"write_failures\":1,\"flush_failures\":2,\"rotation_failures\":3,\"rotation\":null},\"queued\":true,\"pending_count\":7,\"dropped_count\":5}", content="{\"file\":{\"path\":\"logs/queue.log\",\"available\":true,\"append\":true,\"auto_flush\":false,\"open_failures\":0,\"write_failures\":1,\"flush_failures\":2,\"rotation_failures\":3,\"rotation\":null},\"queued\":true,\"pending_count\":7,\"dropped_count\":5}",
) )
let wide_runtime_json = runtime_file_state_to_json( let wide_runtime_json = runtime_file_state_to_json(
RuntimeFileState::new( RuntimeFileState::new(
FileSinkState::new( FileSinkState::new(
"wide-queue.log", "logs/wide-queue.log",
available=true, available=true,
append=true, append=true,
auto_flush=true, auto_flush=true,
+2 -2
View File
@@ -16,7 +16,7 @@ test "configured logger close stays aligned with runtime sink close" {
let file_config = LoggerConfig::new( let file_config = LoggerConfig::new(
target="config.close.file", target="config.close.file",
sink=SinkConfig::new(kind=SinkKind::File, path="config-close.log"), sink=SinkConfig::new(kind=SinkKind::File, path="logs/config-close.log"),
) )
let file_logger = build_logger(file_config) let file_logger = build_logger(file_config)
let file_sink = build_logger(file_config).sink let file_sink = build_logger(file_config).sink
@@ -110,7 +110,7 @@ test "configured queued console close drains pending queue" {
test "runtime sink queued file close drains queue before teardown" { test "runtime sink queued file close drains queue before teardown" {
let sink = RuntimeSink::QueuedFile( let sink = RuntimeSink::QueuedFile(
queued_sink( queued_sink(
file_sink("runtime-close-queued.log", auto_flush=false), file_sink("logs/runtime-close-queued.log", auto_flush=false),
max_pending=4, max_pending=4,
), ),
) )
+2 -2
View File
@@ -1,6 +1,6 @@
///| ///|
test "runtime sink plain file reopen helpers and failure resets work directly" { test "runtime sink plain file reopen helpers and failure resets work directly" {
let sink = RuntimeSink::File(file_sink("runtime-reopen-direct.log")) let sink = RuntimeSink::File(file_sink("logs/runtime-reopen-direct.log"))
if sink.file_available() { if sink.file_available() {
inspect(sink.close(), content="true") inspect(sink.close(), content="true")
inspect(sink.file_reopen_append(), content="true") inspect(sink.file_reopen_append(), content="true")
@@ -52,7 +52,7 @@ test "runtime sink plain file reopen helpers and failure resets work directly" {
///| ///|
test "runtime sink queued file reopen helpers and failure resets work directly" { test "runtime sink queued file reopen helpers and failure resets work directly" {
let sink = RuntimeSink::QueuedFile( let sink = RuntimeSink::QueuedFile(
queued_sink(file_sink("runtime-reopen-queued.log"), max_pending=2), queued_sink(file_sink("logs/runtime-reopen-queued.log"), max_pending=2),
) )
if sink.file_available() { if sink.file_available() {
inspect(sink.file_close(), content="true") inspect(sink.file_close(), content="true")
+11 -11
View File
@@ -7,7 +7,7 @@ test "runtime sink plain variants use documented fallback counts" {
inspect(console_sink.drain(), content="0") inspect(console_sink.drain(), content="0")
let file_sink = RuntimeSink::File( let file_sink = RuntimeSink::File(
file_sink("runtime-direct.log", auto_flush=false), file_sink("logs/runtime-direct.log", auto_flush=false),
) )
inspect(file_sink.pending_count(), content="0") inspect(file_sink.pending_count(), content="0")
inspect(file_sink.dropped_count(), content="0") inspect(file_sink.dropped_count(), content="0")
@@ -81,17 +81,17 @@ test "runtime sink non-file variants expose documented file fallbacks" {
test "runtime sink plain file helpers expose direct file state and policy" { test "runtime sink plain file helpers expose direct file state and policy" {
let sink = RuntimeSink::File( let sink = RuntimeSink::File(
file_sink( file_sink(
"runtime-file-helpers.log", "logs/runtime-file-helpers.log",
auto_flush=false, auto_flush=false,
rotation=Some(file_rotation(40, max_backups=2)), rotation=Some(file_rotation(40, max_backups=2)),
), ),
) )
inspect(sink.file_available() == native_files_supported(), content="true") inspect(sink.file_available() == native_files_supported(), content="true")
match sink.file_path_or_none() { match sink.file_path_or_none() {
Some(path) => inspect(path, content="runtime-file-helpers.log") Some(path) => inspect(path, content="logs/runtime-file-helpers.log")
None => inspect(false, content="true") None => inspect(false, content="true")
} }
inspect(sink.file_path(), content="runtime-file-helpers.log") inspect(sink.file_path(), content="logs/runtime-file-helpers.log")
inspect(sink.file_append_mode(), content="true") inspect(sink.file_append_mode(), content="true")
inspect(sink.file_auto_flush(), content="false") inspect(sink.file_auto_flush(), content="false")
inspect(sink.file_rotation_enabled(), content="true") inspect(sink.file_rotation_enabled(), content="true")
@@ -125,14 +125,14 @@ test "runtime sink plain file helpers expose direct file state and policy" {
} }
match sink.file_state_or_none() { match sink.file_state_or_none() {
Some(snapshot) => { Some(snapshot) => {
inspect(snapshot.path, content="runtime-file-helpers.log") inspect(snapshot.path, content="logs/runtime-file-helpers.log")
inspect(snapshot.append, content="true") inspect(snapshot.append, content="true")
inspect(snapshot.auto_flush, content="false") inspect(snapshot.auto_flush, content="false")
} }
None => inspect(false, content="true") None => inspect(false, content="true")
} }
let state = sink.file_state() let state = sink.file_state()
inspect(state.path, content="runtime-file-helpers.log") inspect(state.path, content="logs/runtime-file-helpers.log")
inspect(state.available == sink.file_available(), content="true") inspect(state.available == sink.file_available(), content="true")
inspect(state.append, content="true") inspect(state.append, content="true")
inspect(state.auto_flush, content="false") inspect(state.auto_flush, content="false")
@@ -141,7 +141,7 @@ test "runtime sink plain file helpers expose direct file state and policy" {
inspect(snapshot.queued, content="false") inspect(snapshot.queued, content="false")
inspect(snapshot.pending_count, content="0") inspect(snapshot.pending_count, content="0")
inspect(snapshot.dropped_count, content="0") inspect(snapshot.dropped_count, content="0")
inspect(snapshot.file.path, content="runtime-file-helpers.log") inspect(snapshot.file.path, content="logs/runtime-file-helpers.log")
} }
None => inspect(false, content="true") None => inspect(false, content="true")
} }
@@ -170,7 +170,7 @@ test "runtime sink plain file helpers expose direct file state and policy" {
test "runtime sink queued file helpers preserve queue-aware file runtime state" { test "runtime sink queued file helpers preserve queue-aware file runtime state" {
let sink = RuntimeSink::QueuedFile( let sink = RuntimeSink::QueuedFile(
queued_sink( queued_sink(
file_sink("runtime-queued-file.log", auto_flush=false), file_sink("logs/runtime-queued-file.log", auto_flush=false),
max_pending=2, max_pending=2,
overflow=QueueOverflowPolicy::DropNewest, overflow=QueueOverflowPolicy::DropNewest,
), ),
@@ -185,10 +185,10 @@ test "runtime sink queued file helpers preserve queue-aware file runtime state"
logger.info("three") logger.info("three")
inspect(sink.file_available() == native_files_supported(), content="true") inspect(sink.file_available() == native_files_supported(), content="true")
match sink.file_path_or_none() { match sink.file_path_or_none() {
Some(path) => inspect(path, content="runtime-queued-file.log") Some(path) => inspect(path, content="logs/runtime-queued-file.log")
None => inspect(false, content="true") None => inspect(false, content="true")
} }
inspect(sink.file_path(), content="runtime-queued-file.log") inspect(sink.file_path(), content="logs/runtime-queued-file.log")
inspect(sink.file_policy_or_none() is None, content="false") inspect(sink.file_policy_or_none() is None, content="false")
inspect(sink.file_default_policy_or_none() is None, content="false") inspect(sink.file_default_policy_or_none() is None, content="false")
inspect(sink.file_state_or_none() is None, content="false") inspect(sink.file_state_or_none() is None, content="false")
@@ -199,7 +199,7 @@ test "runtime sink queued file helpers preserve queue-aware file runtime state"
inspect(snapshot.queued, content="true") inspect(snapshot.queued, content="true")
inspect(snapshot.pending_count, content="2") inspect(snapshot.pending_count, content="2")
inspect(snapshot.dropped_count, content="1") inspect(snapshot.dropped_count, content="1")
inspect(snapshot.file.path, content="runtime-queued-file.log") inspect(snapshot.file.path, content="logs/runtime-queued-file.log")
} }
None => inspect(false, content="true") None => inspect(false, content="true")
} }
+1 -1
View File
@@ -111,7 +111,7 @@ test "runtime sink progress helpers expose queue and plain file steps separately
inspect(queued_progress.file_backed, content="false") inspect(queued_progress.file_backed, content="false")
let file_sink = RuntimeSink::File( let file_sink = RuntimeSink::File(
file_sink("runtime-progress-direct.log", auto_flush=false), file_sink("logs/runtime-progress-direct.log", auto_flush=false),
) )
let file_progress = file_sink.flush_progress() let file_progress = file_sink.flush_progress()
inspect(file_progress.queue_advanced_count, content="0") inspect(file_progress.queue_advanced_count, content="0")