]> Cypherpunks repositories - gostls13.git/commitdiff
all: use {bytes,strings}.NewReader instead of bytes.Buffers
authorBrad Fitzpatrick <bradfitz@golang.org>
Mon, 27 Jan 2014 19:05:01 +0000 (11:05 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 27 Jan 2014 19:05:01 +0000 (11:05 -0800)
Use the smaller read-only bytes.NewReader/strings.NewReader instead
of a bytes.Buffer when possible.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/54660045

31 files changed:
src/pkg/archive/tar/reader_test.go
src/pkg/bufio/bufio_test.go
src/pkg/bufio/scan_test.go
src/pkg/compress/bzip2/bzip2_test.go
src/pkg/compress/flate/flate_test.go
src/pkg/compress/gzip/gunzip_test.go
src/pkg/compress/gzip/gzip_test.go
src/pkg/compress/lzw/reader_test.go
src/pkg/compress/zlib/example_test.go
src/pkg/compress/zlib/reader_test.go
src/pkg/crypto/rsa/rsa_test.go
src/pkg/debug/elf/file.go
src/pkg/debug/macho/file.go
src/pkg/encoding/ascii85/ascii85_test.go
src/pkg/encoding/base32/base32_test.go
src/pkg/encoding/base64/base64_test.go
src/pkg/encoding/binary/binary_test.go
src/pkg/encoding/binary/varint_test.go
src/pkg/encoding/gob/encoder_test.go
src/pkg/encoding/json/encode_test.go
src/pkg/encoding/xml/read.go
src/pkg/mime/multipart/formdata_test.go
src/pkg/net/http/httputil/dump.go
src/pkg/net/http/httputil/dump_test.go
src/pkg/net/http/request_test.go
src/pkg/net/http/requestwrite_test.go
src/pkg/net/http/responsewrite_test.go
src/pkg/net/http/serve_test.go
src/pkg/net/http/transfer.go
src/pkg/runtime/race/race_test.go
src/pkg/text/scanner/scanner_test.go

index 12856165656a6bb477eddac8aba7e17790870636..acd45410e37171b2a6b41e04c5ea2e368a36ad76 100644 (file)
@@ -321,7 +321,7 @@ func TestParsePAXHeader(t *testing.T) {
                {"mtime", "mtime=1350244992.023960108", "30 mtime=1350244992.023960108\n"}}
        for _, test := range paxTests {
                key, expected, raw := test[0], test[1], test[2]
-               reader := bytes.NewBuffer([]byte(raw))
+               reader := bytes.NewReader([]byte(raw))
                headers, err := parsePAX(reader)
                if err != nil {
                        t.Errorf("Couldn't parse correctly formatted headers: %v", err)
@@ -337,7 +337,7 @@ func TestParsePAXHeader(t *testing.T) {
                        t.Error("Buffer wasn't consumed")
                }
        }
-       badHeader := bytes.NewBuffer([]byte("3 somelongkey="))
+       badHeader := bytes.NewReader([]byte("3 somelongkey="))
        if _, err := parsePAX(badHeader); err != ErrHeader {
                t.Fatal("Unexpected success when parsing bad header")
        }
index 06d365b7968ad955ec0a69f5d8968e40684ad476..3c86857e107c20be9b9120055f92afa031fd24f1 100644 (file)
@@ -65,12 +65,12 @@ func readBytes(buf *Reader) string {
 
 func TestReaderSimple(t *testing.T) {
        data := "hello world"
-       b := NewReader(bytes.NewBufferString(data))
+       b := NewReader(strings.NewReader(data))
        if s := readBytes(b); s != "hello world" {
                t.Errorf("simple hello world test failed: got %q", s)
        }
 
-       b = NewReader(newRot13Reader(bytes.NewBufferString(data)))
+       b = NewReader(newRot13Reader(strings.NewReader(data)))
        if s := readBytes(b); s != "uryyb jbeyq" {
                t.Errorf("rot13 hello world test failed: got %q", s)
        }
@@ -161,7 +161,7 @@ func TestReader(t *testing.T) {
                                        readmaker := readMakers[i]
                                        bufreader := bufreaders[j]
                                        bufsize := bufsizes[k]
-                                       read := readmaker.fn(bytes.NewBufferString(text))
+                                       read := readmaker.fn(strings.NewReader(text))
                                        buf := NewReaderSize(read, bufsize)
                                        s := bufreader.fn(buf)
                                        if s != text {
@@ -479,7 +479,7 @@ func TestWriteErrors(t *testing.T) {
 
 func TestNewReaderSizeIdempotent(t *testing.T) {
        const BufSize = 1000
-       b := NewReaderSize(bytes.NewBufferString("hello world"), BufSize)
+       b := NewReaderSize(strings.NewReader("hello world"), BufSize)
        // Does it recognize itself?
        b1 := NewReaderSize(b, BufSize)
        if b1 != b {
@@ -677,7 +677,7 @@ func TestLineTooLong(t *testing.T) {
        for i := 0; i < minReadBufferSize*5/2; i++ {
                data = append(data, '0'+byte(i%10))
        }
-       buf := bytes.NewBuffer(data)
+       buf := bytes.NewReader(data)
        l := NewReaderSize(buf, minReadBufferSize)
        line, isPrefix, err := l.ReadLine()
        if !isPrefix || !bytes.Equal(line, data[:minReadBufferSize]) || err != nil {
@@ -702,7 +702,7 @@ func TestLineTooLong(t *testing.T) {
 func TestReadAfterLines(t *testing.T) {
        line1 := "this is line1"
        restData := "this is line2\nthis is line 3\n"
-       inbuf := bytes.NewBuffer([]byte(line1 + "\n" + restData))
+       inbuf := bytes.NewReader([]byte(line1 + "\n" + restData))
        outbuf := new(bytes.Buffer)
        maxLineLength := len(line1) + len(restData)/2
        l := NewReaderSize(inbuf, maxLineLength)
@@ -728,7 +728,7 @@ func TestReadEmptyBuffer(t *testing.T) {
 }
 
 func TestLinesAfterRead(t *testing.T) {
-       l := NewReaderSize(bytes.NewBuffer([]byte("foo")), minReadBufferSize)
+       l := NewReaderSize(bytes.NewReader([]byte("foo")), minReadBufferSize)
        _, err := ioutil.ReadAll(l)
        if err != nil {
                t.Error(err)
@@ -818,7 +818,7 @@ func createTestInput(n int) []byte {
 
 func TestReaderWriteTo(t *testing.T) {
        input := createTestInput(8192)
-       r := NewReader(onlyReader{bytes.NewBuffer(input)})
+       r := NewReader(onlyReader{bytes.NewReader(input)})
        w := new(bytes.Buffer)
        if n, err := r.WriteTo(w); err != nil || n != int64(len(input)) {
                t.Fatalf("r.WriteTo(w) = %d, %v, want %d, nil", n, err, len(input))
@@ -877,7 +877,7 @@ func TestWriterReadFrom(t *testing.T) {
                        input := createTestInput(8192)
                        b := new(bytes.Buffer)
                        w := NewWriter(wfunc(b))
-                       r := rfunc(bytes.NewBuffer(input))
+                       r := rfunc(bytes.NewReader(input))
                        if n, err := w.ReadFrom(r); err != nil || n != int64(len(input)) {
                                t.Errorf("ws[%d],rs[%d]: w.ReadFrom(r) = %d, %v, want %d, nil", wi, ri, n, err, len(input))
                                continue
index c1483b2685855da7b49c560e95ccc73549356c04..4ac529fd6dd71ea797e13bfd4383424bd8201081 100644 (file)
@@ -38,7 +38,7 @@ var scanTests = []string{
 
 func TestScanByte(t *testing.T) {
        for n, test := range scanTests {
-               buf := bytes.NewBufferString(test)
+               buf := strings.NewReader(test)
                s := NewScanner(buf)
                s.Split(ScanBytes)
                var i int
@@ -60,7 +60,7 @@ func TestScanByte(t *testing.T) {
 // Test that the rune splitter returns same sequence of runes (not bytes) as for range string.
 func TestScanRune(t *testing.T) {
        for n, test := range scanTests {
-               buf := bytes.NewBufferString(test)
+               buf := strings.NewReader(test)
                s := NewScanner(buf)
                s.Split(ScanRunes)
                var i, runeCount int
@@ -104,7 +104,7 @@ var wordScanTests = []string{
 // Test that the word splitter returns the same data as strings.Fields.
 func TestScanWords(t *testing.T) {
        for n, test := range wordScanTests {
-               buf := bytes.NewBufferString(test)
+               buf := strings.NewReader(test)
                s := NewScanner(buf)
                s.Split(ScanWords)
                words := strings.Fields(test)
@@ -135,7 +135,7 @@ func TestScanWords(t *testing.T) {
 // reads in Scanner.Scan.
 type slowReader struct {
        max int
-       buf *bytes.Buffer
+       buf io.Reader
 }
 
 func (sr *slowReader) Read(p []byte) (n int, err error) {
@@ -248,7 +248,7 @@ func TestScanLineTooLong(t *testing.T) {
 
 // Test that the line splitter handles a final line without a newline.
 func testNoNewline(text string, lines []string, t *testing.T) {
-       buf := bytes.NewBufferString(text)
+       buf := strings.NewReader(text)
        s := NewScanner(&slowReader{7, buf})
        s.Split(ScanLines)
        for lineNum := 0; s.Scan(); lineNum++ {
@@ -328,7 +328,7 @@ func TestSplitError(t *testing.T) {
        }
        // Read the data.
        const text = "abcdefghijklmnopqrstuvwxyz"
-       buf := bytes.NewBufferString(text)
+       buf := strings.NewReader(text)
        s := NewScanner(&slowReader{1, buf})
        s.Split(errorSplit)
        var i int
index ada1f9a001636ff977061007ae452350db047496..cd647e5ae0048031b17d2f2331cf969a24475ada 100644 (file)
@@ -14,7 +14,7 @@ import (
 )
 
 func TestBitReader(t *testing.T) {
-       buf := bytes.NewBuffer([]byte{0xaa})
+       buf := bytes.NewReader([]byte{0xaa})
        br := newBitReader(buf)
        if n := br.ReadBits(1); n != 1 {
                t.Errorf("read 1 wrong")
@@ -31,7 +31,7 @@ func TestBitReader(t *testing.T) {
 }
 
 func TestBitReaderLarge(t *testing.T) {
-       buf := bytes.NewBuffer([]byte{0x12, 0x34, 0x56, 0x78})
+       buf := bytes.NewReader([]byte{0x12, 0x34, 0x56, 0x78})
        br := newBitReader(buf)
        if n := br.ReadBits(32); n != 0x12345678 {
                t.Errorf("got: %x want: %x", n, 0x12345678)
@@ -43,7 +43,7 @@ func readerFromHex(s string) io.Reader {
        if err != nil {
                panic("readerFromHex: bad input")
        }
-       return bytes.NewBuffer(data)
+       return bytes.NewReader(data)
 }
 
 func decompressHex(s string) (out []byte, err error) {
@@ -191,7 +191,7 @@ func benchmarkDecode(b *testing.B, testfile int) {
        }
        b.SetBytes(int64(len(compressed)))
        for i := 0; i < b.N; i++ {
-               r := bytes.NewBuffer(compressed)
+               r := bytes.NewReader(compressed)
                io.Copy(ioutil.Discard, NewReader(r))
        }
 }
@@ -201,7 +201,7 @@ func BenchmarkDecodeTwain(b *testing.B)  { benchmarkDecode(b, twain) }
 
 func TestBufferOverrun(t *testing.T) {
        // Tests https://code.google.com/p/go/issues/detail?id=5747.
-       buffer := bytes.NewBuffer([]byte(bufferOverrunBase64))
+       buffer := bytes.NewReader([]byte(bufferOverrunBase64))
        decoder := base64.NewDecoder(base64.StdEncoding, buffer)
        decompressor := NewReader(decoder)
        // This shouldn't panic.
index 57fea5ab4dcfa65a207a60396827d510ae13962f..068766323358ecb74ab82c63c5f4e0c9636c5d93 100644 (file)
@@ -14,7 +14,7 @@ import (
 )
 
 func TestUncompressedSource(t *testing.T) {
-       decoder := NewReader(bytes.NewBuffer([]byte{0x01, 0x01, 0x00, 0xfe, 0xff, 0x11}))
+       decoder := NewReader(bytes.NewReader([]byte{0x01, 0x01, 0x00, 0xfe, 0xff, 0x11}))
        output := make([]byte, 1)
        n, error := decoder.Read(output)
        if n != 1 || error != nil {
index 572fb584885fbfd35e73abfe2f84e3b938ecf6f2..561537373770fdb5713aa151dba523ba008dca36 100644 (file)
@@ -284,7 +284,7 @@ var gunzipTests = []gunzipTest{
 func TestDecompressor(t *testing.T) {
        b := new(bytes.Buffer)
        for _, tt := range gunzipTests {
-               in := bytes.NewBuffer(tt.gzip)
+               in := bytes.NewReader(tt.gzip)
                gzip, err := NewReader(in)
                if err != nil {
                        t.Errorf("%s: NewReader: %s", tt.name, err)
index 119be2e135be34defe891aa2b7226f92305bfa83..09271b24e92037492a7e9e753ec58f96a88d8ace 100644 (file)
@@ -85,7 +85,7 @@ func TestRoundTrip(t *testing.T) {
 func TestLatin1(t *testing.T) {
        latin1 := []byte{0xc4, 'u', 0xdf, 'e', 'r', 'u', 'n', 'g', 0}
        utf8 := "Äußerung"
-       z := Reader{r: bufio.NewReader(bytes.NewBuffer(latin1))}
+       z := Reader{r: bufio.NewReader(bytes.NewReader(latin1))}
        s, err := z.readString()
        if err != nil {
                t.Fatalf("readString: %v", err)
index 6f155b1bdee76ee543e1cb5bf7316c11da72fbcb..9006c91c233c62bf5ca585c5c652451322223a1b 100644 (file)
@@ -127,7 +127,7 @@ func benchmarkDecoder(b *testing.B, n int) {
                if len(buf0) > n-i {
                        buf0 = buf0[:n-i]
                }
-               io.Copy(w, bytes.NewBuffer(buf0))
+               w.Write(buf0)
        }
        w.Close()
        buf1 := compressed.Bytes()
@@ -135,7 +135,7 @@ func benchmarkDecoder(b *testing.B, n int) {
        runtime.GC()
        b.StartTimer()
        for i := 0; i < b.N; i++ {
-               io.Copy(ioutil.Discard, NewReader(bytes.NewBuffer(buf1), LSB, 8))
+               io.Copy(ioutil.Discard, NewReader(bytes.NewReader(buf1), LSB, 8))
        }
 }
 
index b934ffa6182e0998995436868197de3977d971b8..70408895ffd5a03e3aa405fd43b9b5f60fa76edd 100644 (file)
@@ -25,7 +25,7 @@ func ExampleNewWriter() {
 func ExampleNewReader() {
        buff := []byte{120, 156, 202, 72, 205, 201, 201, 215, 81, 40, 207,
                47, 202, 73, 225, 2, 4, 0, 0, 255, 255, 33, 231, 4, 147}
-       b := bytes.NewBuffer(buff)
+       b := bytes.NewReader(buff)
 
        r, err := zlib.NewReader(b)
        if err != nil {
index 3b02a086845806222e48910920b50c855092a02e..218ccba14110fcdcd0a64a778891c377d454284b 100644 (file)
@@ -102,7 +102,7 @@ var zlibTests = []zlibTest{
 func TestDecompressor(t *testing.T) {
        b := new(bytes.Buffer)
        for _, tt := range zlibTests {
-               in := bytes.NewBuffer(tt.compressed)
+               in := bytes.NewReader(tt.compressed)
                zlib, err := NewReaderDict(in, tt.dict)
                if err != nil {
                        if err != tt.err {
index cf193c669f3d7e452cbc525226af28a230d5e46a..4ee1c3a8b2afc6e4be23c041f7b40629a61c1e1b 100644 (file)
@@ -197,7 +197,7 @@ func TestEncryptOAEP(t *testing.T) {
                public := PublicKey{n, test.e}
 
                for j, message := range test.msgs {
-                       randomSource := bytes.NewBuffer(message.seed)
+                       randomSource := bytes.NewReader(message.seed)
                        out, err := EncryptOAEP(sha1, randomSource, &public, message.in, nil)
                        if err != nil {
                                t.Errorf("#%d,%d error: %s", i, j, err)
index 07661aa16653f2a3190e3e39a198ea336c58a6de..a406170996884ad933d6c1498a0e4664aa8ff73c 100644 (file)
@@ -412,7 +412,7 @@ func (f *File) getSymbols32(typ SectionType) ([]Symbol, []byte, error) {
        if err != nil {
                return nil, nil, errors.New("cannot load symbol section")
        }
-       symtab := bytes.NewBuffer(data)
+       symtab := bytes.NewReader(data)
        if symtab.Len()%Sym32Size != 0 {
                return nil, nil, errors.New("length of symbol section is not a multiple of SymSize")
        }
@@ -455,7 +455,7 @@ func (f *File) getSymbols64(typ SectionType) ([]Symbol, []byte, error) {
        if err != nil {
                return nil, nil, errors.New("cannot load symbol section")
        }
-       symtab := bytes.NewBuffer(data)
+       symtab := bytes.NewReader(data)
        if symtab.Len()%Sym64Size != 0 {
                return nil, nil, errors.New("length of symbol section is not a multiple of Sym64Size")
        }
@@ -533,7 +533,7 @@ func (f *File) applyRelocationsAMD64(dst []byte, rels []byte) error {
                return err
        }
 
-       b := bytes.NewBuffer(rels)
+       b := bytes.NewReader(rels)
        var rela Rela64
 
        for b.Len() > 0 {
index f5f0dedb7c3cf099acb0b103e88e8cbc4996dcfa..c799fa49df3f8d9611e4763b0165546e0d694aa6 100644 (file)
@@ -246,7 +246,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
 
                case LoadCmdDylib:
                        var hdr DylibCmd
-                       b := bytes.NewBuffer(cmddat)
+                       b := bytes.NewReader(cmddat)
                        if err := binary.Read(b, bo, &hdr); err != nil {
                                return nil, err
                        }
@@ -263,7 +263,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
 
                case LoadCmdSymtab:
                        var hdr SymtabCmd
-                       b := bytes.NewBuffer(cmddat)
+                       b := bytes.NewReader(cmddat)
                        if err := binary.Read(b, bo, &hdr); err != nil {
                                return nil, err
                        }
@@ -290,7 +290,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
 
                case LoadCmdDysymtab:
                        var hdr DysymtabCmd
-                       b := bytes.NewBuffer(cmddat)
+                       b := bytes.NewReader(cmddat)
                        if err := binary.Read(b, bo, &hdr); err != nil {
                                return nil, err
                        }
@@ -299,7 +299,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
                                return nil, err
                        }
                        x := make([]uint32, hdr.Nindirectsyms)
-                       if err := binary.Read(bytes.NewBuffer(dat), bo, x); err != nil {
+                       if err := binary.Read(bytes.NewReader(dat), bo, x); err != nil {
                                return nil, err
                        }
                        st := new(Dysymtab)
@@ -311,7 +311,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
 
                case LoadCmdSegment:
                        var seg32 Segment32
-                       b := bytes.NewBuffer(cmddat)
+                       b := bytes.NewReader(cmddat)
                        if err := binary.Read(b, bo, &seg32); err != nil {
                                return nil, err
                        }
@@ -349,7 +349,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
 
                case LoadCmdSegment64:
                        var seg64 Segment64
-                       b := bytes.NewBuffer(cmddat)
+                       b := bytes.NewReader(cmddat)
                        if err := binary.Read(b, bo, &seg64); err != nil {
                                return nil, err
                        }
@@ -396,7 +396,7 @@ func NewFile(r io.ReaderAt) (*File, error) {
 func (f *File) parseSymtab(symdat, strtab, cmddat []byte, hdr *SymtabCmd, offset int64) (*Symtab, error) {
        bo := f.ByteOrder
        symtab := make([]Symbol, hdr.Nsyms)
-       b := bytes.NewBuffer(symdat)
+       b := bytes.NewReader(symdat)
        for i := range symtab {
                var n Nlist64
                if f.Magic == Magic64 {
index dc1134dccd63713c88633370e4361b306edd076a..77bc465d5949c916df1c6a75c8d244fb53e25aa4 100644 (file)
@@ -8,6 +8,7 @@ import (
        "bytes"
        "io"
        "io/ioutil"
+       "strings"
        "testing"
 )
 
@@ -115,7 +116,7 @@ func TestDecode(t *testing.T) {
 
 func TestDecoder(t *testing.T) {
        for _, p := range pairs {
-               decoder := NewDecoder(bytes.NewBufferString(p.encoded))
+               decoder := NewDecoder(strings.NewReader(p.encoded))
                dbuf, err := ioutil.ReadAll(decoder)
                if err != nil {
                        t.Fatal("Read failed", err)
@@ -130,7 +131,7 @@ func TestDecoder(t *testing.T) {
 
 func TestDecoderBuffering(t *testing.T) {
        for bs := 1; bs <= 12; bs++ {
-               decoder := NewDecoder(bytes.NewBufferString(bigtest.encoded))
+               decoder := NewDecoder(strings.NewReader(bigtest.encoded))
                buf := make([]byte, len(bigtest.decoded)+12)
                var total int
                for total = 0; total < len(bigtest.decoded); {
index 63298d1c94c180d34797b797768b80e7976f4229..f56b996faafa9347467def50ad30855e251ce838 100644 (file)
@@ -108,7 +108,7 @@ func TestDecode(t *testing.T) {
 
 func TestDecoder(t *testing.T) {
        for _, p := range pairs {
-               decoder := NewDecoder(StdEncoding, bytes.NewBufferString(p.encoded))
+               decoder := NewDecoder(StdEncoding, strings.NewReader(p.encoded))
                dbuf := make([]byte, StdEncoding.DecodedLen(len(p.encoded)))
                count, err := decoder.Read(dbuf)
                if err != nil && err != io.EOF {
@@ -125,7 +125,7 @@ func TestDecoder(t *testing.T) {
 
 func TestDecoderBuffering(t *testing.T) {
        for bs := 1; bs <= 12; bs++ {
-               decoder := NewDecoder(StdEncoding, bytes.NewBufferString(bigtest.encoded))
+               decoder := NewDecoder(StdEncoding, strings.NewReader(bigtest.encoded))
                buf := make([]byte, len(bigtest.decoded)+12)
                var total int
                for total = 0; total < len(bigtest.decoded); {
@@ -267,13 +267,13 @@ LNEBUWIIDFON2CA3DBMJXXE5LNFY==
 ====`
        encodedShort := strings.Replace(encoded, "\n", "", -1)
 
-       dec := NewDecoder(StdEncoding, bytes.NewBufferString(encoded))
+       dec := NewDecoder(StdEncoding, strings.NewReader(encoded))
        res1, err := ioutil.ReadAll(dec)
        if err != nil {
                t.Errorf("ReadAll failed: %v", err)
        }
 
-       dec = NewDecoder(StdEncoding, bytes.NewBufferString(encodedShort))
+       dec = NewDecoder(StdEncoding, strings.NewReader(encodedShort))
        var res2 []byte
        res2, err = ioutil.ReadAll(dec)
        if err != nil {
index 579591a88d7a0b44f33eef97c1beb53f7eba34fe..6bcc724d9b5702fc4d42e67bd5df2d9a1cef5cb1 100644 (file)
@@ -113,7 +113,7 @@ func TestDecode(t *testing.T) {
 
 func TestDecoder(t *testing.T) {
        for _, p := range pairs {
-               decoder := NewDecoder(StdEncoding, bytes.NewBufferString(p.encoded))
+               decoder := NewDecoder(StdEncoding, strings.NewReader(p.encoded))
                dbuf := make([]byte, StdEncoding.DecodedLen(len(p.encoded)))
                count, err := decoder.Read(dbuf)
                if err != nil && err != io.EOF {
@@ -130,7 +130,7 @@ func TestDecoder(t *testing.T) {
 
 func TestDecoderBuffering(t *testing.T) {
        for bs := 1; bs <= 12; bs++ {
-               decoder := NewDecoder(StdEncoding, bytes.NewBufferString(bigtest.encoded))
+               decoder := NewDecoder(StdEncoding, strings.NewReader(bigtest.encoded))
                buf := make([]byte, len(bigtest.decoded)+12)
                var total int
                for total = 0; total < len(bigtest.decoded); {
@@ -308,13 +308,13 @@ bqbPb06551Y4
 `
        encodedShort := strings.Replace(encoded, "\n", "", -1)
 
-       dec := NewDecoder(StdEncoding, bytes.NewBufferString(encoded))
+       dec := NewDecoder(StdEncoding, strings.NewReader(encoded))
        res1, err := ioutil.ReadAll(dec)
        if err != nil {
                t.Errorf("ReadAll failed: %v", err)
        }
 
-       dec = NewDecoder(StdEncoding, bytes.NewBufferString(encodedShort))
+       dec = NewDecoder(StdEncoding, strings.NewReader(encodedShort))
        var res2 []byte
        res2, err = ioutil.ReadAll(dec)
        if err != nil {
index fdfee7d871148e5f00132d8322c5a2b38015afdd..1aa6ecd2486ba007cd565209e49bbd05928bff70 100644 (file)
@@ -111,7 +111,7 @@ func checkResult(t *testing.T, dir string, order ByteOrder, err error, have, wan
 
 func testRead(t *testing.T, order ByteOrder, b []byte, s1 interface{}) {
        var s2 Struct
-       err := Read(bytes.NewBuffer(b), order, &s2)
+       err := Read(bytes.NewReader(b), order, &s2)
        checkResult(t, "Read", order, err, s2, s1)
 }
 
@@ -131,7 +131,7 @@ func TestBigEndianPtrWrite(t *testing.T) { testWrite(t, BigEndian, big, &s) }
 
 func TestReadSlice(t *testing.T) {
        slice := make([]int32, 2)
-       err := Read(bytes.NewBuffer(src), BigEndian, slice)
+       err := Read(bytes.NewReader(src), BigEndian, slice)
        checkResult(t, "ReadSlice", BigEndian, err, slice, res)
 }
 
index 9476bd5fb7a6d7ac69d905895a3fbaec81a02895..ca411ecbd65e8180d2bfcb0c819a561328d66f06 100644 (file)
@@ -35,7 +35,7 @@ func testVarint(t *testing.T, x int64) {
                t.Errorf("Varint(%d): got n = %d; want %d", x, m, n)
        }
 
-       y, err := ReadVarint(bytes.NewBuffer(buf))
+       y, err := ReadVarint(bytes.NewReader(buf))
        if err != nil {
                t.Errorf("ReadVarint(%d): %s", x, err)
        }
@@ -55,7 +55,7 @@ func testUvarint(t *testing.T, x uint64) {
                t.Errorf("Uvarint(%d): got n = %d; want %d", x, m, n)
        }
 
-       y, err := ReadUvarint(bytes.NewBuffer(buf))
+       y, err := ReadUvarint(bytes.NewReader(buf))
        if err != nil {
                t.Errorf("ReadUvarint(%d): %s", x, err)
        }
@@ -114,7 +114,7 @@ func TestBufferTooSmall(t *testing.T) {
                        t.Errorf("Uvarint(%v): got x = %d, n = %d", buf, x, n)
                }
 
-               x, err := ReadUvarint(bytes.NewBuffer(buf))
+               x, err := ReadUvarint(bytes.NewReader(buf))
                if x != 0 || err != io.EOF {
                        t.Errorf("ReadUvarint(%v): got x = %d, err = %s", buf, x, err)
                }
@@ -127,7 +127,7 @@ func testOverflow(t *testing.T, buf []byte, n0 int, err0 error) {
                t.Errorf("Uvarint(%v): got x = %d, n = %d; want 0, %d", buf, x, n, n0)
        }
 
-       x, err := ReadUvarint(bytes.NewBuffer(buf))
+       x, err := ReadUvarint(bytes.NewReader(buf))
        if x != 0 || err != err0 {
                t.Errorf("ReadUvarint(%v): got x = %d, err = %s; want 0, %s", buf, x, err, err0)
        }
index 4ecf51d122b755939f51690a100f7efcace27eda..299a19914ac67f833b3602d62ceabe274faf64c7 100644 (file)
@@ -630,7 +630,7 @@ func TestSliceReusesMemory(t *testing.T) {
 // Used to crash: negative count in recvMessage.
 func TestBadCount(t *testing.T) {
        b := []byte{0xfb, 0xa5, 0x82, 0x2f, 0xca, 0x1}
-       if err := NewDecoder(bytes.NewBuffer(b)).Decode(nil); err == nil {
+       if err := NewDecoder(bytes.NewReader(b)).Decode(nil); err == nil {
                t.Error("expected error from bad count")
        } else if err.Error() != errBadCount.Error() {
                t.Error("expected bad count error; got", err)
index 265a237e448761eb96123b5c328aecf9632b8c3a..2e89a78eb9fd01d75631f1b9a7cc1e6002e38009 100644 (file)
@@ -93,7 +93,7 @@ func TestStringTag(t *testing.T) {
 
        // Verify that it round-trips.
        var s2 StringTag
-       err = NewDecoder(bytes.NewBuffer(got)).Decode(&s2)
+       err = NewDecoder(bytes.NewReader(got)).Decode(&s2)
        if err != nil {
                t.Fatalf("Decode: %v", err)
        }
index 8890508f8555b5b2e3847a4d133ca249862bb153..651d13d4d094dd6adba063ac79c82d9117833115 100644 (file)
@@ -112,7 +112,7 @@ import (
 // to a freshly allocated value and then mapping the element to that value.
 //
 func Unmarshal(data []byte, v interface{}) error {
-       return NewDecoder(bytes.NewBuffer(data)).Decode(v)
+       return NewDecoder(bytes.NewReader(data)).Decode(v)
 }
 
 // Decode works like xml.Unmarshal, except it reads the decoder
index 4bc4649317a8b7d3cfee03e9aaa7c6b1d70561a1..6e2388bafef3363d4d78285503339c0e646ccbed 100644 (file)
@@ -9,12 +9,13 @@ import (
        "io"
        "os"
        "regexp"
+       "strings"
        "testing"
 )
 
 func TestReadForm(t *testing.T) {
        testBody := regexp.MustCompile("\n").ReplaceAllString(message, "\r\n")
-       b := bytes.NewBufferString(testBody)
+       b := strings.NewReader(testBody)
        r := NewReader(b, boundary)
        f, err := r.ReadForm(25)
        if err != nil {
index 265499fb00d23a563ba17dca6010a9a6384182e6..ab1eab21bc63f44bcf50a30c74240aa35a4d9c58 100644 (file)
@@ -29,7 +29,7 @@ func drainBody(b io.ReadCloser) (r1, r2 io.ReadCloser, err error) {
        if err = b.Close(); err != nil {
                return nil, nil, err
        }
-       return ioutil.NopCloser(&buf), ioutil.NopCloser(bytes.NewBuffer(buf.Bytes())), nil
+       return ioutil.NopCloser(&buf), ioutil.NopCloser(bytes.NewReader(buf.Bytes())), nil
 }
 
 // dumpConn is a net.Conn which writes to Writer and reads from Reader
index 987a820487d9d4f6c7e85b30d561470b63b83391..a1dbfc39d6be446e802a00cf90ee28c535fd71ba 100644 (file)
@@ -119,7 +119,7 @@ func TestDumpRequest(t *testing.T) {
                        }
                        switch b := tt.Body.(type) {
                        case []byte:
-                               tt.Req.Body = ioutil.NopCloser(bytes.NewBuffer(b))
+                               tt.Req.Body = ioutil.NopCloser(bytes.NewReader(b))
                        case func() io.ReadCloser:
                                tt.Req.Body = b()
                        }
index 0c1e16b8d5eb93de47f610777a55d0c4db638d5c..61542366b3dc4c4efe46d2f479dd224475b74f2d 100644 (file)
@@ -80,7 +80,7 @@ func TestParseFormUnknownContentType(t *testing.T) {
                req := &Request{
                        Method: "POST",
                        Header: Header(test.contentType),
-                       Body:   ioutil.NopCloser(bytes.NewBufferString("body")),
+                       Body:   ioutil.NopCloser(strings.NewReader("body")),
                }
                err := req.ParseForm()
                switch {
@@ -368,7 +368,7 @@ func testMissingFile(t *testing.T, req *Request) {
 }
 
 func newTestMultipartRequest(t *testing.T) *Request {
-       b := bytes.NewBufferString(strings.Replace(message, "\n", "\r\n", -1))
+       b := strings.NewReader(strings.Replace(message, "\n", "\r\n", -1))
        req, err := NewRequest("POST", "/", b)
        if err != nil {
                t.Fatal("NewRequest:", err)
index b27b1f7ce3b7d0915744231d62e4d2d5db32f5df..561eea28e5ab6059eabf34f088c84f9276688ce1 100644 (file)
@@ -427,7 +427,7 @@ func TestRequestWrite(t *testing.T) {
                        }
                        switch b := tt.Body.(type) {
                        case []byte:
-                               tt.Req.Body = ioutil.NopCloser(bytes.NewBuffer(b))
+                               tt.Req.Body = ioutil.NopCloser(bytes.NewReader(b))
                        case func() io.ReadCloser:
                                tt.Req.Body = b()
                        }
index 5c10e2161cfd6efa8681f42947aad9aa2bc84918..4799b4792b34cf410b8726f7cc9b7b04519a2e9b 100644 (file)
@@ -7,6 +7,7 @@ package http
 import (
        "bytes"
        "io/ioutil"
+       "strings"
        "testing"
 )
 
@@ -41,7 +42,7 @@ func TestResponseWrite(t *testing.T) {
                                ProtoMinor:    0,
                                Request:       dummyReq("GET"),
                                Header:        Header{},
-                               Body:          ioutil.NopCloser(bytes.NewBufferString("abcdef")),
+                               Body:          ioutil.NopCloser(strings.NewReader("abcdef")),
                                ContentLength: -1,
                        },
                        "HTTP/1.0 200 OK\r\n" +
@@ -56,7 +57,7 @@ func TestResponseWrite(t *testing.T) {
                                ProtoMinor:       1,
                                Request:          dummyReq("GET"),
                                Header:           Header{},
-                               Body:             ioutil.NopCloser(bytes.NewBufferString("abcdef")),
+                               Body:             ioutil.NopCloser(strings.NewReader("abcdef")),
                                ContentLength:    6,
                                TransferEncoding: []string{"chunked"},
                                Close:            true,
index d76e8167c6ffd6c2e0c927f57d4b77e8df0521fc..82197cac7b395e6ab031883766607fc76cadc038 100644 (file)
@@ -419,7 +419,7 @@ func TestServeMuxHandlerRedirects(t *testing.T) {
 func TestMuxRedirectLeadingSlashes(t *testing.T) {
        paths := []string{"//foo.txt", "///foo.txt", "/../../foo.txt"}
        for _, path := range paths {
-               req, err := ReadRequest(bufio.NewReader(bytes.NewBufferString("GET " + path + " HTTP/1.1\r\nHost: test\r\n\r\n")))
+               req, err := ReadRequest(bufio.NewReader(strings.NewReader("GET " + path + " HTTP/1.1\r\nHost: test\r\n\r\n")))
                if err != nil {
                        t.Errorf("%s", err)
                }
index 4a2bda19facf83d23bf79e51560c100ffc674327..344b1ba2428a92bc873c9766e1874485c424a78f 100644 (file)
@@ -60,7 +60,7 @@ func newTransferWriter(r interface{}) (t *transferWriter, err error) {
                                        // Stich the Body back together again, re-attaching our
                                        // consumed byte.
                                        t.ContentLength = -1
-                                       t.Body = io.MultiReader(bytes.NewBuffer(buf[:]), t.Body)
+                                       t.Body = io.MultiReader(bytes.NewReader(buf[:]), t.Body)
                                } else {
                                        // Body is actually empty.
                                        t.Body = nil
index 4776ae22daba8cfd792be470a4bb8c7d8e4ef4fe..88ef89d82ad2ea37045d4294544652df2ceebe6e 100644 (file)
@@ -44,7 +44,7 @@ func TestRace(t *testing.T) {
        if err != nil {
                t.Fatalf("Failed to run tests: %v\n%v", err, string(testOutput))
        }
-       reader := bufio.NewReader(bytes.NewBuffer(testOutput))
+       reader := bufio.NewReader(bytes.NewReader(testOutput))
 
        funcName := ""
        var tsanLog []string
index 496eed4a31db81b370587f4514efcc755d5172bb..086ab5660eb935fd0d95eeebda6d4fbe678b34f4 100644 (file)
@@ -360,7 +360,7 @@ func TestScanSelectedMask(t *testing.T) {
 func TestScanNext(t *testing.T) {
        const BOM = '\uFEFF'
        BOMs := string(BOM)
-       s := new(Scanner).Init(bytes.NewBufferString(BOMs + "if a == bcd /* com" + BOMs + "ment */ {\n\ta += c\n}" + BOMs + "// line comment ending in eof"))
+       s := new(Scanner).Init(strings.NewReader(BOMs + "if a == bcd /* com" + BOMs + "ment */ {\n\ta += c\n}" + BOMs + "// line comment ending in eof"))
        checkTok(t, s, 1, s.Scan(), Ident, "if") // the first BOM is ignored
        checkTok(t, s, 1, s.Scan(), Ident, "a")
        checkTok(t, s, 1, s.Scan(), '=', "=")
@@ -402,7 +402,7 @@ func TestScanWhitespace(t *testing.T) {
 }
 
 func testError(t *testing.T, src, pos, msg string, tok rune) {
-       s := new(Scanner).Init(bytes.NewBufferString(src))
+       s := new(Scanner).Init(strings.NewReader(src))
        errorCalled := false
        s.Error = func(s *Scanner, m string) {
                if !errorCalled {
@@ -491,13 +491,13 @@ func checkScanPos(t *testing.T, s *Scanner, offset, line, column int, char rune)
 
 func TestPos(t *testing.T) {
        // corner case: empty source
-       s := new(Scanner).Init(bytes.NewBufferString(""))
+       s := new(Scanner).Init(strings.NewReader(""))
        checkPos(t, s.Pos(), Position{Offset: 0, Line: 1, Column: 1})
        s.Peek() // peek doesn't affect the position
        checkPos(t, s.Pos(), Position{Offset: 0, Line: 1, Column: 1})
 
        // corner case: source with only a newline
-       s = new(Scanner).Init(bytes.NewBufferString("\n"))
+       s = new(Scanner).Init(strings.NewReader("\n"))
        checkPos(t, s.Pos(), Position{Offset: 0, Line: 1, Column: 1})
        checkNextPos(t, s, 1, 2, 1, '\n')
        // after EOF position doesn't change
@@ -509,7 +509,7 @@ func TestPos(t *testing.T) {
        }
 
        // corner case: source with only a single character
-       s = new(Scanner).Init(bytes.NewBufferString("本"))
+       s = new(Scanner).Init(strings.NewReader("本"))
        checkPos(t, s.Pos(), Position{Offset: 0, Line: 1, Column: 1})
        checkNextPos(t, s, 3, 1, 2, '本')
        // after EOF position doesn't change
@@ -521,7 +521,7 @@ func TestPos(t *testing.T) {
        }
 
        // positions after calling Next
-       s = new(Scanner).Init(bytes.NewBufferString("  foo६४  \n\n本語\n"))
+       s = new(Scanner).Init(strings.NewReader("  foo६४  \n\n本語\n"))
        checkNextPos(t, s, 1, 1, 2, ' ')
        s.Peek() // peek doesn't affect the position
        checkNextPos(t, s, 2, 1, 3, ' ')
@@ -546,7 +546,7 @@ func TestPos(t *testing.T) {
        }
 
        // positions after calling Scan
-       s = new(Scanner).Init(bytes.NewBufferString("abc\n本語\n\nx"))
+       s = new(Scanner).Init(strings.NewReader("abc\n本語\n\nx"))
        s.Mode = 0
        s.Whitespace = 0
        checkScanPos(t, s, 0, 1, 1, 'a')