Add tests for custom type that panics in Stringer.
This commit is contained in:
parent
5c8d842977
commit
ad1d81b355
|
@ -50,6 +50,7 @@ base test element are also tested to ensure proper indirection across all types.
|
|||
- Struct that is circular through self referencing
|
||||
- Structs that are circular through cross referencing
|
||||
- Structs that are indirectly circular
|
||||
- Type that panics in its Stringer interface
|
||||
*/
|
||||
|
||||
package spew_test
|
||||
|
@ -748,6 +749,21 @@ func addCircularDumpTests() {
|
|||
addDumpTest(&pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")("+v3s2+")\n")
|
||||
}
|
||||
|
||||
func addPanicDumpTests() {
|
||||
// Type that panics in its Stringer interface.
|
||||
v := panicer(127)
|
||||
nv := (*panicer)(nil)
|
||||
pv := &v
|
||||
vAddr := fmt.Sprintf("%p", pv)
|
||||
pvAddr := fmt.Sprintf("%p", &pv)
|
||||
vt := "spew_test.panicer"
|
||||
vs := "(PANIC=test panic)127"
|
||||
addDumpTest(v, "("+vt+") "+vs+"\n")
|
||||
addDumpTest(pv, "(*"+vt+")("+vAddr+")("+vs+")\n")
|
||||
addDumpTest(&pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")("+vs+")\n")
|
||||
addDumpTest(nv, "(*"+vt+")(<nil>)\n")
|
||||
}
|
||||
|
||||
// TestDump executes all of the tests described by dumpTests.
|
||||
func TestDump(t *testing.T) {
|
||||
// Setup tests.
|
||||
|
@ -767,6 +783,7 @@ func TestDump(t *testing.T) {
|
|||
addChanDumpTests()
|
||||
addFuncDumpTests()
|
||||
addCircularDumpTests()
|
||||
addPanicDumpTests()
|
||||
|
||||
t.Logf("Running %d tests", len(dumpTests))
|
||||
for i, test := range dumpTests {
|
||||
|
|
|
@ -50,6 +50,7 @@ base test element are also tested to ensure proper indirection across all types.
|
|||
- Struct that is circular through self referencing
|
||||
- Structs that are circular through cross referencing
|
||||
- Structs that are indirectly circular
|
||||
- Type that panics in its Stringer interface
|
||||
*/
|
||||
|
||||
package spew_test
|
||||
|
@ -1222,6 +1223,33 @@ func addCircularFormatterTests() {
|
|||
addFormatterTest("%#+v", &pv3, "(**"+v3t+")("+pv3Addr+"->"+v3Addr+")"+v3s8)
|
||||
}
|
||||
|
||||
func addPanicFormatterTests() {
|
||||
// Type that panics in its Stringer interface.
|
||||
v := panicer(127)
|
||||
nv := (*panicer)(nil)
|
||||
pv := &v
|
||||
vAddr := fmt.Sprintf("%p", pv)
|
||||
pvAddr := fmt.Sprintf("%p", &pv)
|
||||
vt := "spew_test.panicer"
|
||||
vs := "(PANIC=test panic)127"
|
||||
addFormatterTest("%v", v, vs)
|
||||
addFormatterTest("%v", pv, "<*>"+vs)
|
||||
addFormatterTest("%v", &pv, "<**>"+vs)
|
||||
addFormatterTest("%v", nv, "<nil>")
|
||||
addFormatterTest("%+v", v, vs)
|
||||
addFormatterTest("%+v", pv, "<*>("+vAddr+")"+vs)
|
||||
addFormatterTest("%+v", &pv, "<**>("+pvAddr+"->"+vAddr+")"+vs)
|
||||
addFormatterTest("%+v", nv, "<nil>")
|
||||
addFormatterTest("%#v", v, "("+vt+")"+vs)
|
||||
addFormatterTest("%#v", pv, "(*"+vt+")"+vs)
|
||||
addFormatterTest("%#v", &pv, "(**"+vt+")"+vs)
|
||||
addFormatterTest("%#v", nv, "(*"+vt+")"+"<nil>")
|
||||
addFormatterTest("%#+v", v, "("+vt+")"+vs)
|
||||
addFormatterTest("%#+v", pv, "(*"+vt+")("+vAddr+")"+vs)
|
||||
addFormatterTest("%#+v", &pv, "(**"+vt+")("+pvAddr+"->"+vAddr+")"+vs)
|
||||
addFormatterTest("%#+v", nv, "(*"+vt+")"+"<nil>")
|
||||
}
|
||||
|
||||
// TestFormatter executes all of the tests described by formatterTests.
|
||||
func TestFormatter(t *testing.T) {
|
||||
// Setup tests.
|
||||
|
@ -1241,6 +1269,7 @@ func TestFormatter(t *testing.T) {
|
|||
addChanFormatterTests()
|
||||
addFuncFormatterTests()
|
||||
addCircularFormatterTests()
|
||||
addPanicFormatterTests()
|
||||
|
||||
t.Logf("Running %d tests", len(formatterTests))
|
||||
for i, test := range formatterTests {
|
||||
|
|
|
@ -50,6 +50,14 @@ func testFailed(result string, wants []string) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
// panicer is used to intentionally cause a panic for testing spew properly
|
||||
// handles them
|
||||
type panicer int
|
||||
|
||||
func (p panicer) String() string {
|
||||
panic("test panic")
|
||||
}
|
||||
|
||||
// spewFunc is used to identify which public function of the spew package or
|
||||
// ConfigState a test applies to.
|
||||
type spewFunc int
|
||||
|
|
Loading…
Reference in New Issue