diff --git a/pkg/nullio/nullio.go b/pkg/nullio/nullio.go index 47d3be3..e006ccb 100644 --- a/pkg/nullio/nullio.go +++ b/pkg/nullio/nullio.go @@ -13,12 +13,16 @@ func (r Reader) Read(_ []byte) (int, error) { select {} } -// ReadWriter implements io.ReadWriter and does nothing on Read an Write. +// ReadWriter implements io.ReadWriter. It does not return from Read and discards everything on Write. type ReadWriter struct { Reader } -func (nrw *ReadWriter) Write(p []byte) (int, error) { +func (rw *ReadWriter) Write(p []byte) (int, error) { n, err := io.Discard.Write(p) - return n, fmt.Errorf("error writing to io.Discard: %w", err) + if err != nil { + return n, fmt.Errorf("error writing to io.Discard: %w", err) + } else { + return n, nil + } } diff --git a/pkg/nullio/nullio_test.go b/pkg/nullio/nullio_test.go index cee7a57..156b926 100644 --- a/pkg/nullio/nullio_test.go +++ b/pkg/nullio/nullio_test.go @@ -29,3 +29,11 @@ func TestReaderDoesNotReturnImmediately(t *testing.T) { assert.False(t, received) } + +func TestReadWriterWritesEverything(t *testing.T) { + readWriter := &ReadWriter{} + p := []byte{1, 2, 3} + n, err := readWriter.Write(p) + assert.NoError(t, err) + assert.Equal(t, len(p), n) +}