diff --git a/rest/watch/decoder_test.go b/rest/watch/decoder_test.go index c014f065..8623ce42 100644 --- a/rest/watch/decoder_test.go +++ b/rest/watch/decoder_test.go @@ -18,6 +18,7 @@ package versioned_test import ( "encoding/json" + "fmt" "io" "testing" "time" @@ -51,10 +52,13 @@ func TestDecoder(t *testing.T) { expect := &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}} encoder := json.NewEncoder(in) eType := eventType + errc := make(chan error) + go func() { data, err := runtime.Encode(scheme.Codecs.LegacyCodec(v1.SchemeGroupVersion), expect) if err != nil { - t.Fatalf("Unexpected error %v", err) + errc <- fmt.Errorf("Unexpected error %v", err) + return } event := metav1.WatchEvent{ Type: string(eType), @@ -70,7 +74,8 @@ func TestDecoder(t *testing.T) { go func() { action, got, err := decoder.Decode() if err != nil { - t.Fatalf("Unexpected error %v", err) + errc <- fmt.Errorf("Unexpected error %v", err) + return } if e, a := eType, action; e != a { t.Errorf("Expected %v, got %v", e, a) @@ -81,7 +86,11 @@ func TestDecoder(t *testing.T) { t.Logf("Exited read") close(done) }() - <-done + select { + case err := <-errc: + t.Fatal(err) + case <-done: + } done = make(chan struct{}) go func() {