From 7aae120ad92251fc9e872e6d1fecb339fc8505ce Mon Sep 17 00:00:00 2001 From: cu-min Date: Wed, 12 Aug 2026 16:20:47 +0800 Subject: [PATCH] slog-handler-guide: make time regex timezone-aware The indenthandler tests assert the log timestamp with 'time: [-0-9T:.]+Z?', which only accepts a UTC 'Z' suffix. On non-UTC hosts log/slog emits a numeric offset (e.g. '2026-08-12T16:00:00.858525+08:00') and the tests fail because '+' and the offset are not matched. Extend the regex to also accept a numeric UTC offset: time: [-0-9T:.]+(Z|[+-][0-9]{2}:[0-9]{2})? --- slog-handler-guide/indenthandler1/indent_handler_test.go | 2 +- slog-handler-guide/indenthandler2/indent_handler_test.go | 2 +- slog-handler-guide/indenthandler3/indent_handler_test.go | 2 +- slog-handler-guide/indenthandler4/indent_handler_test.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/slog-handler-guide/indenthandler1/indent_handler_test.go b/slog-handler-guide/indenthandler1/indent_handler_test.go index b295fa66..3165c999 100644 --- a/slog-handler-guide/indenthandler1/indent_handler_test.go +++ b/slog-handler-guide/indenthandler1/indent_handler_test.go @@ -15,7 +15,7 @@ func Test(t *testing.T) { l := slog.New(New(&buf, nil)) l.Info("hello", "a", 1, "b", true, "c", 3.14, slog.Group("g", "h", 1, "i", 2), "d", "NO") got := buf.String() - wantre := `time: [-0-9T:.]+Z? + wantre := `time: [-0-9T:.]+(Z|[+-][0-9]{2}:[0-9]{2})? level: INFO source: ".*/indent_handler_test.go:\d+" msg: "hello" diff --git a/slog-handler-guide/indenthandler2/indent_handler_test.go b/slog-handler-guide/indenthandler2/indent_handler_test.go index 40633525..d3f8bbaa 100644 --- a/slog-handler-guide/indenthandler2/indent_handler_test.go +++ b/slog-handler-guide/indenthandler2/indent_handler_test.go @@ -32,7 +32,7 @@ func Test(t *testing.T) { l := slog.New(New(&buf, nil)) l.Info("hello", "a", 1, "b", true, "c", 3.14, slog.Group("g", "h", 1, "i", 2), "d", "NO") got := buf.String() - wantre := `time: [-0-9T:.]+Z? + wantre := `time: [-0-9T:.]+(Z|[+-][0-9]{2}:[0-9]{2})? level: INFO source: ".*/indent_handler_test.go:\d+" msg: "hello" diff --git a/slog-handler-guide/indenthandler3/indent_handler_test.go b/slog-handler-guide/indenthandler3/indent_handler_test.go index 8f6e99ca..461b5a8f 100644 --- a/slog-handler-guide/indenthandler3/indent_handler_test.go +++ b/slog-handler-guide/indenthandler3/indent_handler_test.go @@ -31,7 +31,7 @@ func Test(t *testing.T) { l := slog.New(New(&buf, nil)) l.Info("hello", "a", 1, "b", true, "c", 3.14, slog.Group("g", "h", 1, "i", 2), "d", "NO") got := buf.String() - wantre := `time: [-0-9T:.]+Z? + wantre := `time: [-0-9T:.]+(Z|[+-][0-9]{2}:[0-9]{2})? level: INFO source: ".*/indent_handler_test.go:\d+" msg: "hello" diff --git a/slog-handler-guide/indenthandler4/indent_handler_test.go b/slog-handler-guide/indenthandler4/indent_handler_test.go index 8f6e99ca..461b5a8f 100644 --- a/slog-handler-guide/indenthandler4/indent_handler_test.go +++ b/slog-handler-guide/indenthandler4/indent_handler_test.go @@ -31,7 +31,7 @@ func Test(t *testing.T) { l := slog.New(New(&buf, nil)) l.Info("hello", "a", 1, "b", true, "c", 3.14, slog.Group("g", "h", 1, "i", 2), "d", "NO") got := buf.String() - wantre := `time: [-0-9T:.]+Z? + wantre := `time: [-0-9T:.]+(Z|[+-][0-9]{2}:[0-9]{2})? level: INFO source: ".*/indent_handler_test.go:\d+" msg: "hello"