| package test |
| |
| import ( |
| "io" |
| ) |
| |
| type writerWithHook struct { |
| actualWriter io.Writer |
| hook func([]byte) |
| } |
| |
| func (w *writerWithHook) Write(p []byte) (n int, err error) { |
| defer w.hook(p) |
| return w.actualWriter.Write(p) |
| } |
| |
| var _ io.Writer = (*writerWithHook)(nil) |
| |
| // NewWriterWithHook returns a io.Writer that still |
| // writes to the actualWriter but also calls the hook function |
| // after every write. It is useful to use this function when |
| // you need to wait for a writer to complete writing inside a test. |
| func NewWriterWithHook(actualWriter io.Writer, hook func([]byte)) *writerWithHook { |
| return &writerWithHook{actualWriter: actualWriter, hook: hook} |
| } |