]> Cypherpunks repositories - gostls13.git/commitdiff
misc/cgo/test: set the traceback level instead of failing the test
authorBryan C. Mills <bcmills@google.com>
Tue, 12 Sep 2017 20:45:26 +0000 (16:45 -0400)
committerBryan Mills <bcmills@google.com>
Wed, 13 Sep 2017 02:53:11 +0000 (02:53 +0000)
Previously, test7978 failed if the user did not invoke it with
GOTRACEBACK=2 already set in their environment. Environment-sensitive
test are awkward, and in this case there is a very simple workaround:
set the traceback level to the necessary value explicitly.

Change-Id: I7d576f24138aa8a41392148eae11bbeaef558573
Reviewed-on: https://go-review.googlesource.com/63275
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
misc/cgo/test/issue7978.go
src/cmd/dist/test.go

index 7fb62e807ba8cca661794309bb2fb34c50d10743..b057e3eacb290bc216fc13510c188497848c6e83 100644 (file)
@@ -44,8 +44,8 @@ static void issue7978c(uint32_t *sync) {
 import "C"
 
 import (
-       "os"
        "runtime"
+       "runtime/debug"
        "strings"
        "sync/atomic"
        "testing"
@@ -114,12 +114,7 @@ func test7978(t *testing.T) {
        if C.HAS_SYNC_FETCH_AND_ADD == 0 {
                t.Skip("clang required for __sync_fetch_and_add support on darwin/arm")
        }
-       if runtime.GOOS == "android" || runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") {
-               t.Skip("GOTRACEBACK is not passed on to the exec wrapper")
-       }
-       if os.Getenv("GOTRACEBACK") != "2" {
-               t.Fatalf("GOTRACEBACK must be 2")
-       }
+       debug.SetTraceback("2")
        issue7978sync = 0
        go issue7978go()
        // test in c code, before callback
index 4b46f7f1a30a47e04b655d214b665afec51a4302..89cec9ae5454f61cc234c95394d847a75e9dac69 100644 (file)
@@ -874,14 +874,10 @@ func (t *tester) runHostTest(dir, pkg string) error {
 }
 
 func (t *tester) cgoTest(dt *distTest) error {
-       env := append(os.Environ(), "GOTRACEBACK=2")
-
-       cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", t.tags(), "-ldflags", "-linkmode=auto", t.runFlag(""))
-       cmd.Env = env
+       t.addCmd(dt, "misc/cgo/test", "go", "test", t.tags(), "-ldflags", "-linkmode=auto", t.runFlag(""))
 
        if t.internalLink() {
-               cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=internal", t.runFlag(""))
-               cmd.Env = env
+               t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=internal", t.runFlag(""))
        }
 
        pair := t.gohostos + "-" + t.goarch
@@ -893,24 +889,17 @@ func (t *tester) cgoTest(dt *distTest) error {
                if !t.extLink() {
                        break
                }
-               cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external")
-               cmd.Env = env
-               cmd = t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external -s")
-               cmd.Env = env
+               t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external")
+               t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external -s")
        case "android-arm",
                "dragonfly-386", "dragonfly-amd64",
                "freebsd-386", "freebsd-amd64", "freebsd-arm",
                "linux-386", "linux-amd64", "linux-arm", "linux-ppc64le", "linux-s390x",
                "netbsd-386", "netbsd-amd64":
 
-               cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external")
-               cmd.Env = env
-
-               cmd = t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", "-linkmode=auto")
-               cmd.Env = env
-
-               cmd = t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", "-linkmode=external")
-               cmd.Env = env
+               t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external")
+               t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", "-linkmode=auto")
+               t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", "-linkmode=external")
 
                switch pair {
                case "netbsd-386", "netbsd-amd64":
@@ -925,45 +914,30 @@ func (t *tester) cgoTest(dt *distTest) error {
                        cc := mustEnv("CC")
                        cmd := t.dirCmd("misc/cgo/test",
                                cc, "-xc", "-o", "/dev/null", "-static", "-")
-                       cmd.Env = env
                        cmd.Stdin = strings.NewReader("int main() {}")
                        if err := cmd.Run(); err != nil {
                                fmt.Println("No support for static linking found (lacks libc.a?), skip cgo static linking test.")
                        } else {
                                if t.goos != "android" {
-                                       cmd = t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", `-linkmode=external -extldflags "-static -pthread"`)
-                                       cmd.Env = env
+                                       t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", `-linkmode=external -extldflags "-static -pthread"`)
                                }
-
-                               cmd = t.addCmd(dt, "misc/cgo/nocgo", "go", "test")
-                               cmd.Env = env
-
-                               cmd = t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external`)
-                               cmd.Env = env
-
+                               t.addCmd(dt, "misc/cgo/nocgo", "go", "test")
+                               t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external`)
                                if t.goos != "android" {
-                                       cmd = t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external -extldflags "-static -pthread"`)
-                                       cmd.Env = env
+                                       t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external -extldflags "-static -pthread"`)
                                }
                        }
 
                        if pair != "freebsd-amd64" { // clang -pie fails to link misc/cgo/test
                                cmd := t.dirCmd("misc/cgo/test",
                                        cc, "-xc", "-o", "/dev/null", "-pie", "-")
-                               cmd.Env = env
                                cmd.Stdin = strings.NewReader("int main() {}")
                                if err := cmd.Run(); err != nil {
                                        fmt.Println("No support for -pie found, skip cgo PIE test.")
                                } else {
-                                       cmd = t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", `-linkmode=external -extldflags "-pie"`)
-                                       cmd.Env = env
-
-                                       cmd = t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", `-linkmode=external -extldflags "-pie"`)
-                                       cmd.Env = env
-
-                                       cmd = t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external -extldflags "-pie"`)
-                                       cmd.Env = env
-
+                                       t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", `-linkmode=external -extldflags "-pie"`)
+                                       t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", `-linkmode=external -extldflags "-pie"`)
+                                       t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external -extldflags "-pie"`)
                                }
                        }
                }