]> Cypherpunks repositories - gostls13.git/commitdiff
fmt: refined tests for non-string error verbs
authorMarcel van Lohuizen <mpvl@golang.org>
Fri, 1 Mar 2019 13:31:30 +0000 (09:31 -0400)
committerMarcel van Lohuizen <mpvl@golang.org>
Thu, 14 Mar 2019 09:30:54 +0000 (09:30 +0000)
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 <mpvl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
src/fmt/errors_test.go

index d2957e675b164bbd8672480c3e3cf656d1096990..a3cd26ef3e3fd938a52ee6fb3a31f0568b824431 100644 (file)
@@ -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