mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
all: enable more tests on macOS/ARM64
On macOS, we can do "go build", can exec, and have the source tree available, so we can enable more tests. Skip ones that don't work. Most of them are due to that it requires external linking (for now) and some tests don't work with external linking (e.g. runtime deadlock detection). For them, helper functions CanInternalLink/MustInternalLink are introduced. I still want to have internal linking implemented, but it is still a good idea to identify which tests don't work with external linking. Updates #38485. Change-Id: I6b14697573cf3f371daf54b9ddd792acf232f2f2 Reviewed-on: https://go-review.googlesource.com/c/go/+/260719 Trust: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
23e9e0c7f0
commit
f8df205e74
13 changed files with 123 additions and 20 deletions
|
|
@ -181,6 +181,9 @@ func TestCrashHandler(t *testing.T) {
|
|||
}
|
||||
|
||||
func testDeadlock(t *testing.T, name string) {
|
||||
// External linking brings in cgo, causing deadlock detection not working.
|
||||
testenv.MustInternalLink(t)
|
||||
|
||||
output := runTestProg(t, "testprog", name)
|
||||
want := "fatal error: all goroutines are asleep - deadlock!\n"
|
||||
if !strings.HasPrefix(output, want) {
|
||||
|
|
@ -205,6 +208,9 @@ func TestLockedDeadlock2(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestGoexitDeadlock(t *testing.T) {
|
||||
// External linking brings in cgo, causing deadlock detection not working.
|
||||
testenv.MustInternalLink(t)
|
||||
|
||||
output := runTestProg(t, "testprog", "GoexitDeadlock")
|
||||
want := "no goroutines (main called runtime.Goexit) - deadlock!"
|
||||
if !strings.Contains(output, want) {
|
||||
|
|
@ -290,6 +296,9 @@ func TestRecursivePanic4(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestGoexitCrash(t *testing.T) {
|
||||
// External linking brings in cgo, causing deadlock detection not working.
|
||||
testenv.MustInternalLink(t)
|
||||
|
||||
output := runTestProg(t, "testprog", "GoexitExit")
|
||||
want := "no goroutines (main called runtime.Goexit) - deadlock!"
|
||||
if !strings.Contains(output, want) {
|
||||
|
|
@ -348,6 +357,9 @@ func TestBreakpoint(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestGoexitInPanic(t *testing.T) {
|
||||
// External linking brings in cgo, causing deadlock detection not working.
|
||||
testenv.MustInternalLink(t)
|
||||
|
||||
// see issue 8774: this code used to trigger an infinite recursion
|
||||
output := runTestProg(t, "testprog", "GoexitInPanic")
|
||||
want := "fatal error: no goroutines (main called runtime.Goexit) - deadlock!"
|
||||
|
|
@ -412,6 +424,9 @@ func TestPanicAfterGoexit(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRecoveredPanicAfterGoexit(t *testing.T) {
|
||||
// External linking brings in cgo, causing deadlock detection not working.
|
||||
testenv.MustInternalLink(t)
|
||||
|
||||
output := runTestProg(t, "testprog", "RecoveredPanicAfterGoexit")
|
||||
want := "fatal error: no goroutines (main called runtime.Goexit) - deadlock!"
|
||||
if !strings.HasPrefix(output, want) {
|
||||
|
|
@ -420,6 +435,9 @@ func TestRecoveredPanicAfterGoexit(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRecoverBeforePanicAfterGoexit(t *testing.T) {
|
||||
// External linking brings in cgo, causing deadlock detection not working.
|
||||
testenv.MustInternalLink(t)
|
||||
|
||||
t.Parallel()
|
||||
output := runTestProg(t, "testprog", "RecoverBeforePanicAfterGoexit")
|
||||
want := "fatal error: no goroutines (main called runtime.Goexit) - deadlock!"
|
||||
|
|
@ -429,6 +447,9 @@ func TestRecoverBeforePanicAfterGoexit(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestRecoverBeforePanicAfterGoexit2(t *testing.T) {
|
||||
// External linking brings in cgo, causing deadlock detection not working.
|
||||
testenv.MustInternalLink(t)
|
||||
|
||||
t.Parallel()
|
||||
output := runTestProg(t, "testprog", "RecoverBeforePanicAfterGoexit2")
|
||||
want := "fatal error: no goroutines (main called runtime.Goexit) - deadlock!"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue