mirror of
https://github.com/golang/go
synced 2024-09-30 05:24:29 -06:00
runtime: deflake TestPanicRace
The test is inherently racy, and for me fails about 0.05% of the time. So only fail the test if it fails ten times in a row. Fixes #20594 Change-Id: I3b3f7598f2196f7406f1a3937f38f21ff0c0e4b5 Reviewed-on: https://go-review.googlesource.com/45020 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
703a9baf5c
commit
b5a0f71568
@ -579,11 +579,22 @@ func TestPanicRace(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// The test is intentionally racy, and in my testing does not
|
||||
// produce the expected output about 0.05% of the time.
|
||||
// So run the program in a loop and only fail the test if we
|
||||
// get the wrong output ten times in a row.
|
||||
const tries = 10
|
||||
retry:
|
||||
for i := 0; i < tries; i++ {
|
||||
got, err := testEnv(exec.Command(exe, "PanicRace")).CombinedOutput()
|
||||
if err == nil {
|
||||
t.Error("program exited successfully, should have failed")
|
||||
t.Logf("try %d: program exited successfully, should have failed", i+1)
|
||||
continue
|
||||
}
|
||||
|
||||
if i > 0 {
|
||||
t.Logf("try %d:\n", i+1)
|
||||
}
|
||||
t.Logf("%s\n", got)
|
||||
|
||||
wants := []string{
|
||||
@ -593,7 +604,13 @@ func TestPanicRace(t *testing.T) {
|
||||
}
|
||||
for _, want := range wants {
|
||||
if !bytes.Contains(got, []byte(want)) {
|
||||
t.Errorf("did not find expected string %q", want)
|
||||
t.Logf("did not find expected string %q", want)
|
||||
continue retry
|
||||
}
|
||||
}
|
||||
|
||||
// Test generated expected output.
|
||||
return
|
||||
}
|
||||
t.Errorf("test ran %d times without producing expected output", tries)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user