mirror of
https://github.com/golang/go
synced 2024-11-18 00:04:43 -07:00
cmd/go: convert some testcases to the script framework
This change converts TestFatalInBenchmarkCauseNonZeroExitStatus, TestBenchmarkLabels and TestWildCardsDoNotLookInUselessDirectories to the script framework so they can run in parallel. These tests used the testdata directory so they didn't call tg.parallel, because they couldn't be sure the testdata directory wasn't being modified while they were being run. The tests are converted to the script framework instead of being modified because the script framework tests are easier to read and are self-contained. Also remove the directory src/cmd/go/testdata/src/badc. The testcase that used it, "TestDisallowedCSourceFiles" was deleted in golang.org/cl/19613. Updates #17751 Change-Id: I0b9b417ae1a9b148067a3e5f8531229f3414f104 Reviewed-on: https://go-review.googlesource.com/c/go/+/212620 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
57b22c5116
commit
fab2e86ba2
@ -638,7 +638,7 @@ func (tg *testgoData) grepStderrNot(match, msg string) {
|
||||
}
|
||||
|
||||
// grepBothNot looks for a regular expression in the test run's
|
||||
// standard output or stand error and fails, logging msg, if it is
|
||||
// standard output or standard error and fails, logging msg, if it is
|
||||
// found.
|
||||
func (tg *testgoData) grepBothNot(match, msg string) {
|
||||
tg.t.Helper()
|
||||
@ -1196,15 +1196,6 @@ func TestAccidentalGitCheckout(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestWildcardsDoNotLookInUselessDirectories(t *testing.T) {
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
tg.setenv("GOPATH", filepath.Join(tg.pwd(), "testdata"))
|
||||
tg.runFail("list", "...")
|
||||
tg.grepBoth("badpkg", "go list ... failure does not mention badpkg")
|
||||
tg.run("list", "m...")
|
||||
}
|
||||
|
||||
func TestRelativeImportsGoTest(t *testing.T) {
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
@ -3525,15 +3516,6 @@ func TestIssue17119(t *testing.T) {
|
||||
tg.grepBothNot("duplicate load|internal error", "internal error")
|
||||
}
|
||||
|
||||
func TestFatalInBenchmarkCauseNonZeroExitStatus(t *testing.T) {
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
// TODO: tg.parallel()
|
||||
tg.runFail("test", "-run", "^$", "-bench", ".", "./testdata/src/benchfatal")
|
||||
tg.grepBothNot("^ok", "test passed unexpectedly")
|
||||
tg.grepBoth("FAIL.*benchfatal", "test did not run everything")
|
||||
}
|
||||
|
||||
func TestBinaryOnlyPackages(t *testing.T) {
|
||||
tooSlow(t)
|
||||
|
||||
@ -3726,18 +3708,6 @@ func TestMatchesOnlyBenchmarkIsOK(t *testing.T) {
|
||||
tg.grepBoth(okPattern, "go test did not say ok")
|
||||
}
|
||||
|
||||
func TestBenchmarkLabels(t *testing.T) {
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
tg.parallel()
|
||||
tg.setenv("GOPATH", filepath.Join(tg.pwd(), "testdata"))
|
||||
tg.run("test", "-run", "^$", "-bench", ".", "bench")
|
||||
tg.grepStdout(`(?m)^goos: `+runtime.GOOS, "go test did not print goos")
|
||||
tg.grepStdout(`(?m)^goarch: `+runtime.GOARCH, "go test did not print goarch")
|
||||
tg.grepStdout(`(?m)^pkg: bench`, "go test did not say pkg: bench")
|
||||
tg.grepBothNot(`(?s)pkg:.*pkg:`, "go test said pkg multiple times")
|
||||
}
|
||||
|
||||
func TestBenchmarkLabelsOutsideGOPATH(t *testing.T) {
|
||||
tg := testgo(t)
|
||||
defer tg.cleanup()
|
||||
|
2
src/cmd/go/testdata/script/README
vendored
2
src/cmd/go/testdata/script/README
vendored
@ -40,7 +40,7 @@ Scripts also have access to these other environment variables:
|
||||
goversion=<current Go version; for example, 1.12>
|
||||
:=<OS-specific path list separator>
|
||||
|
||||
The scripts supporting files are unpacked relative to $GOPATH/src (aka $WORK/gopath/src)
|
||||
The scripts' supporting files are unpacked relative to $GOPATH/src (aka $WORK/gopath/src)
|
||||
and then the script begins execution in that directory as well. Thus the example above runs
|
||||
in $WORK/gopath/src with GOPATH=$WORK/gopath and $WORK/gopath/src/hello.go
|
||||
containing the listed contents.
|
||||
|
13
src/cmd/go/testdata/script/list_wildcard_skip_nonmatching.txt
vendored
Normal file
13
src/cmd/go/testdata/script/list_wildcard_skip_nonmatching.txt
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
# Test that wildcards don't look in useless directories.
|
||||
|
||||
# First make sure that badpkg fails the list of '...'.
|
||||
! go list ...
|
||||
stderr badpkg
|
||||
|
||||
# Check that the list of 'm...' succeeds. That implies badpkg was skipped.
|
||||
go list m...
|
||||
|
||||
-- m/x.go --
|
||||
package m
|
||||
-- badpkg/x.go --
|
||||
pkg badpkg
|
15
src/cmd/go/testdata/script/test_benchmark_fatal.txt
vendored
Normal file
15
src/cmd/go/testdata/script/test_benchmark_fatal.txt
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
# Test that calling t.Fatal in a benchmark causes a non-zero exit status.
|
||||
|
||||
! go test -run '^$' -bench . benchfatal
|
||||
! stdout ^ok
|
||||
! stderr ^ok
|
||||
stdout FAIL.*benchfatal
|
||||
|
||||
-- benchfatal/x_test.go --
|
||||
package benchfatal
|
||||
|
||||
import "testing"
|
||||
|
||||
func BenchmarkThatCallsFatal(b *testing.B) {
|
||||
b.Fatal("called by benchmark")
|
||||
}
|
19
src/cmd/go/testdata/script/test_benchmark_labels.txt
vendored
Normal file
19
src/cmd/go/testdata/script/test_benchmark_labels.txt
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
# Tests that go test -bench prints out goos, goarch, and pkg.
|
||||
|
||||
# Check for goos, goarch, and pkg.
|
||||
go test -run ^$ -bench . bench
|
||||
stdout '^goos: '$GOOS
|
||||
stdout '^goarch: '$GOARCH
|
||||
stdout '^pkg: bench'
|
||||
|
||||
# Check go test does not print pkg multiple times
|
||||
! stdout 'pkg:.*pkg: '
|
||||
! stderr 'pkg:.*pkg:'
|
||||
|
||||
-- bench/x_test.go --
|
||||
package bench
|
||||
|
||||
import "testing"
|
||||
|
||||
func Benchmark(b *testing.B) {
|
||||
}
|
1
src/cmd/go/testdata/src/badc/x.c
vendored
1
src/cmd/go/testdata/src/badc/x.c
vendored
@ -1 +0,0 @@
|
||||
// C code!
|
1
src/cmd/go/testdata/src/badc/x.go
vendored
1
src/cmd/go/testdata/src/badc/x.go
vendored
@ -1 +0,0 @@
|
||||
package badc
|
1
src/cmd/go/testdata/src/badpkg/x.go
vendored
1
src/cmd/go/testdata/src/badpkg/x.go
vendored
@ -1 +0,0 @@
|
||||
pkg badpkg
|
6
src/cmd/go/testdata/src/bench/x_test.go
vendored
6
src/cmd/go/testdata/src/bench/x_test.go
vendored
@ -1,6 +0,0 @@
|
||||
package bench
|
||||
|
||||
import "testing"
|
||||
|
||||
func Benchmark(b *testing.B) {
|
||||
}
|
7
src/cmd/go/testdata/src/benchfatal/x_test.go
vendored
7
src/cmd/go/testdata/src/benchfatal/x_test.go
vendored
@ -1,7 +0,0 @@
|
||||
package benchfatal
|
||||
|
||||
import "testing"
|
||||
|
||||
func BenchmarkThatCallsFatal(b *testing.B) {
|
||||
b.Fatal("called by benchmark")
|
||||
}
|
Loading…
Reference in New Issue
Block a user