diff mbox

libgo patch committed: Support testing gccgo go tool

Message ID CAOyqgcUR_J-tC2_EE7UJ_mTKsnVqiCXdSMst+2TGAjAbxqjXwg@mail.gmail.com
State New
Headers show

Commit Message

Ian Lance Taylor June 14, 2017, 1:47 p.m. UTC
This libgo patch adds a check for an environment variable in the
internal/testenv package.  If GO_TESTING_GOTOOLS is set in the
environment, this 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.  Bootstrapped and ran Go testsuite on
x86_64-pc-linux-gnu.  Committed to mainline.

Ian
diff mbox

Patch

Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE	(revision 249194)
+++ gcc/go/gofrontend/MERGE	(working copy)
@@ -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: libgo/go/internal/testenv/testenv.go
===================================================================
--- libgo/go/internal/testenv/testenv.go	(revision 249125)
+++ libgo/go/internal/testenv/testenv.go	(working copy)
@@ -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)
 	}