12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package progressreader
- import (
- "bufio"
- "bytes"
- "io"
- "io/ioutil"
- "testing"
- "github.com/docker/docker/pkg/streamformatter"
- )
- func TestOutputOnPrematureClose(t *testing.T) {
- var outBuf bytes.Buffer
- content := []byte("TESTING")
- reader := ioutil.NopCloser(bytes.NewReader(content))
- writer := bufio.NewWriter(&outBuf)
- prCfg := Config{
- In: reader,
- Out: writer,
- Formatter: streamformatter.NewStreamFormatter(),
- Size: len(content),
- NewLines: true,
- ID: "Test",
- Action: "Read",
- }
- pr := New(prCfg)
- part := make([]byte, 4, 4)
- _, err := io.ReadFull(pr, part)
- if err != nil {
- pr.Close()
- t.Fatal(err)
- }
- if err := writer.Flush(); err != nil {
- pr.Close()
- t.Fatal(err)
- }
- tlen := outBuf.Len()
- pr.Close()
- if err := writer.Flush(); err != nil {
- t.Fatal(err)
- }
- if outBuf.Len() == tlen {
- t.Fatalf("Expected some output when closing prematurely")
- }
- }
- func TestCompleteSilently(t *testing.T) {
- var outBuf bytes.Buffer
- content := []byte("TESTING")
- reader := ioutil.NopCloser(bytes.NewReader(content))
- writer := bufio.NewWriter(&outBuf)
- prCfg := Config{
- In: reader,
- Out: writer,
- Formatter: streamformatter.NewStreamFormatter(),
- Size: len(content),
- NewLines: true,
- ID: "Test",
- Action: "Read",
- }
- pr := New(prCfg)
- out, err := ioutil.ReadAll(pr)
- if err != nil {
- pr.Close()
- t.Fatal(err)
- }
- if string(out) != "TESTING" {
- pr.Close()
- t.Fatalf("Unexpected output %q from reader", string(out))
- }
- if err := writer.Flush(); err != nil {
- pr.Close()
- t.Fatal(err)
- }
- tlen := outBuf.Len()
- pr.Close()
- if err := writer.Flush(); err != nil {
- t.Fatal(err)
- }
- if outBuf.Len() > tlen {
- t.Fatalf("Should have closed silently when read is complete")
- }
- }
|