diff --git a/src/archive/zip/zip_test.go b/src/archive/zip/zip_test.go index f00ff47d37..0fa749e73a 100644 --- a/src/archive/zip/zip_test.go +++ b/src/archive/zip/zip_test.go @@ -10,6 +10,7 @@ import ( "bytes" "fmt" "hash" + "internal/testenv" "io" "io/ioutil" "sort" @@ -19,6 +20,9 @@ import ( ) func TestOver65kFiles(t *testing.T) { + if testing.Short() && testenv.Builder() == "" { + t.Skip("skipping in short mode") + } buf := new(bytes.Buffer) w := NewWriter(buf) const nFiles = (1 << 16) + 42 diff --git a/src/compress/flate/deflate_test.go b/src/compress/flate/deflate_test.go index d5d6e732cf..72bc6652c8 100644 --- a/src/compress/flate/deflate_test.go +++ b/src/compress/flate/deflate_test.go @@ -7,6 +7,7 @@ package flate import ( "bytes" "fmt" + "internal/testenv" "io" "io/ioutil" "reflect" @@ -343,6 +344,9 @@ var deflateInflateStringTests = []deflateInflateStringTest{ } func TestDeflateInflateString(t *testing.T) { + if testing.Short() && testenv.Builder() == "" { + t.Skip("skipping in short mode") + } for _, test := range deflateInflateStringTests { gold, err := ioutil.ReadFile(test.filename) if err != nil { @@ -436,7 +440,11 @@ func TestWriterReset(t *testing.T) { t.Fatalf("NewWriter: %v", err) } buf := []byte("hello world") - for i := 0; i < 1024; i++ { + n := 1024 + if testing.Short() { + n = 10 + } + for i := 0; i < n; i++ { w.Write(buf) } w.Reset(ioutil.Discard) diff --git a/src/compress/lzw/writer_test.go b/src/compress/lzw/writer_test.go index c20d058f8d..66d761727f 100644 --- a/src/compress/lzw/writer_test.go +++ b/src/compress/lzw/writer_test.go @@ -5,6 +5,7 @@ package lzw import ( + "internal/testenv" "io" "io/ioutil" "os" @@ -13,6 +14,7 @@ import ( ) var filenames = []string{ + "../testdata/gettysburg.txt", "../testdata/e.txt", "../testdata/pi.txt", } @@ -89,10 +91,16 @@ func TestWriter(t *testing.T) { for _, filename := range filenames { for _, order := range [...]Order{LSB, MSB} { // The test data "2.71828 etcetera" is ASCII text requiring at least 6 bits. - for _, litWidth := range [...]int{6, 7, 8} { + for litWidth := 6; litWidth <= 8; litWidth++ { + if filename == "../testdata/gettysburg.txt" && litWidth == 6 { + continue + } testFile(t, filename, order, litWidth) } } + if testing.Short() && testenv.Builder() == "" { + break + } } } diff --git a/src/compress/testdata/gettysburg.txt b/src/compress/testdata/gettysburg.txt new file mode 100644 index 0000000000..2c9bcde360 --- /dev/null +++ b/src/compress/testdata/gettysburg.txt @@ -0,0 +1,29 @@ + Four score and seven years ago our fathers brought forth on +this continent, a new nation, conceived in Liberty, and dedicated +to the proposition that all men are created equal. + Now we are engaged in a great Civil War, testing whether that +nation, or any nation so conceived and so dedicated, can long +endure. + We are met on a great battle-field of that war. + We have come to dedicate a portion of that field, as a final +resting place for those who here gave their lives that that +nation might live. It is altogether fitting and proper that +we should do this. + But, in a larger sense, we can not dedicate - we can not +consecrate - we can not hallow - this ground. + The brave men, living and dead, who struggled here, have +consecrated it, far above our poor power to add or detract. +The world will little note, nor long remember what we say here, +but it can never forget what they did here. + It is for us the living, rather, to be dedicated here to the +unfinished work which they who fought here have thus far so +nobly advanced. It is rather for us to be here dedicated to +the great task remaining before us - that from these honored +dead we take increased devotion to that cause for which they +gave the last full measure of devotion - + that we here highly resolve that these dead shall not have +died in vain - that this nation, under God, shall have a new +birth of freedom - and that government of the people, by the +people, for the people, shall not perish from this earth. + +Abraham Lincoln, November 19, 1863, Gettysburg, Pennsylvania diff --git a/src/compress/zlib/writer_test.go b/src/compress/zlib/writer_test.go index 71ba81aaa7..dd94165520 100644 --- a/src/compress/zlib/writer_test.go +++ b/src/compress/zlib/writer_test.go @@ -7,6 +7,7 @@ package zlib import ( "bytes" "fmt" + "internal/testenv" "io" "io/ioutil" "os" @@ -14,6 +15,7 @@ import ( ) var filenames = []string{ + "../testdata/gettysburg.txt", "../testdata/e.txt", "../testdata/pi.txt", } @@ -152,22 +154,34 @@ func TestWriter(t *testing.T) { } func TestWriterBig(t *testing.T) { - for _, fn := range filenames { + for i, fn := range filenames { testFileLevelDict(t, fn, DefaultCompression, "") testFileLevelDict(t, fn, NoCompression, "") for level := BestSpeed; level <= BestCompression; level++ { testFileLevelDict(t, fn, level, "") + if level >= 1 && testing.Short() && testenv.Builder() == "" { + break + } + } + if i == 0 && testing.Short() && testenv.Builder() == "" { + break } } } func TestWriterDict(t *testing.T) { const dictionary = "0123456789." - for _, fn := range filenames { + for i, fn := range filenames { testFileLevelDict(t, fn, DefaultCompression, dictionary) testFileLevelDict(t, fn, NoCompression, dictionary) for level := BestSpeed; level <= BestCompression; level++ { testFileLevelDict(t, fn, level, dictionary) + if level >= 1 && testing.Short() && testenv.Builder() == "" { + break + } + } + if i == 0 && testing.Short() && testenv.Builder() == "" { + break } } } @@ -179,10 +193,11 @@ func TestWriterReset(t *testing.T) { testFileLevelDictReset(t, fn, DefaultCompression, nil) testFileLevelDictReset(t, fn, NoCompression, []byte(dictionary)) testFileLevelDictReset(t, fn, DefaultCompression, []byte(dictionary)) - if !testing.Short() { - for level := BestSpeed; level <= BestCompression; level++ { - testFileLevelDictReset(t, fn, level, nil) - } + if testing.Short() { + break + } + for level := BestSpeed; level <= BestCompression; level++ { + testFileLevelDictReset(t, fn, level, nil) } } } diff --git a/src/go/internal/gcimporter/gcimporter_test.go b/src/go/internal/gcimporter/gcimporter_test.go index 81d0e661c0..316ba1634b 100644 --- a/src/go/internal/gcimporter/gcimporter_test.go +++ b/src/go/internal/gcimporter/gcimporter_test.go @@ -164,7 +164,11 @@ func TestImportStdLib(t *testing.T) { return } - nimports := testDir(t, "", time.Now().Add(maxTime)) // installed packages + dt := maxTime + if testing.Short() && testenv.Builder() == "" { + dt = 10 * time.Millisecond + } + nimports := testDir(t, "", time.Now().Add(dt)) // installed packages t.Logf("tested %d imports", nimports) } diff --git a/src/go/types/stdlib_test.go b/src/go/types/stdlib_test.go index 055bd96911..09f2585bcf 100644 --- a/src/go/types/stdlib_test.go +++ b/src/go/types/stdlib_test.go @@ -127,6 +127,10 @@ func testTestDir(t *testing.T, path string, ignore ...string) { func TestStdTest(t *testing.T) { testenv.MustHaveGoBuild(t) + if testing.Short() && testenv.Builder() == "" { + t.Skip("skipping in short mode") + } + // test/recover4.go is only built for Linux and Darwin. // TODO(gri) Remove once tests consider +build tags (issue 10370). if runtime.GOOS != "linux" && runtime.GOOS != "darwin" { @@ -142,6 +146,10 @@ func TestStdTest(t *testing.T) { func TestStdFixed(t *testing.T) { testenv.MustHaveGoBuild(t) + if testing.Short() && testenv.Builder() == "" { + t.Skip("skipping in short mode") + } + testTestDir(t, filepath.Join(runtime.GOROOT(), "test", "fixedbugs"), "bug248.go", "bug302.go", "bug369.go", // complex test instructions - ignore "issue6889.go", // gc-specific test @@ -247,7 +255,7 @@ func pkgFilenames(dir string) ([]string, error) { func walkDirs(t *testing.T, dir string) { // limit run time for short tests - if testing.Short() && time.Since(start) >= 750*time.Millisecond { + if testing.Short() && time.Since(start) >= 10*time.Millisecond { return } diff --git a/src/math/big/int_test.go b/src/math/big/int_test.go index 616a562c3e..2f55a7ef35 100644 --- a/src/math/big/int_test.go +++ b/src/math/big/int_test.go @@ -1378,6 +1378,14 @@ func TestModSqrt(t *testing.T) { t.Errorf("#%d: failed (sqrt(e) = %s)", i, &sqrt) } } + + if testing.Short() && i > 2 { + break + } + } + + if testing.Short() { + return } // exhaustive test for small values diff --git a/src/math/rand/rand_test.go b/src/math/rand/rand_test.go index 6a1df4dcb8..8d68335fdd 100644 --- a/src/math/rand/rand_test.go +++ b/src/math/rand/rand_test.go @@ -7,6 +7,7 @@ package rand import ( "errors" "fmt" + "internal/testenv" "math" "os" "runtime" @@ -327,9 +328,10 @@ func TestExpTables(t *testing.T) { func TestFloat32(t *testing.T) { // For issue 6721, the problem came after 7533753 calls, so check 10e6. num := int(10e6) + // But do the full amount only on builders (not locally). // But ARM5 floating point emulation is slow (Issue 10749), so // do less for that builder: - if testing.Short() && runtime.GOARCH == "arm" && os.Getenv("GOARM") == "5" { + if testing.Short() && (testenv.Builder() == "" || runtime.GOARCH == "arm" && os.Getenv("GOARM") == "5") { num /= 100 // 1.72 seconds instead of 172 seconds } diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go index 0ce492c6dd..0c2fc48499 100644 --- a/src/net/http/serve_test.go +++ b/src/net/http/serve_test.go @@ -12,6 +12,7 @@ import ( "crypto/tls" "errors" "fmt" + "internal/testenv" "io" "io/ioutil" "log" @@ -454,6 +455,7 @@ func TestServerTimeouts(t *testing.T) { if runtime.GOOS == "plan9" { t.Skip("skipping test; see https://golang.org/issue/7237") } + t.Parallel() defer afterTest(t) reqNum := 0 ts := httptest.NewUnstartedServer(HandlerFunc(func(res ResponseWriter, req *Request) { @@ -937,6 +939,7 @@ func TestTLSHandshakeTimeout(t *testing.T) { if runtime.GOOS == "plan9" { t.Skip("skipping test; see https://golang.org/issue/7237") } + t.Parallel() defer afterTest(t) ts := httptest.NewUnstartedServer(HandlerFunc(func(w ResponseWriter, r *Request) {})) errc := make(chanWriter, 10) // but only expecting 1 @@ -1277,6 +1280,9 @@ func TestServerUnreadRequestBodyLittle(t *testing.T) { // should ignore client request bodies that a handler didn't read // and close the connection. func TestServerUnreadRequestBodyLarge(t *testing.T) { + if testing.Short() && testenv.Builder() == "" { + t.Log("skipping in short mode") + } conn := new(testConn) body := strings.Repeat("x", 1<<20) conn.readBuf.Write([]byte(fmt.Sprintf( @@ -1407,6 +1413,9 @@ var handlerBodyCloseTests = [...]handlerBodyCloseTest{ } func TestHandlerBodyClose(t *testing.T) { + if testing.Short() && testenv.Builder() == "" { + t.Skip("skipping in -short mode") + } for i, tt := range handlerBodyCloseTests { testHandlerBodyClose(t, i, tt) } diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index e15b34cb2b..e1e83803cc 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -436,6 +436,7 @@ func TestTransportMaxPerHostIdleConns(t *testing.T) { } func TestTransportServerClosingUnexpectedly(t *testing.T) { + t.Parallel() defer afterTest(t) ts := httptest.NewServer(hostPortHandler) defer ts.Close() @@ -968,6 +969,7 @@ func TestTransportGzipShort(t *testing.T) { // tests that persistent goroutine connections shut down when no longer desired. func TestTransportPersistConnLeak(t *testing.T) { + t.Parallel() defer afterTest(t) gotReqCh := make(chan bool) unblockCh := make(chan bool) @@ -1034,6 +1036,7 @@ func TestTransportPersistConnLeak(t *testing.T) { // golang.org/issue/4531: Transport leaks goroutines when // request.ContentLength is explicitly short func TestTransportPersistConnLeakShortBody(t *testing.T) { + t.Parallel() defer afterTest(t) ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { })) @@ -1374,6 +1377,7 @@ func TestIssue4191_InfiniteGetToPutTimeout(t *testing.T) { } func TestTransportResponseHeaderTimeout(t *testing.T) { + t.Parallel() defer afterTest(t) if testing.Short() { t.Skip("skipping timeout test in -short mode") @@ -1445,6 +1449,7 @@ func TestTransportResponseHeaderTimeout(t *testing.T) { } func TestTransportCancelRequest(t *testing.T) { + t.Parallel() defer afterTest(t) if testing.Short() { t.Skip("skipping test in -short mode") @@ -1554,6 +1559,7 @@ Get = Get http://something.no-network.tld/: net/http: request canceled while wai } func TestCancelRequestWithChannel(t *testing.T) { + t.Parallel() defer afterTest(t) if testing.Short() { t.Skip("skipping test in -short mode") @@ -1611,6 +1617,7 @@ func TestCancelRequestWithChannel(t *testing.T) { } func TestCancelRequestWithChannelBeforeDo(t *testing.T) { + t.Parallel() defer afterTest(t) unblockc := make(chan bool) ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { @@ -2488,6 +2495,7 @@ func TestRetryIdempotentRequestsOnError(t *testing.T) { // Issue 6981 func TestTransportClosesBodyOnError(t *testing.T) { + t.Parallel() defer afterTest(t) readBody := make(chan error, 1) ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {