]> Cypherpunks repositories - gostls13.git/commitdiff
runtime, cmd/go: fix tests to work when GOROOT_FINAL is set
authorIan Lance Taylor <iant@golang.org>
Fri, 10 Jul 2015 12:20:20 +0000 (05:20 -0700)
committerIan Lance Taylor <iant@golang.org>
Fri, 10 Jul 2015 21:29:37 +0000 (21:29 +0000)
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: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/go/go_test.go
src/runtime/runtime-gdb_test.go

index 28bee16a00d96b19ab8f16c38cc9d91a343dc2a4..12010fff420478d1fa514b558ed52e7746c17bb7 100644 (file)
@@ -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()
 
index f4014b2e05276258d3275097e5b9e97b03588e25..a1c96bf134e322592a932b1a0718860366a27c23 100644 (file)
@@ -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)
        }