From: Marcel van Lohuizen Date: Fri, 1 Mar 2019 13:31:30 +0000 (-0400) Subject: fmt: refined tests for non-string error verbs X-Git-Tag: go1.13beta1~1043 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b6fb6673bc1d132025b75fb6d3928775d959a8e3;p=gostls13.git 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 --- 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