mirror of https://github.com/golang/go.git
misc/cgo/test: set the traceback level instead of failing the test
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>
This commit is contained in:
parent
bc8bb5b27a
commit
9f1a7192dc
|
|
@ -44,8 +44,8 @@ static void issue7978c(uint32_t *sync) {
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"runtime/debug"
|
||||||
"strings"
|
"strings"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
@ -114,12 +114,7 @@ func test7978(t *testing.T) {
|
||||||
if C.HAS_SYNC_FETCH_AND_ADD == 0 {
|
if C.HAS_SYNC_FETCH_AND_ADD == 0 {
|
||||||
t.Skip("clang required for __sync_fetch_and_add support on darwin/arm")
|
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") {
|
debug.SetTraceback("2")
|
||||||
t.Skip("GOTRACEBACK is not passed on to the exec wrapper")
|
|
||||||
}
|
|
||||||
if os.Getenv("GOTRACEBACK") != "2" {
|
|
||||||
t.Fatalf("GOTRACEBACK must be 2")
|
|
||||||
}
|
|
||||||
issue7978sync = 0
|
issue7978sync = 0
|
||||||
go issue7978go()
|
go issue7978go()
|
||||||
// test in c code, before callback
|
// test in c code, before callback
|
||||||
|
|
|
||||||
|
|
@ -874,14 +874,10 @@ func (t *tester) runHostTest(dir, pkg string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *tester) cgoTest(dt *distTest) error {
|
func (t *tester) cgoTest(dt *distTest) error {
|
||||||
env := append(os.Environ(), "GOTRACEBACK=2")
|
t.addCmd(dt, "misc/cgo/test", "go", "test", t.tags(), "-ldflags", "-linkmode=auto", t.runFlag(""))
|
||||||
|
|
||||||
cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", t.tags(), "-ldflags", "-linkmode=auto", t.runFlag(""))
|
|
||||||
cmd.Env = env
|
|
||||||
|
|
||||||
if t.internalLink() {
|
if t.internalLink() {
|
||||||
cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=internal", t.runFlag(""))
|
t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=internal", t.runFlag(""))
|
||||||
cmd.Env = env
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pair := t.gohostos + "-" + t.goarch
|
pair := t.gohostos + "-" + t.goarch
|
||||||
|
|
@ -893,24 +889,17 @@ func (t *tester) cgoTest(dt *distTest) error {
|
||||||
if !t.extLink() {
|
if !t.extLink() {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external")
|
t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external")
|
||||||
cmd.Env = env
|
t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external -s")
|
||||||
cmd = t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external -s")
|
|
||||||
cmd.Env = env
|
|
||||||
case "android-arm",
|
case "android-arm",
|
||||||
"dragonfly-386", "dragonfly-amd64",
|
"dragonfly-386", "dragonfly-amd64",
|
||||||
"freebsd-386", "freebsd-amd64", "freebsd-arm",
|
"freebsd-386", "freebsd-amd64", "freebsd-arm",
|
||||||
"linux-386", "linux-amd64", "linux-arm", "linux-ppc64le", "linux-s390x",
|
"linux-386", "linux-amd64", "linux-arm", "linux-ppc64le", "linux-s390x",
|
||||||
"netbsd-386", "netbsd-amd64":
|
"netbsd-386", "netbsd-amd64":
|
||||||
|
|
||||||
cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external")
|
t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=external")
|
||||||
cmd.Env = env
|
t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", "-linkmode=auto")
|
||||||
|
t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", "-linkmode=external")
|
||||||
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
|
|
||||||
|
|
||||||
switch pair {
|
switch pair {
|
||||||
case "netbsd-386", "netbsd-amd64":
|
case "netbsd-386", "netbsd-amd64":
|
||||||
|
|
@ -925,45 +914,30 @@ func (t *tester) cgoTest(dt *distTest) error {
|
||||||
cc := mustEnv("CC")
|
cc := mustEnv("CC")
|
||||||
cmd := t.dirCmd("misc/cgo/test",
|
cmd := t.dirCmd("misc/cgo/test",
|
||||||
cc, "-xc", "-o", "/dev/null", "-static", "-")
|
cc, "-xc", "-o", "/dev/null", "-static", "-")
|
||||||
cmd.Env = env
|
|
||||||
cmd.Stdin = strings.NewReader("int main() {}")
|
cmd.Stdin = strings.NewReader("int main() {}")
|
||||||
if err := cmd.Run(); err != nil {
|
if err := cmd.Run(); err != nil {
|
||||||
fmt.Println("No support for static linking found (lacks libc.a?), skip cgo static linking test.")
|
fmt.Println("No support for static linking found (lacks libc.a?), skip cgo static linking test.")
|
||||||
} else {
|
} else {
|
||||||
if t.goos != "android" {
|
if t.goos != "android" {
|
||||||
cmd = t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", `-linkmode=external -extldflags "-static -pthread"`)
|
t.addCmd(dt, "misc/cgo/testtls", "go", "test", "-ldflags", `-linkmode=external -extldflags "-static -pthread"`)
|
||||||
cmd.Env = env
|
|
||||||
}
|
}
|
||||||
|
t.addCmd(dt, "misc/cgo/nocgo", "go", "test")
|
||||||
cmd = t.addCmd(dt, "misc/cgo/nocgo", "go", "test")
|
t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external`)
|
||||||
cmd.Env = env
|
|
||||||
|
|
||||||
cmd = t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external`)
|
|
||||||
cmd.Env = env
|
|
||||||
|
|
||||||
if t.goos != "android" {
|
if t.goos != "android" {
|
||||||
cmd = t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external -extldflags "-static -pthread"`)
|
t.addCmd(dt, "misc/cgo/nocgo", "go", "test", "-ldflags", `-linkmode=external -extldflags "-static -pthread"`)
|
||||||
cmd.Env = env
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if pair != "freebsd-amd64" { // clang -pie fails to link misc/cgo/test
|
if pair != "freebsd-amd64" { // clang -pie fails to link misc/cgo/test
|
||||||
cmd := t.dirCmd("misc/cgo/test",
|
cmd := t.dirCmd("misc/cgo/test",
|
||||||
cc, "-xc", "-o", "/dev/null", "-pie", "-")
|
cc, "-xc", "-o", "/dev/null", "-pie", "-")
|
||||||
cmd.Env = env
|
|
||||||
cmd.Stdin = strings.NewReader("int main() {}")
|
cmd.Stdin = strings.NewReader("int main() {}")
|
||||||
if err := cmd.Run(); err != nil {
|
if err := cmd.Run(); err != nil {
|
||||||
fmt.Println("No support for -pie found, skip cgo PIE test.")
|
fmt.Println("No support for -pie found, skip cgo PIE test.")
|
||||||
} else {
|
} else {
|
||||||
cmd = t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", `-linkmode=external -extldflags "-pie"`)
|
t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", `-linkmode=external -extldflags "-pie"`)
|
||||||
cmd.Env = env
|
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"`)
|
||||||
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
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue