1
0
mirror of https://github.com/golang/go synced 2024-11-17 17:54:48 -07:00

cmd/go: convert more tests to the script framework

Part of converting all tests to script framework to improve
test parallelism.

Updates #36320
Updates #17751

Change-Id: I394844da1ffc0dcde7f5862c41ed8efa7c5ca088
Reviewed-on: https://go-review.googlesource.com/c/go/+/214429
Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
Michael Matloob 2020-01-13 11:30:52 -05:00
parent ff811c8396
commit 4d6c171a1b
9 changed files with 76 additions and 101 deletions

View File

@ -1102,42 +1102,6 @@ func TestAccidentalGitCheckout(t *testing.T) {
} }
} }
func TestVersionControlErrorMessageIncludesCorrectDirectory(t *testing.T) {
tg := testgo(t)
defer tg.cleanup()
tg.setenv("GOPATH", filepath.Join(tg.pwd(), "testdata/shadow/root1"))
tg.runFail("get", "-u", "foo")
// TODO(iant): We should not have to use strconv.Quote here.
// The code in vcs.go should be changed so that it is not required.
quoted := strconv.Quote(filepath.Join("testdata", "shadow", "root1", "src", "foo"))
quoted = quoted[1 : len(quoted)-1]
tg.grepStderr(regexp.QuoteMeta(quoted), "go get -u error does not mention shadow/root1/src/foo")
}
// Issue 21895
func TestMSanAndRaceRequireCgo(t *testing.T) {
if !canMSan && !canRace {
t.Skip("skipping because both msan and the race detector are not supported")
}
tg := testgo(t)
defer tg.cleanup()
tg.tempFile("triv.go", `package main; func main() {}`)
tg.setenv("CGO_ENABLED", "0")
if canRace {
tg.runFail("install", "-race", "triv.go")
tg.grepStderr("-race requires cgo", "did not correctly report that -race requires cgo")
tg.grepStderrNot("-msan", "reported that -msan instead of -race requires cgo")
}
if canMSan {
tg.runFail("install", "-msan", "triv.go")
tg.grepStderr("-msan requires cgo", "did not correctly report that -msan requires cgo")
tg.grepStderrNot("-race", "reported that -race instead of -msan requires cgo")
}
}
func TestPackageMainTestCompilerFlags(t *testing.T) { func TestPackageMainTestCompilerFlags(t *testing.T) {
tg := testgo(t) tg := testgo(t)
defer tg.cleanup() defer tg.cleanup()
@ -1776,28 +1740,6 @@ func main() {
tg.run("run", tg.path("foo.go")) tg.run("run", tg.path("foo.go"))
} }
// cmd/cgo: undefined reference when linking a C-library using gccgo
func TestIssue7573(t *testing.T) {
if !canCgo {
t.Skip("skipping because cgo not enabled")
}
testenv.MustHaveExecPath(t, "gccgo")
tg := testgo(t)
defer tg.cleanup()
tg.parallel()
tg.tempFile("src/cgoref/cgoref.go", `
package main
// #cgo LDFLAGS: -L alibpath -lalib
// void f(void) {}
import "C"
func main() { C.f() }`)
tg.setenv("GOPATH", tg.path("."))
tg.run("build", "-n", "-compiler", "gccgo", "cgoref")
tg.grepStderr(`gccgo.*\-L [^ ]*alibpath \-lalib`, `no Go-inline "#cgo LDFLAGS:" ("-L alibpath -lalib") passed to gccgo linking stage`)
}
func TestListTemplateContextFunction(t *testing.T) { func TestListTemplateContextFunction(t *testing.T) {
t.Parallel() t.Parallel()
for _, tt := range []struct { for _, tt := range []struct {
@ -1986,16 +1928,6 @@ func TestImportLocal(t *testing.T) {
tg.grepStderr("cannot import current directory", "did not diagnose import current directory") tg.grepStderr("cannot import current directory", "did not diagnose import current directory")
} }
func TestGoRunDirs(t *testing.T) {
tg := testgo(t)
defer tg.cleanup()
tg.cd("testdata/rundir")
tg.runFail("run", "x.go", "sub/sub.go")
tg.grepStderr("named files must all be in one directory; have ./ and sub/", "wrong output")
tg.runFail("run", "sub/sub.go", "x.go")
tg.grepStderr("named files must all be in one directory; have sub/ and ./", "wrong output")
}
func TestGoInstallPkgdir(t *testing.T) { func TestGoInstallPkgdir(t *testing.T) {
skipIfGccgo(t, "gccgo has no standard packages") skipIfGccgo(t, "gccgo has no standard packages")
tooSlow(t) tooSlow(t)
@ -2013,26 +1945,6 @@ func TestGoInstallPkgdir(t *testing.T) {
tg.mustExist(filepath.Join(pkg, "sync/atomic.a")) tg.mustExist(filepath.Join(pkg, "sync/atomic.a"))
} }
func TestGoInstallShadowedGOPATH(t *testing.T) {
// golang.org/issue/3652.
// go get foo.io (not foo.io/subdir) was not working consistently.
testenv.MustHaveExternalNetwork(t)
tg := testgo(t)
defer tg.cleanup()
tg.makeTempdir()
tg.setenv("GOPATH", tg.path("gopath1")+string(filepath.ListSeparator)+tg.path("gopath2"))
tg.tempDir("gopath1/src/test")
tg.tempDir("gopath2/src/test")
tg.tempFile("gopath2/src/test/main.go", "package main\nfunc main(){}\n")
tg.cd(tg.path("gopath2/src/test"))
tg.runFail("install")
tg.grepStderr("no install location for.*gopath2.src.test: hidden by .*gopath1.src.test", "missing error")
}
func TestGoBuildGOPATHOrder(t *testing.T) { func TestGoBuildGOPATHOrder(t *testing.T) {
// golang.org/issue/14176#issuecomment-179895769 // golang.org/issue/14176#issuecomment-179895769
// golang.org/issue/14192 // golang.org/issue/14192
@ -2353,17 +2265,6 @@ func main() {
tg.run("build", "-o", exe, "p") tg.run("build", "-o", exe, "p")
} }
func TestBuildTagsNoComma(t *testing.T) {
skipIfGccgo(t, "gccgo has no standard packages")
tg := testgo(t)
defer tg.cleanup()
tg.makeTempdir()
tg.setenv("GOPATH", tg.path("go"))
tg.run("build", "-tags", "tag1 tag2", "math")
tg.runFail("build", "-tags", "tag1,tag2 tag3", "math")
tg.grepBoth("space-separated list contains comma", "-tags with a comma-separated list didn't error")
}
func copyFile(src, dst string, perm os.FileMode) error { func copyFile(src, dst string, perm os.FileMode) error {
sf, err := os.Open(src) sf, err := os.Open(src)
if err != nil { if err != nil {

View File

@ -1 +0,0 @@
package main

View File

@ -1 +0,0 @@
package main

View File

@ -0,0 +1,4 @@
[gccgo] skip 'gccgo has no standard packages'
go build -tags 'tag1 tag2' math
! go build -tags 'tag1,tag2 tag3' math
stderr 'space-separated list contains comma'

View File

@ -0,0 +1,16 @@
# Issue #7573
# cmd/cgo: undefined reference when linking a C-library using gccgo
[!cgo] skip
[!gccgo] skip
go build -r -compiler gccgo cgoref
stderr 'gccgo.*\-L [^ ]*alibpath \-lalib' # make sure that Go-inline "#cgo LDFLAGS:" ("-L alibpath -lalib") passed to gccgo linking stage
-- cgoref/cgoref.go --
package main
// #cgo LDFLAGS: -L alibpath -lalib
// void f(void) {}
import "C"
func main() { C.f() }

View File

@ -0,0 +1,8 @@
# Test that the Version Control error message includes the correct directory
! go get -u foo
stderr gopath(\\\\|/)src(\\\\|/)foo
-- foo/foo.go --
package foo
-- math/math.go --
package math

View File

@ -0,0 +1,18 @@
# Tests Issue #21895
[!msan] [!race] skip 'skipping because both msan and the race detector are not supported'
env CGO_ENABLED=0
[race] ! go install -race triv.go
[race] stderr '-race requires cgo'
[race] ! stderr '-msan'
[msan] ! go install -msan triv.go
[msan] stderr '-msan requires cgo'
[msan] ! stderr '-race'
-- triv.go --
package main
func main() {}

View File

@ -0,0 +1,19 @@
# Tests Issue #3562
# go get foo.io (not foo.io/subdir) was not working consistently.
[!net] skip
env GOPATH=$WORK/gopath1:$WORK/gopath2
mkdir $WORK/gopath1/src/test
mkdir $WORK/gopath2/src/test
cp main.go $WORK/gopath2/src/test/main.go
cd $WORK/gopath2/src/test
! go install
stderr 'no install location for.*gopath2.src.test: hidden by .*gopath1.src.test'
-- main.go --
package main
func main() {}

11
src/cmd/go/testdata/script/run_dirs.txt vendored Normal file
View File

@ -0,0 +1,11 @@
cd rundir
! go run x.go sub/sub.go
stderr 'named files must all be in one directory; have ./ and sub/'
! go run sub/sub.go x.go
stderr 'named files must all be in one directory; have sub/ and ./'
-- rundir/sub/sub.go --
package main
-- rundir/x.go --
package main