internal/testenv: support testing gccgo
authorIan Lance Taylor <ian@gcc.gnu.org>
Wed, 14 Jun 2017 13:47:28 +0000 (13:47 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Wed, 14 Jun 2017 13:47:28 +0000 (13:47 +0000)
    If GO_TESTING_GOTOOLS is set in the environment, permit tests using
    gccgo to run the go tool. Like GO_BUILDER_NAME, this should not be set
    normally. But it is needed when testing the go tool itself, and will
    be set by the gotools Makefile in a future CL.

    Reviewed-on: https://go-review.googlesource.com/45693

From-SVN: r249195

gcc/go/gofrontend/MERGE
libgo/go/internal/testenv/testenv.go

index 4365d6e3b2ee45fef571a15a8853ad2ea40d848c..21bf5f28f22176a4cb841a254cc10d1edc032516 100644 (file)
@@ -1,4 +1,4 @@
-c0840d5826abb713487b2d8a04ab249764b21010
+6d1d558109b5f5e53b31cc3325485dbb9f06d430
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 71a692b367e239d8771e7f5a655281c8d3472263..8d416384022a95a871f93cb324aee04336ddf90a 100644 (file)
@@ -22,6 +22,13 @@ import (
        "testing"
 )
 
+// testingGotools reports whether we are testing the gotools directory
+// that is part of GCC. We just use an environment variable set by the
+// gotools check target.
+func testingGotools() bool {
+       return os.Getenv("GO_TESTING_GOTOOLS") != ""
+}
+
 // Builder reports the name of the builder running this test
 // (for example, "linux-amd64" or "windows-386-gce").
 // If the test is not running on the build infrastructure,
@@ -42,14 +49,16 @@ func HasGoBuild() bool {
                }
        }
        // gccgo tests can not run "go build".
-       return false
+       return testingGotools()
 }
 
 // MustHaveGoBuild checks that the current system can build programs with ``go build''
 // and then run them with os.StartProcess or exec.Command.
 // If not, MustHaveGoBuild calls t.Skip with an explanation.
 func MustHaveGoBuild(t *testing.T) {
-       t.Skip("skipping test: 'go build' not available for gccgo tests")
+       if !testingGotools() {
+               t.Skip("skipping test: 'go build' not available for gccgo tests")
+       }
        if !HasGoBuild() {
                t.Skipf("skipping test: 'go build' not available on %s/%s", runtime.GOOS, runtime.GOARCH)
        }
@@ -64,7 +73,9 @@ func HasGoRun() bool {
 // MustHaveGoRun checks that the current system can run programs with ``go run.''
 // If not, MustHaveGoRun calls t.Skip with an explanation.
 func MustHaveGoRun(t *testing.T) {
-       t.Skip("skipping test: 'go run' not available for gccgo tests")
+       if !testingGotools() {
+               t.Skip("skipping test: 'go run' not available for gccgo tests")
+       }
        if !HasGoRun() {
                t.Skipf("skipping test: 'go run' not available on %s/%s", runtime.GOOS, runtime.GOARCH)
        }