diff --git a/values.go b/values.go index 3b41e21..2ea7bf9 100644 --- a/values.go +++ b/values.go @@ -48,7 +48,7 @@ func readValue(r io.Reader) (value, error) { line, err := br.ReadBytes('\n') switch err { case io.EOF: - if line != nil { + if line != nil && len(line) > 0 { break } return nil, err @@ -109,7 +109,7 @@ func readInteger(b []byte) (value, error) { return Integer(i), nil } -// ----------------------------------------------------------------------------------------- +// ------------------------------------------------------------------------------ type BulkString string diff --git a/values_test.go b/values_test.go index 0c6c2d9..9f105b2 100644 --- a/values_test.go +++ b/values_test.go @@ -130,15 +130,24 @@ func (s streamTest) run(t *testing.T) { c, e := make(chan value), make(chan error) r := strings.NewReader(s[0].(string)) go streamValues(r, c, e) - for i := 1; i < len(s); i++ { + count := 1 + for { select { - case v := <-c: - if !eq(s[i], v) { - t.Errorf("expected %v, got %v", s[i], v) + case v, ok := <-c: + if !ok { + return + } + if !eq(s[count], v) { + t.Errorf("expected %q, got %q", s[count], v) + } + case err, ok := <-e: + if !ok { + return } - case err := <-e: t.Error(err) + return } + count++ } }