From ed99905e1d89e84b74a07a55a46270d1f9f27991 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 22 Jun 2017 14:28:57 +0000 Subject: [PATCH] runtime: adjust tests for gofrontend - don't run tests that depend on SetCgoTraceback - don't expect a '(' after the function name in a traceback - change the expected name of nested functions in a traceback These tests are not currently run, but they will be soon. Reviewed-on: https://go-review.googlesource.com/46453 From-SVN: r249557 --- gcc/go/gofrontend/MERGE | 2 +- libgo/go/runtime/crash_cgo_test.go | 12 ++++++++++++ libgo/go/runtime/crash_test.go | 18 ++++++++++++++++-- libgo/go/runtime/crash_unix_test.go | 2 +- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 42c8f853f7e..cb9022431e1 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -e017833e4ce4a3bc3ba02eac4351b15c86157ec0 +a81079a81b63714221674f07d13bedc768092f27 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/go/runtime/crash_cgo_test.go b/libgo/go/runtime/crash_cgo_test.go index 347b820eb5a..b338df985d3 100644 --- a/libgo/go/runtime/crash_cgo_test.go +++ b/libgo/go/runtime/crash_cgo_test.go @@ -251,6 +251,9 @@ func TestCgoCrashTraceback(t *testing.T) { if runtime.GOOS != "linux" || runtime.GOARCH != "amd64" { t.Skipf("not yet supported on %s/%s", runtime.GOOS, runtime.GOARCH) } + if runtime.Compiler == "gccgo" { + t.Skip("gccgo does not have SetCgoTraceback") + } got := runTestProg(t, "testprogcgo", "CrashTraceback") for i := 1; i <= 3; i++ { if !strings.Contains(got, fmt.Sprintf("cgo symbolizer:%d", i)) { @@ -261,6 +264,9 @@ func TestCgoCrashTraceback(t *testing.T) { func TestCgoTracebackContext(t *testing.T) { t.Parallel() + if runtime.Compiler == "gccgo" { + t.Skip("gccgo does not have SetCgoTraceback") + } got := runTestProg(t, "testprogcgo", "TracebackContext") want := "OK\n" if got != want { @@ -273,6 +279,9 @@ func testCgoPprof(t *testing.T, buildArg, runArg string) { if runtime.GOOS != "linux" || runtime.GOARCH != "amd64" { t.Skipf("not yet supported on %s/%s", runtime.GOOS, runtime.GOARCH) } + if runtime.Compiler == "gccgo" { + t.Skip("gccgo does not have SetCgoTraceback") + } testenv.MustHaveGoRun(t) exe, err := buildTestProg(t, "testprogcgo", buildArg) @@ -332,6 +341,9 @@ func TestRaceProf(t *testing.T) { if runtime.GOOS != "linux" || runtime.GOARCH != "amd64" { t.Skipf("not yet supported on %s/%s", runtime.GOOS, runtime.GOARCH) } + if runtime.Compiler == "gccgo" { + t.Skip("gccgo does not have SetCgoTraceback") + } testenv.MustHaveGoRun(t) diff --git a/libgo/go/runtime/crash_test.go b/libgo/go/runtime/crash_test.go index 9ec0ae468b7..4ba9d444b9c 100644 --- a/libgo/go/runtime/crash_test.go +++ b/libgo/go/runtime/crash_test.go @@ -225,6 +225,9 @@ func TestGoexitDeadlock(t *testing.T) { } func TestStackOverflow(t *testing.T) { + if runtime.Compiler == "gccgo" { + t.Skip("gccgo does not do stack overflow checking") + } output := runTestProg(t, "testprog", "StackOverflow") want := "runtime: goroutine stack exceeds 1474560-byte limit\nfatal error: stack overflow" if !strings.HasPrefix(output, want) { @@ -302,7 +305,7 @@ func TestNoHelperGoroutines(t *testing.T) { func TestBreakpoint(t *testing.T) { output := runTestProg(t, "testprog", "Breakpoint") - want := "runtime.Breakpoint()" + want := "runtime.Breakpoint" if !strings.Contains(output, want) { t.Fatalf("output:\n%s\n\nwant output containing: %s", output, want) } @@ -419,8 +422,16 @@ func TestPanicTraceback(t *testing.T) { // Check functions in the traceback. fns := []string{"main.pt1.func1", "panic", "main.pt2.func1", "panic", "main.pt2", "main.pt1"} + if runtime.Compiler == "gccgo" { + fns = []string{"main.$nested", "panic", "main.$nested", "panic", "main.pt2", "main.pt1"} + } for _, fn := range fns { - re := regexp.MustCompile(`(?m)^` + regexp.QuoteMeta(fn) + `\(.*\n`) + var re *regexp.Regexp + if runtime.Compiler != "gccgo" { + re = regexp.MustCompile(`(?m)^` + regexp.QuoteMeta(fn) + `\(.*\n`) + } else { + re = regexp.MustCompile(`(?m)^` + regexp.QuoteMeta(fn) + `.*\n`) + } idx := re.FindStringIndex(output) if idx == nil { t.Fatalf("expected %q function in traceback:\n%s", fn, output) @@ -454,6 +465,9 @@ func TestPanicLoop(t *testing.T) { func TestMemPprof(t *testing.T) { testenv.MustHaveGoRun(t) + if runtime.Compiler == "gccgo" { + t.Skip("gccgo may not have the pprof tool") + } exe, err := buildTestProg(t, "testprog") if err != nil { diff --git a/libgo/go/runtime/crash_unix_test.go b/libgo/go/runtime/crash_unix_test.go index 67ef3342946..7a29c1eba79 100644 --- a/libgo/go/runtime/crash_unix_test.go +++ b/libgo/go/runtime/crash_unix_test.go @@ -105,7 +105,7 @@ func TestCrashDumpsAllThreads(t *testing.T) { // Before https://golang.org/cl/2811 running threads would say // "goroutine running on other thread; stack unavailable". out = outbuf.Bytes() - n := bytes.Count(out, []byte("main.loop(")) + n := bytes.Count(out, []byte("main.loop")) if n != 4 { t.Errorf("found %d instances of main.loop; expected 4", n) t.Logf("%s", out) -- 2.30.2