c55a4ac779
The io/ioutil package has been deprecated in Go 1.16. This commit replaces the existing io/ioutil functions with their new definitions in io and os packages. Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
74 lines
1.3 KiB
Go
74 lines
1.3 KiB
Go
package progress // import "github.com/docker/docker/pkg/progress"
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"testing"
|
|
)
|
|
|
|
func TestOutputOnPrematureClose(t *testing.T) {
|
|
content := []byte("TESTING")
|
|
reader := io.NopCloser(bytes.NewReader(content))
|
|
progressChan := make(chan Progress, 10)
|
|
|
|
pr := NewProgressReader(reader, ChanOutput(progressChan), int64(len(content)), "Test", "Read")
|
|
|
|
part := make([]byte, 4)
|
|
_, err := io.ReadFull(pr, part)
|
|
if err != nil {
|
|
pr.Close()
|
|
t.Fatal(err)
|
|
}
|
|
|
|
drainLoop:
|
|
for {
|
|
select {
|
|
case <-progressChan:
|
|
default:
|
|
break drainLoop
|
|
}
|
|
}
|
|
|
|
pr.Close()
|
|
|
|
select {
|
|
case <-progressChan:
|
|
default:
|
|
t.Fatalf("Expected some output when closing prematurely")
|
|
}
|
|
}
|
|
|
|
func TestCompleteSilently(t *testing.T) {
|
|
content := []byte("TESTING")
|
|
reader := io.NopCloser(bytes.NewReader(content))
|
|
progressChan := make(chan Progress, 10)
|
|
|
|
pr := NewProgressReader(reader, ChanOutput(progressChan), int64(len(content)), "Test", "Read")
|
|
|
|
out, err := io.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))
|
|
}
|
|
|
|
drainLoop:
|
|
for {
|
|
select {
|
|
case <-progressChan:
|
|
default:
|
|
break drainLoop
|
|
}
|
|
}
|
|
|
|
pr.Close()
|
|
|
|
select {
|
|
case <-progressChan:
|
|
t.Fatalf("Should have closed silently when read is complete")
|
|
default:
|
|
}
|
|
}
|