runtime: adjust tests for gofrontend
authorIan Lance Taylor <ian@gcc.gnu.org>
Thu, 22 Jun 2017 14:28:57 +0000 (14:28 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 22 Jun 2017 14:28:57 +0000 (14:28 +0000)
    - 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
libgo/go/runtime/crash_cgo_test.go
libgo/go/runtime/crash_test.go
libgo/go/runtime/crash_unix_test.go

index 42c8f853f7e9dcfb2b1809dff743ba9feadbfa92..cb9022431e196ba83df30ac5b76bdf5fb17cf873 100644 (file)
@@ -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.
index 347b820eb5ac0a68792ab2a0041173e398ad1292..b338df985d334fa2d6eb3928355d3030a1a72196 100644 (file)
@@ -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)
 
index 9ec0ae468b755db516e9a46e141f6831a1b73b6c..4ba9d444b9c18e190041ff57268eacd5412d995c 100644 (file)
@@ -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 {
index 67ef3342946ac1be5347d1f3ca3ccb0269f876ca..7a29c1eba7945c215d4db5fa16207bfb58be6e7c 100644 (file)
@@ -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)