]> Cypherpunks repositories - gostls13.git/commitdiff
bufio: test for exact error value in TestNegativeEOFReader and TestLargeReader
authorDmitri Shuralyov <dmitshur@golang.org>
Tue, 16 Jun 2020 17:08:47 +0000 (13:08 -0400)
committerDmitri Shuralyov <dmitshur@golang.org>
Wed, 17 Jun 2020 14:47:32 +0000 (14:47 +0000)
CL 225357 added tests for Scanner not panicking on bad readers.
CL 225557 created a named error value that is returned instead.
CL 237739 documents that the bufio.ErrBadReadCount is returned
when bufio.Scanner is used with an invalid io.Reader.

This suggests we wouldn't want that behavior to be able to change
without a test noticing it, so modify the tests to check for the
exact error value instead of just any non-nil one.

For #38053.

Change-Id: I4b0b8eb6804ebfe2c768505ddb94f0b1017fcf8b
Reviewed-on: https://go-review.googlesource.com/c/go/+/238217
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/bufio/scan_test.go

index ceb813ae8d5938cf05f4dc638c74beb0c0b41019..e99b09f66f432012bd0c87684dad11e1621307ee 100644 (file)
@@ -558,8 +558,8 @@ func (r *negativeEOFReader) Read(p []byte) (int, error) {
        return -1, io.EOF
 }
 
-// Test that the scanner doesn't panic on a reader that returns a
-// negative count of bytes read (issue 38053).
+// Test that the scanner doesn't panic and returns ErrBadReadCount
+// on a reader that returns a negative count of bytes read (issue 38053).
 func TestNegativeEOFReader(t *testing.T) {
        r := negativeEOFReader(10)
        scanner := NewScanner(&r)
@@ -571,8 +571,8 @@ func TestNegativeEOFReader(t *testing.T) {
                        break
                }
        }
-       if scanner.Err() == nil {
-               t.Error("scanner.Err returned nil, expected an error")
+       if got, want := scanner.Err(), ErrBadReadCount; got != want {
+               t.Errorf("scanner.Err: got %v, want %v", got, want)
        }
 }
 
@@ -584,11 +584,13 @@ func (largeReader) Read(p []byte) (int, error) {
        return len(p) + 1, nil
 }
 
+// Test that the scanner doesn't panic and returns ErrBadReadCount
+// on a reader that returns an impossibly large count of bytes read (issue 38053).
 func TestLargeReader(t *testing.T) {
        scanner := NewScanner(largeReader{})
        for scanner.Scan() {
        }
-       if scanner.Err() == nil {
-               t.Error("scanner.Err returned nil, expected an error")
+       if got, want := scanner.Err(), ErrBadReadCount; got != want {
+               t.Errorf("scanner.Err: got %v, want %v", got, want)
        }
 }