From b6fb6673bc1d132025b75fb6d3928775d959a8e3 Mon Sep 17 00:00:00 2001 From: Marcel van Lohuizen Date: Fri, 1 Mar 2019 09:31:30 -0400 Subject: [PATCH] fmt: refined tests for non-string error verbs This is a refinement of CL 164557. Make it explicit in tests that using a non-string verb with fmtError does not result in falling back to using fmt.Formatter. Change-Id: I6d090f31818eb7cc7668d7565b1449c91cd03a23 Reviewed-on: https://go-review.googlesource.com/c/go/+/164701 Run-TryBot: Marcel van Lohuizen TryBot-Result: Gobot Gobot Reviewed-by: Damien Neil --- src/fmt/errors_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/fmt/errors_test.go b/src/fmt/errors_test.go index d2957e675b..a3cd26ef3e 100644 --- a/src/fmt/errors_test.go +++ b/src/fmt/errors_test.go @@ -353,6 +353,10 @@ func TestErrorFormatter(t *testing.T) { err: intError(4), fmt: "%d", want: "4", + }, { + err: intError(4), + fmt: "%🤪", + want: "%!🤪(fmt_test.intError=4)", }} for i, tc := range testCases { t.Run(fmt.Sprintf("%d/%s", i, tc.fmt), func(t *testing.T) { @@ -446,6 +450,12 @@ type intError int func (e intError) Error() string { return fmt.Sprint(e) } +func (e wrapped) Format(w fmt.State, r rune) { + // Test that the normal fallback handling after handleMethod for + // non-string verbs is used. This path should not be reached. + fmt.Fprintf(w, "Unreachable: %d", e) +} + func (e intError) FormatError(p errors.Printer) (next error) { p.Printf("error %d", e) return nil -- 2.50.0