From b40c6580639beb1fd24bbf8cc50f4488c245c41b Mon Sep 17 00:00:00 2001 From: "Andrew G. Morgan" Date: Mon, 4 May 2020 17:50:17 -0700 Subject: [PATCH] net/http/httputil: don't use testing.T after test completes This fixes a race condition where TestReverseProxyWebSocketCancelation appears to panic after otherwise passing. Fixes #38863 Change-Id: Ib89f4c40da879b92ac1fc5ed8b6e48da929e4a18 Reviewed-on: https://go-review.googlesource.com/c/go/+/232257 Reviewed-by: Brad Fitzpatrick Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- src/net/http/httputil/reverseproxy_test.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/net/http/httputil/reverseproxy_test.go b/src/net/http/httputil/reverseproxy_test.go index 6a3a1c54fc..764939fb0f 100644 --- a/src/net/http/httputil/reverseproxy_test.go +++ b/src/net/http/httputil/reverseproxy_test.go @@ -1224,13 +1224,22 @@ func TestReverseProxyWebSocketCancelation(t *testing.T) { for i := 0; i < n; i++ { if _, err := bufrw.WriteString(nthResponse(i)); err != nil { - t.Errorf("Writing response #%d failed: %v", i, err) + select { + case <-triggerCancelCh: + default: + t.Errorf("Writing response #%d failed: %v", i, err) + } + return } bufrw.Flush() time.Sleep(time.Second) } if _, err := bufrw.WriteString(terminalMsg); err != nil { - t.Errorf("Failed to write terminal message: %v", err) + select { + case <-triggerCancelCh: + default: + t.Errorf("Failed to write terminal message: %v", err) + } } bufrw.Flush() })) -- 2.50.0