From: Bryan C. Mills Date: Wed, 4 Sep 2019 16:59:41 +0000 (-0400) Subject: [release-branch.go1.13] cmd/go/internal/test: prepend -test.timeout rather than appending X-Git-Tag: go1.13.3~40 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=6bbfea923e5b1450cba7b2082ba2e73b85ab82cc;p=gostls13.git [release-branch.go1.13] cmd/go/internal/test: prepend -test.timeout rather than appending Tests may accept positional arguments, in which case the -test.timeout flag must be passed before those arguments. Updates #34072 Fixes #34083 Change-Id: I5b92d7c0edc4f9e1efb63b0733937b76236c0eff Reviewed-on: https://go-review.googlesource.com/c/go/+/193297 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Dmitri Shuralyov Reviewed-by: Ian Lance Taylor (cherry picked from commit d21953df047868ed3bcfd0172a6c1672642f5b4a) Reviewed-on: https://go-review.googlesource.com/c/go/+/193269 --- diff --git a/src/cmd/go/internal/test/test.go b/src/cmd/go/internal/test/test.go index 95000011d8..8141e31c99 100644 --- a/src/cmd/go/internal/test/test.go +++ b/src/cmd/go/internal/test/test.go @@ -572,8 +572,9 @@ func runTest(cmd *base.Command, args []string) { } // Pass timeout to tests if it exists. + // Prepend rather than appending so that it appears before positional arguments. if testActualTimeout > 0 { - testArgs = append(testArgs, "-test.timeout="+testActualTimeout.String()) + testArgs = append([]string{"-test.timeout=" + testActualTimeout.String()}, testArgs...) } // show passing test output (after buffering) with -v flag. diff --git a/src/cmd/go/testdata/script/test_timeout.txt b/src/cmd/go/testdata/script/test_timeout.txt index 8dead0a439..4de4df4508 100644 --- a/src/cmd/go/testdata/script/test_timeout.txt +++ b/src/cmd/go/testdata/script/test_timeout.txt @@ -2,12 +2,13 @@ env GO111MODULE=off cd a -# No timeout is passed via 'go test' command. -go test -v +# If no timeout is set explicitly, 'go test' should set +# -test.timeout to its internal deadline. +go test -v . -- stdout '10m0s' -# Timeout is passed via 'go test' command. -go test -v -timeout 30m +# An explicit -timeout argument should be propagated to -test.timeout. +go test -v -timeout 30m . -- stdout '30m0s' -- a/timeout_test.go -- @@ -19,4 +20,4 @@ import ( ) func TestTimeout(t *testing.T) { fmt.Println(flag.Lookup("test.timeout").Value.String()) -} \ No newline at end of file +}