Commit 6a90b1d6 authored by Ian Lance Taylor's avatar Ian Lance Taylor

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 <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 2de67e99
...@@ -84,7 +84,6 @@ func TestMain(m *testing.M) { ...@@ -84,7 +84,6 @@ func TestMain(m *testing.M) {
// Don't let these environment variables confuse the test. // Don't let these environment variables confuse the test.
os.Unsetenv("GOBIN") os.Unsetenv("GOBIN")
os.Unsetenv("GOPATH") os.Unsetenv("GOPATH")
os.Unsetenv("GOROOT")
r := m.Run() r := m.Run()
......
...@@ -98,6 +98,16 @@ func TestGdbPython(t *testing.T) { ...@@ -98,6 +98,16 @@ func TestGdbPython(t *testing.T) {
firstLine := bytes.SplitN(got, []byte("\n"), 2)[0] firstLine := bytes.SplitN(got, []byte("\n"), 2)[0]
if string(firstLine) != "Loading Go Runtime support." { 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) t.Fatalf("failed to load Go runtime support: %s", firstLine)
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment