Skip to content

Commit 6335c90

Browse files
Add StdCopy happy path test: both reading and writing
Signed-off-by: Sergey Evstifeev <[email protected]>
1 parent 9dc0973 commit 6335c90

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

pkg/stdcopy/stdcopy.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ const (
1212
stdWriterPrefixLen = 8
1313
stdWriterFdIndex = 0
1414
stdWriterSizeIndex = 4
15+
16+
startingBufLen = 32*1024 + stdWriterPrefixLen + 1
1517
)
1618

1719
// StdType prefixes type and length to standard stream.
@@ -80,7 +82,7 @@ var errInvalidStdHeader = errors.New("Unrecognized input header")
8082
// `written` will hold the total number of bytes written to `dstout` and `dsterr`.
8183
func StdCopy(dstout, dsterr io.Writer, src io.Reader) (written int64, err error) {
8284
var (
83-
buf = make([]byte, 32*1024+stdWriterPrefixLen+1)
85+
buf = make([]byte, startingBufLen)
8486
bufLen = len(buf)
8587
nr, nw int
8688
er, ew error

pkg/stdcopy/stdcopy_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,30 @@ func TestWriteDoesNotReturnNegativeWrittenBytes(t *testing.T) {
8585
}
8686
}
8787

88+
func TestStdCopyWriteAndRead(t *testing.T) {
89+
buffer := new(bytes.Buffer)
90+
stdOutBytes := []byte(strings.Repeat("o", startingBufLen))
91+
dstOut := NewStdWriter(buffer, Stdout)
92+
_, err := dstOut.Write(stdOutBytes)
93+
if err != nil {
94+
t.Fatal(err)
95+
}
96+
stdErrBytes := []byte(strings.Repeat("e", startingBufLen))
97+
dstErr := NewStdWriter(buffer, Stderr)
98+
_, err = dstErr.Write(stdErrBytes)
99+
if err != nil {
100+
t.Fatal(err)
101+
}
102+
written, err := StdCopy(ioutil.Discard, ioutil.Discard, buffer)
103+
if err != nil {
104+
t.Fatal(err)
105+
}
106+
expectedTotalWritten := len(stdOutBytes) + len(stdErrBytes)
107+
if written != int64(expectedTotalWritten) {
108+
t.Fatalf("Expected to have total of %d bytes written, got %d", expectedTotalWritten, written)
109+
}
110+
}
111+
88112
func TestStdCopyWithInvalidInputHeader(t *testing.T) {
89113
dstOut := NewStdWriter(ioutil.Discard, Stdout)
90114
dstErr := NewStdWriter(ioutil.Discard, Stderr)

0 commit comments

Comments
 (0)