mirror of
https://github.com/golang/go
synced 2024-11-23 07:10:05 -07:00
runtime: test Goexit/defer iteraction.
Make sure Goexit runs defers. Make sure recover() during a Goexit defer returns nil. LGTM=dvyukov, bradfitz R=golang-codereviews, dvyukov, bradfitz, khr CC=golang-codereviews https://golang.org/cl/140650043
This commit is contained in:
parent
1e4f86e485
commit
7e62316b84
@ -159,6 +159,22 @@ func TestGoexitCrash(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGoexitDefer(t *testing.T) {
|
||||
c := make(chan struct{})
|
||||
go func() {
|
||||
defer func() {
|
||||
r := recover()
|
||||
if r != nil {
|
||||
t.Errorf("non-nil recover during Goexit")
|
||||
}
|
||||
c <- struct{}{}
|
||||
}()
|
||||
runtime.Goexit()
|
||||
}()
|
||||
// Note: if the defer fails to run, we will get a deadlock here
|
||||
<-c
|
||||
}
|
||||
|
||||
func TestGoNil(t *testing.T) {
|
||||
output := executeTest(t, goNilSource, nil)
|
||||
want := "go of nil func value"
|
||||
|
Loading…
Reference in New Issue
Block a user