Merge pull request #16444 from fgimenez/11584-pkg-stdcopy-test-coverage

Added tests for Write
This commit is contained in:
Antonio Murdaca 2015-09-22 14:28:14 +02:00
commit c8e890aa4b

View file

@ -2,6 +2,7 @@ package stdcopy
import ( import (
"bytes" "bytes"
"errors"
"io/ioutil" "io/ioutil"
"strings" "strings"
"testing" "testing"
@ -49,6 +50,41 @@ func TestWrite(t *testing.T) {
} }
} }
type errWriter struct {
n int
err error
}
func (f *errWriter) Write(buf []byte) (int, error) {
return f.n, f.err
}
func TestWriteWithWriterError(t *testing.T) {
expectedError := errors.New("expected")
expectedReturnedBytes := 10
writer := NewStdWriter(&errWriter{
n: stdWriterPrefixLen + expectedReturnedBytes,
err: expectedError}, Stdout)
data := []byte("This won't get written, sigh")
n, err := writer.Write(data)
if err != expectedError {
t.Fatalf("Didn't get expected error.")
}
if n != expectedReturnedBytes {
t.Fatalf("Didn't get expected writen bytes %d, got %d.",
expectedReturnedBytes, n)
}
}
func TestWriteDoesNotReturnNegativeWrittenBytes(t *testing.T) {
writer := NewStdWriter(&errWriter{n: -1}, Stdout)
data := []byte("This won't get written, sigh")
actual, _ := writer.Write(data)
if actual != 0 {
t.Fatalf("Expected returned written bytes equal to 0, got %d", actual)
}
}
func TestStdCopyWithInvalidInputHeader(t *testing.T) { func TestStdCopyWithInvalidInputHeader(t *testing.T) {
dstOut := NewStdWriter(ioutil.Discard, Stdout) dstOut := NewStdWriter(ioutil.Discard, Stdout)
dstErr := NewStdWriter(ioutil.Discard, Stderr) dstErr := NewStdWriter(ioutil.Discard, Stderr)