github.com/pmorton/docker@v1.5.0/pkg/ioutils/readers_test.go (about) 1 package ioutils 2 3 import ( 4 "bytes" 5 "io" 6 "io/ioutil" 7 "testing" 8 ) 9 10 func TestBufReader(t *testing.T) { 11 reader, writer := io.Pipe() 12 bufreader := NewBufReader(reader) 13 14 // Write everything down to a Pipe 15 // Usually, a pipe should block but because of the buffered reader, 16 // the writes will go through 17 done := make(chan bool) 18 go func() { 19 writer.Write([]byte("hello world")) 20 writer.Close() 21 done <- true 22 }() 23 24 // Drain the reader *after* everything has been written, just to verify 25 // it is indeed buffering 26 <-done 27 output, err := ioutil.ReadAll(bufreader) 28 if err != nil { 29 t.Fatal(err) 30 } 31 if !bytes.Equal(output, []byte("hello world")) { 32 t.Error(string(output)) 33 } 34 }