diff options
| author | Martin Garton <garton@gmail.com> | 2017-06-27 18:02:23 +0100 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2017-06-27 19:51:54 +0000 |
| commit | ae238688d2813e83f16050408487ea34ba1c2fff (patch) | |
| tree | d7ce8e857fe000a7639805f65ebf6c0fb2ac254d /src/bufio/bufio_test.go | |
| parent | 81ed9ca1d411f0bd8738ea60b3a8045446ad85fc (diff) | |
| download | go-ae238688d2813e83f16050408487ea34ba1c2fff.tar.xz | |
bufio: make Reader.Peek invalidate Unreads
Since Reader.Peek potentially reads from the underlying io.Reader,
discarding previous buffers, UnreadRune and UnreadByte cannot
necessarily work. Change Peek to invalidate the unread buffers in all
cases (as allowed according to the documentation) and thus prevent
hiding bugs in the caller.
Fixes #18556
Change-Id: I8d836db7ce31c4aaecb4f61c24573b0332bbf30d
Reviewed-on: https://go-review.googlesource.com/46850
Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'src/bufio/bufio_test.go')
| -rw-r--r-- | src/bufio/bufio_test.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/bufio/bufio_test.go b/src/bufio/bufio_test.go index ef0f6c834e..50f571c04f 100644 --- a/src/bufio/bufio_test.go +++ b/src/bufio/bufio_test.go @@ -285,6 +285,24 @@ func TestUnreadRune(t *testing.T) { } } +func TestNoUnreadRuneAfterPeek(t *testing.T) { + br := NewReader(strings.NewReader("example")) + br.ReadRune() + br.Peek(1) + if err := br.UnreadRune(); err == nil { + t.Error("UnreadRune didn't fail after Peek") + } +} + +func TestNoUnreadByteAfterPeek(t *testing.T) { + br := NewReader(strings.NewReader("example")) + br.ReadByte() + br.Peek(1) + if err := br.UnreadByte(); err == nil { + t.Error("UnreadByte didn't fail after Peek") + } +} + func TestUnreadByte(t *testing.T) { segments := []string{"Hello, ", "world"} r := NewReader(&StringReader{data: segments}) |
