Skip to content

Commit 026923a

Browse files
committed
net/textproto:add test case
1 parent c724099 commit 026923a

File tree

2 files changed

+46
-5
lines changed

2 files changed

+46
-5
lines changed

src/net/textproto/reader.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,6 @@ func (r *Reader) readContinuedLineSlice(validateFirstLine func([]byte) error) ([
160160
for {
161161
n, err := r.skipSpace()
162162
if n == 0 || err != nil {
163-
// If function reads something, it ignores io.EOF.
164-
if err == io.EOF && len(r.buf) > 0 {
165-
err = nil
166-
}
167163
return r.buf, err
168164
}
169165
line, err := r.readLineSlice()

src/net/textproto/reader_test.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestReadContinuedLine(t *testing.T) {
4646
t.Fatalf("Line 2: %s, %v", s, err)
4747
}
4848
s, err = r.ReadContinuedLine()
49-
if s != "line3" || err != nil {
49+
if s != "line3" {
5050
t.Fatalf("Line 3: %s, %v", s, err)
5151
}
5252
s, err = r.ReadContinuedLine()
@@ -225,6 +225,51 @@ func TestReadMIMEHeaderTrimContinued(t *testing.T) {
225225
}
226226
}
227227

228+
type autoRewind struct {
229+
buf string
230+
r io.Reader
231+
}
232+
233+
func (r *autoRewind) Read(p []byte) (int, error) {
234+
if r.r == nil {
235+
r.r = strings.NewReader(r.buf)
236+
}
237+
238+
n, err := r.r.Read(p)
239+
if err == io.EOF {
240+
// rewind
241+
r.r = strings.NewReader(r.buf)
242+
}
243+
244+
return n, err
245+
}
246+
247+
func TestReadMimeHeaderRewind(t *testing.T) {
248+
// Improper message, expect EOF as error
249+
r := &autoRewind{
250+
buf: "From: Gopher <[email protected]>\n" +
251+
"To: Another Gopher <[email protected]>\n",
252+
}
253+
254+
tp := NewReader(bufio.NewReader(r))
255+
_, err := tp.ReadMIMEHeader()
256+
if err != io.EOF {
257+
t.Fatalf("ReadMIMEHeaderRewind mismatch.\n got: %v\nwant: EOF", err)
258+
}
259+
260+
// Proper message, expect nil as err
261+
r = &autoRewind{
262+
buf: "From: Gopher <[email protected]>\r\n" +
263+
"To: Another Gopher <[email protected]>\r\n" +
264+
"\r\n",
265+
}
266+
tp = NewReader(bufio.NewReader(r))
267+
_, err = tp.ReadMIMEHeader()
268+
if err != nil {
269+
t.Fatalf("ReadMIMEHeaderRewind mismatch.\n got: %v\nwant: nil", err)
270+
}
271+
}
272+
228273
type readResponseTest struct {
229274
in string
230275
inCode int

0 commit comments

Comments
 (0)