]> Cypherpunks.ru repositories - gostls13.git/commitdiff
[release-branch.go1.21] runtime: don't let the tests leave core files behind
authorIan Lance Taylor <iant@golang.org>
Fri, 1 Sep 2023 19:52:48 +0000 (12:52 -0700)
committerCarlos Amedee <carlos@golang.org>
Tue, 27 Feb 2024 21:42:04 +0000 (21:42 +0000)
Also add a check that we didn't leave any core files behind.

For #65476.
Fixes #65478.

Change-Id: I30444ef43ad1a8cc1cacd3b75280f2128e104939
Reviewed-on: https://go-review.googlesource.com/c/go/+/525175
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@golang.org>
(cherry picked from commit cffdfe8d2cabbe874bceaeed1eba92cc567be6db)
Reviewed-on: https://go-review.googlesource.com/c/go/+/560896

src/runtime/crash_test.go
src/runtime/crash_unix_test.go
src/runtime/testdata/testprogcgo/threadprof.go

index 8f11333b462535f4e94e2646c177d57dc1c834eb..53f7028882d164e9cdb857cb29262c2658a3f8fe 100644 (file)
@@ -24,10 +24,21 @@ import (
 var toRemove []string
 
 func TestMain(m *testing.M) {
+       _, coreErrBefore := os.Stat("core")
+
        status := m.Run()
        for _, file := range toRemove {
                os.RemoveAll(file)
        }
+
+       _, coreErrAfter := os.Stat("core")
+       if coreErrBefore != nil && coreErrAfter == nil {
+               fmt.Fprintln(os.Stderr, "runtime.test: some test left a core file behind")
+               if status == 0 {
+                       status = 1
+               }
+       }
+
        os.Exit(status)
 }
 
index 8d205e1de5389d1ff7309cb907483c272f66ac11..cc60bfb7dd04859a7eb9ad930f6212d64b27a8dc 100644 (file)
@@ -91,6 +91,7 @@ func TestCrashDumpsAllThreads(t *testing.T) {
 
        cmd := testenv.Command(t, exe, "CrashDumpsAllThreads")
        cmd = testenv.CleanCmdEnv(cmd)
+       cmd.Dir = t.TempDir() // put any core file in tempdir
        cmd.Env = append(cmd.Env,
                "GOTRACEBACK=crash",
                // Set GOGC=off. Because of golang.org/issue/10958, the tight
@@ -164,6 +165,7 @@ func TestPanicSystemstack(t *testing.T) {
        t.Parallel()
        cmd := exec.Command(os.Args[0], "testPanicSystemstackInternal")
        cmd = testenv.CleanCmdEnv(cmd)
+       cmd.Dir = t.TempDir() // put any core file in tempdir
        cmd.Env = append(cmd.Env, "GOTRACEBACK=crash")
        pr, pw, err := os.Pipe()
        if err != nil {
index d62d4b4be839f7cb2bc9bb495c6d636dd3746d1a..00b511d23be6092d2fe6b4b03ed74262b4d89911 100644 (file)
@@ -92,7 +92,9 @@ func CgoExternalThreadSignal() {
                return
        }
 
-       out, err := exec.Command(os.Args[0], "CgoExternalThreadSignal", "crash").CombinedOutput()
+       cmd := exec.Command(os.Args[0], "CgoExternalThreadSignal", "crash")
+       cmd.Dir = os.TempDir() // put any core file in tempdir
+       out, err := cmd.CombinedOutput()
        if err == nil {
                fmt.Println("C signal did not crash as expected")
                fmt.Printf("\n%s\n", out)