Commit 0818233f by Ian Lance Taylor

internal/testenv: support testing gccgo

    
    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
parent 6916d610
c0840d5826abb713487b2d8a04ab249764b21010 6d1d558109b5f5e53b31cc3325485dbb9f06d430
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -22,6 +22,13 @@ import ( ...@@ -22,6 +22,13 @@ import (
"testing" "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 // Builder reports the name of the builder running this test
// (for example, "linux-amd64" or "windows-386-gce"). // (for example, "linux-amd64" or "windows-386-gce").
// If the test is not running on the build infrastructure, // If the test is not running on the build infrastructure,
...@@ -42,14 +49,16 @@ func HasGoBuild() bool { ...@@ -42,14 +49,16 @@ func HasGoBuild() bool {
} }
} }
// gccgo tests can not run "go build". // gccgo tests can not run "go build".
return false return testingGotools()
} }
// MustHaveGoBuild checks that the current system can build programs with ``go build'' // MustHaveGoBuild checks that the current system can build programs with ``go build''
// and then run them with os.StartProcess or exec.Command. // and then run them with os.StartProcess or exec.Command.
// If not, MustHaveGoBuild calls t.Skip with an explanation. // If not, MustHaveGoBuild calls t.Skip with an explanation.
func MustHaveGoBuild(t *testing.T) { 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() { if !HasGoBuild() {
t.Skipf("skipping test: 'go build' not available on %s/%s", runtime.GOOS, runtime.GOARCH) t.Skipf("skipping test: 'go build' not available on %s/%s", runtime.GOOS, runtime.GOARCH)
} }
...@@ -64,7 +73,9 @@ func HasGoRun() bool { ...@@ -64,7 +73,9 @@ func HasGoRun() bool {
// MustHaveGoRun checks that the current system can run programs with ``go run.'' // MustHaveGoRun checks that the current system can run programs with ``go run.''
// If not, MustHaveGoRun calls t.Skip with an explanation. // If not, MustHaveGoRun calls t.Skip with an explanation.
func MustHaveGoRun(t *testing.T) { 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() { if !HasGoRun() {
t.Skipf("skipping test: 'go run' not available on %s/%s", runtime.GOOS, runtime.GOARCH) t.Skipf("skipping test: 'go run' not available on %s/%s", runtime.GOOS, runtime.GOARCH)
} }
......
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