cmd/go: pass down testing gccgo in TestScript

This permits TestScript to work when gccgo is not installed.
    Previous testing was using a previously installed gccgo, not the newly
    built one.
    
    This revealed that the testing of whether an internal package is
    permitted was incorrect for standard library packages, since the
    uninstalled gccgo can see internal packages in the uninstalled libgo.
    Fix the internal package tests.
    
    This permitted removing a couple of gccgo-specific changes in the
    testsuite.
    
    Reviewed-on: https://go-review.googlesource.com/137255

From-SVN: r264570
This commit is contained in:
Ian Lance Taylor 2018-09-25 14:16:32 +00:00
parent 97b8f8679d
commit b16084d244
4 changed files with 12 additions and 5 deletions

View File

@ -1,4 +1,4 @@
7b25b4dff4778fc4d6b5d6e10594814146b3e5dd
1dbc5b805a1665079008d1ce341991c3554c1eeb
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -953,8 +953,14 @@ func disallowInternal(srcDir string, importer *Package, importerPath string, p *
}
// We can't check standard packages with gccgo.
if cfg.BuildContext.Compiler == "gccgo" && p.Standard {
return p
if cfg.BuildContext.Compiler == "gccgo" {
if importer == nil {
if p.Standard {
return p
}
} else if importer.Standard || strings.HasPrefix(importerPath, "cmd/") {
return p
}
}
// The stack includes p.ImportPath.

View File

@ -78,6 +78,7 @@ var extraEnvKeys = []string{
// For gccgo testing.
"GO_TESTING_GOTOOLS",
"GCCGO",
"GCCGOTOOLDIR",
}

View File

@ -16,11 +16,11 @@ stderr 'use of internal package golang.org/x/.* not allowed'
# Internal packages in the standard library should not leak into modules.
! go build ./fromstd
[!gccgo] stderr 'use of internal package internal/testenv not allowed'
stderr 'use of internal package internal/testenv not allowed'
# Packages found via standard-library vendoring should not leak.
! go build ./fromstdvendor
[!gccgo] stderr 'use of vendored package golang_org/x/net/http/httpguts not allowed'
stderr 'use of vendored package golang_org/x/net/http/httpguts not allowed'
env GO111MODULE=off
! go build ./fromstdvendor