@@ -52,7 +52,7 @@ func (p pointErr) MarshalText() ([]byte, error) {
5252}
5353
5454// Logging this should result in the MarshalLog() value.
55- type Tmarshaler string
55+ type Tmarshaler struct { val string }
5656
5757func (t Tmarshaler ) MarshalLog () interface {} {
5858 return struct { Inner string }{"I am a logr.Marshaler" }
@@ -66,8 +66,15 @@ func (t Tmarshaler) Error() string {
6666 return "Error(): you should not see this"
6767}
6868
69+ // Logging this should result in a panic.
70+ type Tmarshalerpanic struct { val string }
71+
72+ func (t Tmarshalerpanic ) MarshalLog () interface {} {
73+ panic ("Tmarshalerpanic" )
74+ }
75+
6976// Logging this should result in the String() value.
70- type Tstringer string
77+ type Tstringer struct { val string }
7178
7279func (t Tstringer ) String () string {
7380 return "I am a fmt.Stringer"
@@ -77,6 +84,27 @@ func (t Tstringer) Error() string {
7784 return "Error(): you should not see this"
7885}
7986
87+ // Logging this should result in a panic.
88+ type Tstringerpanic struct { val string }
89+
90+ func (t Tstringerpanic ) String () string {
91+ panic ("Tstringerpanic" )
92+ }
93+
94+ // Logging this should result in the Error() value.
95+ type Terror struct { val string }
96+
97+ func (t Terror ) Error () string {
98+ return "I am an error"
99+ }
100+
101+ // Logging this should result in a panic.
102+ type Terrorpanic struct { val string }
103+
104+ func (t Terrorpanic ) Error () string {
105+ panic ("Terrorpanic" )
106+ }
107+
80108type TjsontagsString struct {
81109 String1 string `json:"string1"` // renamed
82110 String2 string `json:"-"` // ignored
@@ -351,16 +379,52 @@ func TestPretty(t *testing.T) {
351379 },
352380 },
353381 {
354- val : Tmarshaler ( "foobar" ) ,
382+ val : Tmarshaler { "foobar" } ,
355383 exp : `{"Inner":"I am a logr.Marshaler"}` ,
356384 },
357385 {
358- val : Tstringer ("foobar" ),
386+ val : & Tmarshaler {"foobar" },
387+ exp : `{"Inner":"I am a logr.Marshaler"}` ,
388+ },
389+ {
390+ val : (* Tmarshaler )(nil ),
391+ exp : `"<panic: value method github.com/go-logr/logr/funcr.Tmarshaler.MarshalLog called using nil *Tmarshaler pointer>"` ,
392+ },
393+ {
394+ val : Tmarshalerpanic {"foobar" },
395+ exp : `"<panic: Tmarshalerpanic>"` ,
396+ },
397+ {
398+ val : Tstringer {"foobar" },
399+ exp : `"I am a fmt.Stringer"` ,
400+ },
401+ {
402+ val : & Tstringer {"foobar" },
359403 exp : `"I am a fmt.Stringer"` ,
360404 },
361405 {
362- val : fmt .Errorf ("error" ),
363- exp : `"error"` ,
406+ val : (* Tstringer )(nil ),
407+ exp : `"<panic: value method github.com/go-logr/logr/funcr.Tstringer.String called using nil *Tstringer pointer>"` ,
408+ },
409+ {
410+ val : Tstringerpanic {"foobar" },
411+ exp : `"<panic: Tstringerpanic>"` ,
412+ },
413+ {
414+ val : Terror {"foobar" },
415+ exp : `"I am an error"` ,
416+ },
417+ {
418+ val : & Terror {"foobar" },
419+ exp : `"I am an error"` ,
420+ },
421+ {
422+ val : (* Terror )(nil ),
423+ exp : `"<panic: value method github.com/go-logr/logr/funcr.Terror.Error called using nil *Terror pointer>"` ,
424+ },
425+ {
426+ val : Terrorpanic {"foobar" },
427+ exp : `"<panic: Terrorpanic>"` ,
364428 },
365429 {
366430 val : TjsontagsString {
0 commit comments