Commit 86dde2de authored by Daniel Martí's avatar Daniel Martí Committed by Ian Lance Taylor

testing: error if -parallel is given N<1

Otherwise, if there are any parallel tests, it will hang and panic with
"all goroutines are asleep - deadlock!".

Do not use flag.Uint to handle the error for us because we also want to
error on N==0, and because it would make setting the default to
GOMAXPROCS(0) more difficult, since it's an int.

Check for it right after flag.Parse, and mimic flag errors by printing
the usage and returning exit code 2.

Fixes #20542.

Change-Id: I0c9d4587f83d406a8f5e42ed74e40be46d639ffb
Reviewed-on: https://go-review.googlesource.com/54150
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent 7e455b62
......@@ -4487,3 +4487,14 @@ func TestExecBuildX(t *testing.T) {
t.Fatalf("got %q; want %q", out, "hello")
}
}
func TestParallelNumber(t *testing.T) {
for _, n := range [...]string{"-1", "0"} {
t.Run(n, func(t *testing.T) {
tg := testgo(t)
defer tg.cleanup()
tg.runFail("test", "-parallel", n, "testdata/standalone_parallel_sub_test.go")
tg.grepBoth("-parallel can only be given", "go test -parallel with N<1 did not error")
})
}
}
......@@ -913,6 +913,12 @@ func (m *M) Run() int {
flag.Parse()
}
if *parallel < 1 {
fmt.Fprintln(os.Stderr, "testing: -parallel can only be given a positive integer")
flag.Usage()
return 2
}
if len(*matchList) != 0 {
listTests(m.deps.MatchString, m.tests, m.benchmarks, m.examples)
return 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment