48 lines
1.7 KiB
Go
48 lines
1.7 KiB
Go
// Copyright 2020 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package runtime_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// Test that panics print out the underlying value
|
|
// when the underlying kind is directly printable.
|
|
// Issue: https://golang.org/issues/37531
|
|
func TestPanicWithDirectlyPrintableCustomTypes(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
wantPanicPrefix string
|
|
}{
|
|
{"panicCustomBool", `panic: main.MyBool(true)`},
|
|
{"panicCustomComplex128", `panic: main.MyComplex128(+3.210000e+001+1.000000e+001i)`},
|
|
{"panicCustomComplex64", `panic: main.MyComplex64(+1.100000e-001+3.000000e+000i)`},
|
|
{"panicCustomFloat32", `panic: main.MyFloat32(-9.370000e+001)`},
|
|
{"panicCustomFloat64", `panic: main.MyFloat64(-9.370000e+001)`},
|
|
{"panicCustomInt", `panic: main.MyInt(93)`},
|
|
{"panicCustomInt8", `panic: main.MyInt8(93)`},
|
|
{"panicCustomInt16", `panic: main.MyInt16(93)`},
|
|
{"panicCustomInt32", `panic: main.MyInt32(93)`},
|
|
{"panicCustomInt64", `panic: main.MyInt64(93)`},
|
|
{"panicCustomString", `panic: main.MyString("Panic")`},
|
|
{"panicCustomUint", `panic: main.MyUint(93)`},
|
|
{"panicCustomUint8", `panic: main.MyUint8(93)`},
|
|
{"panicCustomUint16", `panic: main.MyUint16(93)`},
|
|
{"panicCustomUint32", `panic: main.MyUint32(93)`},
|
|
{"panicCustomUint64", `panic: main.MyUint64(93)`},
|
|
{"panicCustomUintptr", `panic: main.MyUintptr(93)`},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t := t
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
output := runTestProg(t, "testprog", tt.name)
|
|
if !strings.HasPrefix(output, tt.wantPanicPrefix) {
|
|
t.Fatalf("%q\nis not present in\n%s", tt.wantPanicPrefix, output)
|
|
}
|
|
})
|
|
}
|
|
}
|