From 6929169cb5462599d8f19e3280be5daa02793eb6 Mon Sep 17 00:00:00 2001 From: Konrad Hanff Date: Mon, 26 Jul 2021 16:26:30 +0200 Subject: [PATCH] Add test for nullio.ReadWriter --- pkg/nullio/nullio.go | 10 +++++++--- pkg/nullio/nullio_test.go | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) 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) +}