37 lines
518 B
Go
37 lines
518 B
Go
package textfmt_test
|
|
|
|
import (
|
|
"errors"
|
|
"io"
|
|
)
|
|
|
|
type failingWriter struct {
|
|
out io.Writer
|
|
failAfter int
|
|
err error
|
|
}
|
|
|
|
func (w *failingWriter) Write(p []byte) (int, error) {
|
|
if w.err != nil {
|
|
return 0, w.err
|
|
}
|
|
|
|
if w.failAfter <= len(p) {
|
|
p = p[:w.failAfter]
|
|
}
|
|
|
|
if len(p) > 0 && w.out != nil {
|
|
if n, err := w.out.Write(p); err != nil {
|
|
w.err = err
|
|
return n, w.err
|
|
}
|
|
}
|
|
|
|
w.failAfter -= len(p)
|
|
if w.failAfter == 0 {
|
|
w.err = errors.New("test write error")
|
|
}
|
|
|
|
return len(p), w.err
|
|
}
|