mirror of
https://github.com/golang/go
synced 2024-11-18 15:44:41 -07:00
log/slog: fix time regexp in test
CL 525556 started using timeRE regexp to match time output from JSON handler, and relaxed it to allow arbitrary (rather than fixed 3 digit) precision. What it missed is in JSON handler the fractional part is omitted entirely (together with the decimal dot) when the nanoseconds field is 0. As a result, there are occasional CI failures in js/wasm (which, I guess, has better chances to return zero nanoseconds). To fix the flaky test, let's use two different regular expressions, tailored to text and JSON. Change-Id: Ie98990fcf278bb0916ab31c9177e6b22a523062a Reviewed-on: https://go-review.googlesource.com/c/go/+/530675 Run-TryBot: Kirill Kolyshkin <kolyshkin@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Ian Lance Taylor <iant@golang.org> Reviewed-by: Than McIntosh <thanm@google.com> Reviewed-by: Andy Pan <panjf2000@gmail.com> Reviewed-by: Jonathan Amsterdam <jba@google.com>
This commit is contained in:
parent
17bddc8bf4
commit
0de57ebf88
@ -22,7 +22,13 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const timeRE = `\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{1,9}(Z|[+-]\d{2}:\d{2})`
|
||||
// textTimeRE is a regexp to match log timestamps for Text handler.
|
||||
// This is RFC3339Nano with the fixed 3 digit sub-second precision.
|
||||
const textTimeRE = `\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}(Z|[+-]\d{2}:\d{2})`
|
||||
|
||||
// jsonTimeRE is a regexp to match log timestamps for Text handler.
|
||||
// This is RFC3339Nano with an arbitrary sub-second precision.
|
||||
const jsonTimeRE = `\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})`
|
||||
|
||||
func TestLogTextHandler(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
@ -33,7 +39,7 @@ func TestLogTextHandler(t *testing.T) {
|
||||
check := func(want string) {
|
||||
t.Helper()
|
||||
if want != "" {
|
||||
want = "time=" + timeRE + " " + want
|
||||
want = "time=" + textTimeRE + " " + want
|
||||
}
|
||||
checkLogOutput(t, buf.String(), want)
|
||||
buf.Reset()
|
||||
@ -118,7 +124,7 @@ func TestConnections(t *testing.T) {
|
||||
// log.Logger's output goes through the handler.
|
||||
SetDefault(New(NewTextHandler(&slogbuf, &HandlerOptions{AddSource: true})))
|
||||
log.Print("msg2")
|
||||
checkLogOutput(t, slogbuf.String(), "time="+timeRE+` level=INFO source=.*logger_test.go:\d{3}"? msg=msg2`)
|
||||
checkLogOutput(t, slogbuf.String(), "time="+textTimeRE+` level=INFO source=.*logger_test.go:\d{3}"? msg=msg2`)
|
||||
|
||||
// The default log.Logger always outputs at Info level.
|
||||
slogbuf.Reset()
|
||||
@ -381,7 +387,7 @@ func TestNewLogLogger(t *testing.T) {
|
||||
h := NewTextHandler(&buf, nil)
|
||||
ll := NewLogLogger(h, LevelWarn)
|
||||
ll.Print("hello")
|
||||
checkLogOutput(t, buf.String(), "time="+timeRE+` level=WARN msg=hello`)
|
||||
checkLogOutput(t, buf.String(), "time="+textTimeRE+` level=WARN msg=hello`)
|
||||
}
|
||||
|
||||
func TestLoggerNoOps(t *testing.T) {
|
||||
@ -633,10 +639,10 @@ func TestPanics(t *testing.T) {
|
||||
in any
|
||||
out string
|
||||
}{
|
||||
{(*panicTextAndJsonMarshaler)(nil), `{"time":"` + timeRE + `","level":"INFO","msg":"msg","p":null}`},
|
||||
{panicTextAndJsonMarshaler{io.ErrUnexpectedEOF}, `{"time":"` + timeRE + `","level":"INFO","msg":"msg","p":"!PANIC: unexpected EOF"}`},
|
||||
{panicTextAndJsonMarshaler{"panicking"}, `{"time":"` + timeRE + `","level":"INFO","msg":"msg","p":"!PANIC: panicking"}`},
|
||||
{panicTextAndJsonMarshaler{42}, `{"time":"` + timeRE + `","level":"INFO","msg":"msg","p":"!PANIC: 42"}`},
|
||||
{(*panicTextAndJsonMarshaler)(nil), `{"time":"` + jsonTimeRE + `","level":"INFO","msg":"msg","p":null}`},
|
||||
{panicTextAndJsonMarshaler{io.ErrUnexpectedEOF}, `{"time":"` + jsonTimeRE + `","level":"INFO","msg":"msg","p":"!PANIC: unexpected EOF"}`},
|
||||
{panicTextAndJsonMarshaler{"panicking"}, `{"time":"` + jsonTimeRE + `","level":"INFO","msg":"msg","p":"!PANIC: panicking"}`},
|
||||
{panicTextAndJsonMarshaler{42}, `{"time":"` + jsonTimeRE + `","level":"INFO","msg":"msg","p":"!PANIC: 42"}`},
|
||||
} {
|
||||
Info("msg", "p", pt.in)
|
||||
checkLogOutput(t, logBuf.String(), pt.out)
|
||||
|
Loading…
Reference in New Issue
Block a user