]> Cypherpunks repositories - gostls13.git/commitdiff
testing/iotest: add ErrReader
authorCarlos Alexandro Becker <caarlos0@gmail.com>
Sun, 16 Aug 2020 21:58:40 +0000 (21:58 +0000)
committerEmmanuel Odeke <emm.odeke@gmail.com>
Mon, 17 Aug 2020 16:39:51 +0000 (16:39 +0000)
Adds an io.Reader that always returns 0 and a non-nil error.

Fixes #38781

Change-Id: I56bd124de07bc8809e77c6cfaab33a1e32cfe2ee
GitHub-Last-Rev: 4e232b17e9120405d4ea4743350ee361a3505043
GitHub-Pull-Request: golang/go#34741
Reviewed-on: https://go-review.googlesource.com/c/go/+/199501
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
src/testing/iotest/logger_test.go
src/testing/iotest/reader.go
src/testing/iotest/reader_test.go

index c121bf48f7c372f3bd8924c3a951bdecbd601551..575f37e05c4673edac2f502300ece8754affbf93 100644 (file)
@@ -81,14 +81,6 @@ func TestWriteLogger_errorOnWrite(t *testing.T) {
        }
 }
 
-type errReader struct {
-       err error
-}
-
-func (r errReader) Read([]byte) (int, error) {
-       return 0, r.err
-}
-
 func TestReadLogger(t *testing.T) {
        olw := log.Writer()
        olf := log.Flags()
@@ -146,14 +138,14 @@ func TestReadLogger_errorOnRead(t *testing.T) {
        data := []byte("Hello, World!")
        p := make([]byte, len(data))
 
-       lr := errReader{err: errors.New("Read Error!")}
+       lr := ErrReader()
        rl := NewReadLogger("read", lr)
        n, err := rl.Read(p)
        if err == nil {
                t.Fatalf("Unexpectedly succeeded to read: %v", err)
        }
 
-       wantLogWithHex := fmt.Sprintf("lr: read %x: %v\n", p[:n], "Read Error!")
+       wantLogWithHex := fmt.Sprintf("lr: read %x: %v\n", p[:n], "io")
        if g, w := lOut.String(), wantLogWithHex; g != w {
                t.Errorf("ReadLogger mismatch\n\tgot:  %q\n\twant: %q", g, w)
        }
index 8d82018fd6cdcbb1cc298e54273d21cdb2ee0549..b18e912f27af60d10ca349571956acdd7b360ba6 100644 (file)
@@ -68,6 +68,7 @@ func (r *dataErrReader) Read(p []byte) (n int, err error) {
        return
 }
 
+// ErrTimeout is a fake timeout error.
 var ErrTimeout = errors.New("timeout")
 
 // TimeoutReader returns ErrTimeout on the second read
@@ -86,3 +87,17 @@ func (r *timeoutReader) Read(p []byte) (int, error) {
        }
        return r.r.Read(p)
 }
+
+// ErrIO is a fake IO error.
+var ErrIO = errors.New("io")
+
+// ErrReader returns a fake error every time it is read from.
+func ErrReader() io.Reader {
+       return errReader(0)
+}
+
+type errReader int
+
+func (r errReader) Read(p []byte) (int, error) {
+       return 0, ErrIO
+}
index 9397837e08a56373fa88b50c40f41da657b23b27..ccba22ee29e3d4aea359c2c567462a629455bf19 100644 (file)
@@ -224,3 +224,13 @@ func TestDataErrReader_emptyReader(t *testing.T) {
                t.Errorf("Unexpectedly read %d bytes, wanted %d", g, w)
        }
 }
+
+func TestErrReader(t *testing.T) {
+       n, err := ErrReader().Read([]byte{})
+       if err != ErrIO {
+               t.Errorf("ErrReader.Read(any) should have returned ErrIO, returned %v", err)
+       }
+       if n != 0 {
+               t.Errorf("ErrReader.Read(any) should have read 0 bytes, read %v", n)
+       }
+}