summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJess Frazelle <jfrazelle@users.noreply.github.com>2015-09-23 15:51:21 -0700
committerJess Frazelle <jfrazelle@users.noreply.github.com>2015-09-23 15:51:21 -0700
commit04b171a6328d20ad4d6cbe1554aa53f189634178 (patch)
tree22bfe52e21e7745da8b4f8a680f19a8c6d524291
parent51fad49e673900fd6c10d86e6a21dfc2f3f0b40f (diff)
parent6335c90d4a0536bf625ec6e77b4a0040f877d133 (diff)
downloaddocker-04b171a6328d20ad4d6cbe1554aa53f189634178.tar.gz
Merge pull request #16500 from sergeyevstifeev/11584-pkg-stdcopy-test-coverage
Adding some more coverage to StdCopy to address #11584
-rw-r--r--pkg/stdcopy/stdcopy.go4
-rw-r--r--pkg/stdcopy/stdcopy_test.go24
2 files changed, 27 insertions, 1 deletions
diff --git a/pkg/stdcopy/stdcopy.go b/pkg/stdcopy/stdcopy.go
index 89c64baec0..9be01841a9 100644
--- a/pkg/stdcopy/stdcopy.go
+++ b/pkg/stdcopy/stdcopy.go
@@ -12,6 +12,8 @@ const (
stdWriterPrefixLen = 8
stdWriterFdIndex = 0
stdWriterSizeIndex = 4
+
+ startingBufLen = 32*1024 + stdWriterPrefixLen + 1
)
// StdType prefixes type and length to standard stream.
@@ -80,7 +82,7 @@ var errInvalidStdHeader = errors.New("Unrecognized input header")
// `written` will hold the total number of bytes written to `dstout` and `dsterr`.
func StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error) {
var (
- buf = make([]byte, 32*1024+stdWriterPrefixLen+1)
+ buf = make([]byte, startingBufLen)
bufLen = len(buf)
nr, nw int
er, ew error
diff --git a/pkg/stdcopy/stdcopy_test.go b/pkg/stdcopy/stdcopy_test.go
index c9964aa636..7f0d2ef5dc 100644
--- a/pkg/stdcopy/stdcopy_test.go
+++ b/pkg/stdcopy/stdcopy_test.go
@@ -85,6 +85,30 @@ func TestWriteDoesNotReturnNegativeWrittenBytes(t *testing.T) {
}
}
+func TestStdCopyWriteAndRead(t *testing.T) {
+ buffer := new(bytes.Buffer)
+ stdOutBytes := []byte(strings.Repeat("o", startingBufLen))
+ dstOut := NewStdWriter(buffer, Stdout)
+ _, err := dstOut.Write(stdOutBytes)
+ if err != nil {
+ t.Fatal(err)
+ }
+ stdErrBytes := []byte(strings.Repeat("e", startingBufLen))
+ dstErr := NewStdWriter(buffer, Stderr)
+ _, err = dstErr.Write(stdErrBytes)
+ if err != nil {
+ t.Fatal(err)
+ }
+ written, err := StdCopy(ioutil.Discard, ioutil.Discard, buffer)
+ if err != nil {
+ t.Fatal(err)
+ }
+ expectedTotalWritten := len(stdOutBytes) + len(stdErrBytes)
+ if written != int64(expectedTotalWritten) {
+ t.Fatalf("Expected to have total of %d bytes written, got %d", expectedTotalWritten, written)
+ }
+}
+
func TestStdCopyWithInvalidInputHeader(t *testing.T) {
dstOut := NewStdWriter(ioutil.Discard, Stdout)
dstErr := NewStdWriter(ioutil.Discard, Stderr)