瀏覽代碼

netutil: fix goroutine error handling in test

Change from a done-channel to an error-channel in
TestLimitListenerError() to collect goroutine errors.

Change-Id: I7fb97a4ee18247123c686fd2b3e6f1bfe93de41e
Reviewed-on: https://go-review.googlesource.com/c/net/+/207465
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Lars Lehtonen 6 年之前
父節點
當前提交
f9c8255933
共有 1 個文件被更改,包括 9 次插入4 次删除
  1. 9 4
      netutil/listen_test.go

+ 9 - 4
netutil/listen_test.go

@@ -82,20 +82,25 @@ var errFake = errors.New("fake error from errorListener")
 
 // This used to hang.
 func TestLimitListenerError(t *testing.T) {
-	donec := make(chan bool, 1)
+	errCh := make(chan error, 1)
 	go func() {
+		defer close(errCh)
 		const n = 2
 		ll := LimitListener(errorListener{}, n)
 		for i := 0; i < n+1; i++ {
 			_, err := ll.Accept()
 			if err != errFake {
-				t.Fatalf("Accept error = %v; want errFake", err)
+				errCh <- fmt.Errorf("Accept error = %v; want errFake", err)
+				return
 			}
 		}
-		donec <- true
 	}()
+
 	select {
-	case <-donec:
+	case err := <-errCh:
+		if err != nil {
+			t.Fatalf("server: %v", err)
+		}
 	case <-time.After(timeout):
 		t.Fatal("timeout. deadlock?")
 	}