]> Cypherpunks.ru repositories - gostls13.git/commitdiff
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)
committerGopher Robot <gobot@golang.org>
Tue, 5 Sep 2023 22:43:54 +0000 (22:43 +0000)
Also add a check that we didn't leave any core files behind.

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>
src/runtime/crash_test.go
src/runtime/crash_unix_test.go
src/runtime/testdata/testprogcgo/threadprof.go

index 5eccf86e1a751914e1c48ace1125cd0265d1e2ff..df75658750f271211c009d0b0d811637f2684c8d 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 8f6880b417648d1178c1250354662a0976759402..fbd7626225ca7d67df1de420141123308cf9f03c 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)