diff --git a/clipboard_test.go b/clipboard_test.go index 8d47568..bdb10f0 100644 --- a/clipboard_test.go +++ b/clipboard_test.go @@ -262,6 +262,7 @@ func TestClipboardWatch(t *testing.T) { } } }(ctx) +loop: for { select { case <-ctx.Done(): @@ -269,13 +270,13 @@ func TestClipboardWatch(t *testing.T) { t.Fatalf("clipboard watch never receives a notification") } t.Log(string(lastRead)) - return + break loop case data, ok := <-changed: if !ok { if string(lastRead) == "" { t.Fatalf("clipboard watch never receives a notification") } - return + break loop } if !bytes.Equal(data, want) { t.Fatalf("received data from watch mismatch, want: %v, got %v", string(want), string(data)) @@ -283,6 +284,14 @@ func TestClipboardWatch(t *testing.T) { lastRead = data } } + select { + case _, ok := <-changed: + if ok { + t.Fatalf("changed channel should be closed after ctx.Done") + } + case <-time.After(time.Second): + t.Fatalf("timeout waiting for changed to be closed") + } } func BenchmarkClipboard(b *testing.B) {