Commit 9a12a9c5 authored by Ryan Slade's avatar Ryan Slade Committed by Russ Cox

encoding/csv: add Error method to Writer

Fixed issue 3931

R=bradfitz, rsc
CC=golang-dev
https://golang.org/cl/6923049
parent c6944573
...@@ -92,10 +92,17 @@ func (w *Writer) Write(record []string) (err error) { ...@@ -92,10 +92,17 @@ func (w *Writer) Write(record []string) (err error) {
} }
// Flush writes any buffered data to the underlying io.Writer. // Flush writes any buffered data to the underlying io.Writer.
// To check if an error occured during the Flush, call Error.
func (w *Writer) Flush() { func (w *Writer) Flush() {
w.w.Flush() w.w.Flush()
} }
// Error reports any error that has occurred during a previous Write or Flush.
func (w *Writer) Error() error {
_, err := w.w.Write(nil)
return err
}
// WriteAll writes multiple CSV records to w using Write and then calls Flush. // WriteAll writes multiple CSV records to w using Write and then calls Flush.
func (w *Writer) WriteAll(records [][]string) (err error) { func (w *Writer) WriteAll(records [][]string) (err error) {
for _, record := range records { for _, record := range records {
......
...@@ -6,6 +6,7 @@ package csv ...@@ -6,6 +6,7 @@ package csv
import ( import (
"bytes" "bytes"
"errors"
"testing" "testing"
) )
...@@ -42,3 +43,30 @@ func TestWrite(t *testing.T) { ...@@ -42,3 +43,30 @@ func TestWrite(t *testing.T) {
} }
} }
} }
type errorWriter struct{}
func (e errorWriter) Write(b []byte) (int, error) {
return 0, errors.New("Test")
}
func TestError(t *testing.T) {
b := &bytes.Buffer{}
f := NewWriter(b)
f.Write([]string{"abc"})
f.Flush()
err := f.Error()
if err != nil {
t.Errorf("Unexpected error: %s\n", err)
}
f = NewWriter(errorWriter{})
f.Write([]string{"abc"})
f.Flush()
err = f.Error()
if err == nil {
t.Error("Error should not be nil")
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment