From 6a90b1d62100bd9fa8a4c6d566b990609c1c9d76 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 10 Jul 2015 05:20:20 -0700 Subject: [PATCH] runtime, cmd/go: fix tests to work when GOROOT_FINAL is set When GOROOT_FINAL is set when running all.bash, the tests are run before the files are copied to GOROOT_FINAL. The tests are run with GOROOT set, so most work fine. This fixes two cases that do not. In cmd/go/go_test.go we were explicitly removing GOROOT from the environment, causing tests that did not themselves explicitly set GOROOT to fail. There was no need to explicitly remove GOROOT, so don't do it. If people choose to run "go test cmd/go" with a bad GOROOT, that is their own lookout. In the runtime GDB test, the linker has told gdb to find the support script in GOROOT_FINAL, which will fail. Check for that case, and skip the test when we see it. Fixes #11652. Change-Id: I4d3a32311e3973c30fd8a79551aaeab6789d0451 Reviewed-on: https://go-review.googlesource.com/12021 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/cmd/go/go_test.go | 1 - src/runtime/runtime-gdb_test.go | 10 ++++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index 28bee16a00..12010fff42 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -84,7 +84,6 @@ func TestMain(m *testing.M) { // Don't let these environment variables confuse the test. os.Unsetenv("GOBIN") os.Unsetenv("GOPATH") - os.Unsetenv("GOROOT") r := m.Run() diff --git a/src/runtime/runtime-gdb_test.go b/src/runtime/runtime-gdb_test.go index f4014b2e05..a1c96bf134 100644 --- a/src/runtime/runtime-gdb_test.go +++ b/src/runtime/runtime-gdb_test.go @@ -98,6 +98,16 @@ func TestGdbPython(t *testing.T) { firstLine := bytes.SplitN(got, []byte("\n"), 2)[0] if string(firstLine) != "Loading Go Runtime support." { + // This can happen when using all.bash with + // GOROOT_FINAL set, because the tests are run before + // the final installation of the files. + cmd := exec.Command("go", "env", "GOROOT") + cmd.Env = []string{} + out, err := cmd.CombinedOutput() + if err != nil && bytes.Contains(out, []byte("cannot find GOROOT")) { + t.Skipf("skipping because GOROOT=%s does not exist", runtime.GOROOT()) + } + t.Fatalf("failed to load Go runtime support: %s", firstLine) }