@@ -137,6 +137,39 @@ func TestPeekingReader(t *testing.T) {
137137 require .Equal (t , 1 , cbr .peeks )
138138 require .Equal (t , 2 , cbr .reads )
139139 require .Equal (t , 0 , cbr .br .Buffered ())
140+
141+ t .Run ("closing a closed peekingReader" , func (t * testing.T ) {
142+ const content = "content"
143+ r := newPeekingReader (io .NopCloser (strings .NewReader (content )))
144+ require .NoError (t , r .Close ())
145+
146+ require .NotPanics (t , func () {
147+ err := r .Close ()
148+ require .Error (t , err )
149+ })
150+ })
151+
152+ t .Run ("reading from a closed peekingReader" , func (t * testing.T ) {
153+ const content = "content"
154+ r := newPeekingReader (io .NopCloser (strings .NewReader (content )))
155+ require .NoError (t , r .Close ())
156+
157+ require .NotPanics (t , func () {
158+ _ , err := io .ReadAll (r )
159+ require .Error (t , err )
160+ require .ErrorIs (t , err , io .ErrUnexpectedEOF )
161+ })
162+ })
163+
164+ t .Run ("reading from a nil peekingReader" , func (t * testing.T ) {
165+ var r * peekingReader
166+ require .NotPanics (t , func () {
167+ buf := make ([]byte , 10 )
168+ _ , err := r .Read (buf )
169+ require .Error (t , err )
170+ require .ErrorIs (t , err , io .EOF )
171+ })
172+ })
140173}
141174
142175func TestJSONRequest (t * testing.T ) {
0 commit comments