@@ -46,7 +46,7 @@ func TestReadContinuedLine(t *testing.T) {
46
46
t .Fatalf ("Line 2: %s, %v" , s , err )
47
47
}
48
48
s , err = r .ReadContinuedLine ()
49
- if s != "line3" || err != nil {
49
+ if s != "line3" {
50
50
t .Fatalf ("Line 3: %s, %v" , s , err )
51
51
}
52
52
s , err = r .ReadContinuedLine ()
@@ -225,6 +225,51 @@ func TestReadMIMEHeaderTrimContinued(t *testing.T) {
225
225
}
226
226
}
227
227
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\n want: 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\n want: nil" , err )
270
+ }
271
+ }
272
+
228
273
type readResponseTest struct {
229
274
in string
230
275
inCode int
0 commit comments