Skip to content

Commit 8921a7d

Browse files
committed
Close input pipe after First() is done
1 parent b942596 commit 8921a7d

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

filters.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ func (p *Pipe) First(lines int) *Pipe {
154154
output.WriteString(scanner.Text())
155155
output.WriteRune('\n')
156156
}
157+
p.Close()
157158
err := scanner.Err()
158159
if err != nil {
159160
p.SetError(err)

filters_test.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,23 +226,30 @@ func TestFirst(t *testing.T) {
226226
if err != nil {
227227
t.Fatal(err)
228228
}
229-
got, err := File("testdata/first.input.txt").First(10).Bytes()
229+
input := File("testdata/first.input.txt")
230+
got, err := input.First(10).Bytes()
230231
if err != nil {
231232
t.Error(err)
232233
}
233234
if !bytes.Equal(got, want) {
234235
t.Errorf("want %q, got %q", want, got)
235236
}
236-
// First(0) should return zero lines
237-
zero := File("testdata/first.input.txt").First(0)
238-
gotZero, err := zero.CountLines()
237+
_, err = ioutil.ReadAll(input.Reader)
238+
if err == nil {
239+
t.Error("input not closed after reading")
240+
}
241+
input = File("testdata/first.input.txt")
242+
gotZero, err := input.First(0).CountLines()
239243
if err != nil {
240244
t.Fatal(err)
241245
}
242246
if gotZero != 0 {
243247
t.Errorf("want 0 lines, got %d lines", gotZero)
244248
}
245-
// First(N) where the input has less than N lines, should just return the input.
249+
_, err = ioutil.ReadAll(input.Reader)
250+
if err == nil {
251+
t.Error("input not closed after reading")
252+
}
246253
want, err = File("testdata/first.input.txt").Bytes()
247254
if err != nil {
248255
t.Fatal(err)

0 commit comments

Comments
 (0)