mirror of
https://github.com/golang/go.git
synced 2025-12-07 05:39:54 +00:00
cmd/go: convert some more tests to script tests
Convert more tests to script tests so they can run in parallel with the rest of the script tests. This CL converts TestPackageMainTestCompilerFlags, TestGoListTest, TestListTemplateContextFunction, and TestIssue22588. Change-Id: I4f8410e85d4811e82d85d884d28a2a0d6a6a6964 Reviewed-on: https://go-review.googlesource.com/c/go/+/727420 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Matloob <matloob@google.com> Reviewed-by: Alan Donovan <adonovan@google.com>
This commit is contained in:
parent
c270e71835
commit
2e509e61ef
5 changed files with 81 additions and 101 deletions
|
|
@ -972,19 +972,6 @@ func TestNewReleaseRebuildsStalePackagesInGOPATH(t *testing.T) {
|
|||
tg.wantNotStale("p1", "", "./testgo list claims p1 is stale after building with old release")
|
||||
}
|
||||
|
||||
func TestPackageMainTestCompilerFlags(t *testing.T) {
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
tg.parallel()
|
||||
tg.makeTempdir()
|
||||
tg.setenv("GOPATH", tg.path("."))
|
||||
tg.tempFile("src/p1/p1.go", "package main\n")
|
||||
tg.tempFile("src/p1/p1_test.go", "package main\nimport \"testing\"\nfunc Test(t *testing.T){}\n")
|
||||
tg.run("test", "-c", "-n", "p1")
|
||||
tg.grepBothNot(`([\\/]compile|gccgo).* (-p main|-fgo-pkgpath=main).*p1\.go`, "should not have run compile -p main p1.go")
|
||||
tg.grepStderr(`([\\/]compile|gccgo).* (-p p1|-fgo-pkgpath=p1).*p1\.go`, "should have run compile -p p1 p1.go")
|
||||
}
|
||||
|
||||
// Issue 4104.
|
||||
func TestGoTestWithPackageListedMultipleTimes(t *testing.T) {
|
||||
tooSlow(t, "links and runs a test")
|
||||
|
|
@ -1070,43 +1057,6 @@ func TestGoListDeps(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestGoListTest(t *testing.T) {
|
||||
skipIfGccgo(t, "gccgo does not have standard packages")
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
tg.parallel()
|
||||
tg.makeTempdir()
|
||||
tg.setenv("GOCACHE", tg.tempdir)
|
||||
|
||||
tg.run("list", "-test", "-deps", "bytes")
|
||||
tg.grepStdout(`^bytes.test$`, "missing test main")
|
||||
tg.grepStdout(`^bytes$`, "missing real bytes")
|
||||
tg.grepStdout(`^bytes \[bytes.test\]$`, "missing test copy of bytes")
|
||||
tg.grepStdout(`^testing \[bytes.test\]$`, "missing test copy of testing")
|
||||
tg.grepStdoutNot(`^testing$`, "unexpected real copy of testing")
|
||||
|
||||
tg.run("list", "-test", "bytes")
|
||||
tg.grepStdout(`^bytes.test$`, "missing test main")
|
||||
tg.grepStdout(`^bytes$`, "missing real bytes")
|
||||
tg.grepStdout(`^bytes \[bytes.test\]$`, "unexpected test copy of bytes")
|
||||
tg.grepStdoutNot(`^testing \[bytes.test\]$`, "unexpected test copy of testing")
|
||||
tg.grepStdoutNot(`^testing$`, "unexpected real copy of testing")
|
||||
|
||||
tg.run("list", "-test", "cmd/buildid", "cmd/gofmt")
|
||||
tg.grepStdout(`^cmd/buildid$`, "missing cmd/buildid")
|
||||
tg.grepStdout(`^cmd/gofmt$`, "missing cmd/gofmt")
|
||||
tg.grepStdout(`^cmd/gofmt\.test$`, "missing cmd/gofmt test")
|
||||
tg.grepStdoutNot(`^cmd/buildid\.test$`, "unexpected cmd/buildid test")
|
||||
tg.grepStdoutNot(`^testing`, "unexpected testing")
|
||||
|
||||
tg.run("list", "-test", "runtime/cgo")
|
||||
tg.grepStdout(`^runtime/cgo$`, "missing runtime/cgo")
|
||||
|
||||
tg.run("list", "-deps", "-f", "{{if .DepOnly}}{{.ImportPath}}{{end}}", "sort")
|
||||
tg.grepStdout(`^internal/reflectlite$`, "missing internal/reflectlite")
|
||||
tg.grepStdoutNot(`^sort`, "unexpected sort")
|
||||
}
|
||||
|
||||
func TestGoListCompiledCgo(t *testing.T) {
|
||||
tooSlow(t, "compiles cgo files")
|
||||
|
||||
|
|
@ -1528,40 +1478,6 @@ func main() {}
|
|||
tg.run("run", tg.path("bar.go"))
|
||||
}
|
||||
|
||||
func TestListTemplateContextFunction(t *testing.T) {
|
||||
t.Parallel()
|
||||
for _, tt := range []struct {
|
||||
v string
|
||||
want string
|
||||
}{
|
||||
{"GOARCH", runtime.GOARCH},
|
||||
{"GOOS", runtime.GOOS},
|
||||
{"GOROOT", testGOROOT},
|
||||
{"GOPATH", os.Getenv("GOPATH")},
|
||||
{"CgoEnabled", ""},
|
||||
{"UseAllFiles", ""},
|
||||
{"Compiler", ""},
|
||||
{"BuildTags", ""},
|
||||
{"ReleaseTags", ""},
|
||||
{"InstallSuffix", ""},
|
||||
} {
|
||||
tt := tt
|
||||
t.Run(tt.v, func(t *testing.T) {
|
||||
tg := testgo(t)
|
||||
tg.parallel()
|
||||
defer tg.cleanup()
|
||||
tmpl := "{{context." + tt.v + "}}"
|
||||
tg.run("list", "-f", tmpl)
|
||||
if tt.want == "" {
|
||||
return
|
||||
}
|
||||
if got := strings.TrimSpace(tg.getStdout()); got != tt.want {
|
||||
t.Errorf("go list -f %q: got %q; want %q", tmpl, got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Test that you cannot use a local import in a package
|
||||
// accessed by a non-local import (found in a GOPATH/GOROOT).
|
||||
// See golang.org/issue/17475.
|
||||
|
|
@ -2247,23 +2163,6 @@ func TestCacheCoverage(t *testing.T) {
|
|||
tg.run("test", "-cover", "-short", "math", "strings")
|
||||
}
|
||||
|
||||
func TestIssue22588(t *testing.T) {
|
||||
// Don't get confused by stderr coming from tools.
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
tg.parallel()
|
||||
|
||||
tg.wantNotStale("runtime", "", "must be non-stale to compare staleness under -toolexec")
|
||||
|
||||
if _, err := os.Stat("/usr/bin/time"); err != nil {
|
||||
t.Skip(err)
|
||||
}
|
||||
|
||||
tg.run("list", "-f={{.Stale}}", "runtime")
|
||||
tg.run("list", "-toolexec=/usr/bin/time", "-f={{.Stale}}", "runtime")
|
||||
tg.grepStdout("false", "incorrectly reported runtime as stale")
|
||||
}
|
||||
|
||||
func TestIssue22531(t *testing.T) {
|
||||
tooSlow(t, "links binaries")
|
||||
if gocacheverify.Value() == "1" {
|
||||
|
|
|
|||
15
src/cmd/go/testdata/script/list_template_context_function.txt
vendored
Normal file
15
src/cmd/go/testdata/script/list_template_context_function.txt
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# This is a script test conversion of TestListTemplateContextFunction
|
||||
# originally added in CL 20010, which fixed #14547.
|
||||
# Test the ability to use the build context in the go list template.
|
||||
|
||||
go list -f '{{context.GOARCH}} {{context.GOOS}} {{context.GOROOT}} {{context.GOPATH}}'
|
||||
cmpenv stdout want.txt
|
||||
|
||||
go list -f '{{context.CgoEnabled}} {{context.UseAllFiles}} {{context.Compiler}} {{context.BuildTags}} {{context.ReleaseTags}} {{context.InstallSuffix}}'
|
||||
|
||||
-- go.mod --
|
||||
module foo
|
||||
-- foo.go --
|
||||
package foo
|
||||
-- want.txt --
|
||||
$GOARCH $GOOS $GOROOT $GOPATH
|
||||
33
src/cmd/go/testdata/script/list_test.txt
vendored
Normal file
33
src/cmd/go/testdata/script/list_test.txt
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
# This is a script test conversion of TestGoListTest which was added in
|
||||
# CL 107916, which added support for go list -test.
|
||||
# Test the behavior of go list -test.
|
||||
|
||||
[compiler:gccgo] skip 'gccgo does not have standard packages'
|
||||
|
||||
go list -test -deps bytes
|
||||
stdout '^bytes.test$' # test main
|
||||
stdout '^bytes$' # real bytes
|
||||
stdout '^bytes \[bytes.test\]$' # test copy of bytes
|
||||
stdout 'testing \[bytes.test\]$' # test copy of testing
|
||||
! stdout ^testing$ # should not have real testing
|
||||
|
||||
go list -test bytes
|
||||
stdout '^bytes.test$' # test main
|
||||
stdout '^bytes$' # real bytes
|
||||
stdout '^bytes \[bytes.test\]$' # test copy of bytes
|
||||
! stdout '^testing \[bytes.test\]$' # should not have test copy of testing
|
||||
! stdout '^testing$' # should not have real testing
|
||||
|
||||
go list -test cmd/buildid cmd/gofmt
|
||||
stdout '^cmd/buildid$' # cmd/buildid
|
||||
stdout '^cmd/gofmt$' # cmd/gofmt
|
||||
stdout '^cmd/gofmt\.test$' # cmd/gofmt test
|
||||
! stdout '^cmd/buildid\.test$' # should not have cmd/buildid test
|
||||
! stdout '^testing' # should not have real testing
|
||||
|
||||
go list -test runtime/cgo
|
||||
stdout '^runtime/cgo$' # runtime/cgo
|
||||
|
||||
go list -deps -f '{{if .DepOnly}}{{.ImportPath}}{{end}}' sort
|
||||
stdout '^internal/reflectlite$' # internal/reflectlite
|
||||
! stdout '^sort' # should not have sort
|
||||
11
src/cmd/go/testdata/script/list_toolexec_stderr_issue22588.txt
vendored
Normal file
11
src/cmd/go/testdata/script/list_toolexec_stderr_issue22588.txt
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# This is a script test conversion of TestIssue22588 which was added in CL 76017.
|
||||
# Test that the stderr of a tool run under toolexec doesn't affect caching.
|
||||
|
||||
# Don't get confused by stderr coming from tools.
|
||||
[!exec:/usr/bin/time] skip
|
||||
|
||||
! stale runtime 'must be non-stale to compare staleness under -toolexec'
|
||||
|
||||
go list -f '{{.Stale}}' runtime
|
||||
go list -toolexec /usr/bin/time -f '{{.Stale}}' runtime
|
||||
stdout 'false' # runtime should not be reported as stale
|
||||
22
src/cmd/go/testdata/script/test_main_compiler_flags.txt
vendored
Normal file
22
src/cmd/go/testdata/script/test_main_compiler_flags.txt
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# This is a script test conversion of TestPackageMainTestCompilerFlags
|
||||
# originally added in CL 86265, which fixed #23180.
|
||||
# Test that we don't pass the package name 'main' to -p when building the
|
||||
# test package for a main package.
|
||||
|
||||
go test -c -n p1
|
||||
# should not have run compile -p main p1.go
|
||||
! stdout '([\\/]compile|gccgo).* (-p main|-fgo-pkgpath=main).*p1\.go'
|
||||
! stderr '([\\/]compile|gccgo).* (-p main|-fgo-pkgpath=main).*p1\.go'
|
||||
# should have run compile -p p1 p1.go
|
||||
stderr '([\\/]compile|gccgo).* (-p p1|-fgo-pkgpath=p1).*p1\.go'
|
||||
|
||||
-- go.mod --
|
||||
module p1
|
||||
-- p1.go --
|
||||
package main
|
||||
-- p1_test.go --
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func Test(t *testing.T){}
|
||||
Loading…
Add table
Add a link
Reference in a new issue