Skip to content

Commit

Permalink
cmd/go: convert some testcases to the script framework
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Jay Conrod <[email protected]>
  • Loading branch information
matloob committed Jan 6, 2020
1 parent 57b22c5 commit fab2e86
Show file tree
Hide file tree
Showing 10 changed files with 49 additions and 48 deletions.
32 changes: 1 addition & 31 deletions src/cmd/go/go_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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()
Expand Down
2 changes: 1 addition & 1 deletion src/cmd/go/testdata/script/README
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
13 changes: 13 additions & 0 deletions src/cmd/go/testdata/script/list_wildcard_skip_nonmatching.txt
Original file line number Diff line number Diff line change
@@ -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 changes: 15 additions & 0 deletions src/cmd/go/testdata/script/test_benchmark_fatal.txt
Original file line number Diff line number Diff line change
@@ -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 changes: 19 additions & 0 deletions src/cmd/go/testdata/script/test_benchmark_labels.txt
Original file line number Diff line number Diff line change
@@ -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 change: 0 additions & 1 deletion src/cmd/go/testdata/src/badc/x.c

This file was deleted.

1 change: 0 additions & 1 deletion src/cmd/go/testdata/src/badc/x.go

This file was deleted.

1 change: 0 additions & 1 deletion src/cmd/go/testdata/src/badpkg/x.go

This file was deleted.

6 changes: 0 additions & 6 deletions src/cmd/go/testdata/src/bench/x_test.go

This file was deleted.

7 changes: 0 additions & 7 deletions src/cmd/go/testdata/src/benchfatal/x_test.go

This file was deleted.

0 comments on commit fab2e86

Please sign in to comment.