Return error during JoinFiles back to the caller for inspection

master
Harshavardhana 10 years ago
parent 8859232f93
commit a8056c4c12
  1. 9
      pkg/utils/split/split.go
  2. 9
      pkg/utils/split/split_test.go

@ -103,11 +103,12 @@ func splitStreamGoRoutine(reader io.Reader, chunkSize uint64, ch chan Message) {
// fmt.Println(buf) // fmt.Println(buf)
// } // }
// //
func JoinFiles(dirname string, inputPrefix string) io.Reader { func JoinFiles(dirname string, inputPrefix string) (io.Reader, error) {
reader, writer := io.Pipe() reader, writer := io.Pipe()
fileInfos, readError := ioutil.ReadDir(dirname) fileInfos, readError := ioutil.ReadDir(dirname)
if readError != nil { if readError != nil {
writer.CloseWithError(readError) writer.CloseWithError(readError)
return nil, readError
} }
var newfileInfos []os.FileInfo var newfileInfos []os.FileInfo
@ -118,11 +119,13 @@ func JoinFiles(dirname string, inputPrefix string) io.Reader {
} }
if len(newfileInfos) == 0 { if len(newfileInfos) == 0 {
writer.CloseWithError(errors.New("no files found for given prefix")) nofilesError := errors.New("no files found for given prefix " + inputPrefix)
writer.CloseWithError(nofilesError)
return nil, nofilesError
} }
go joinFilesGoRoutine(newfileInfos, writer) go joinFilesGoRoutine(newfileInfos, writer)
return reader return reader, nil
} }
func joinFilesGoRoutine(fileInfos []os.FileInfo, writer *io.PipeWriter) { func joinFilesGoRoutine(fileInfos []os.FileInfo, writer *io.PipeWriter) {

@ -60,10 +60,13 @@ func (s *MySuite) TestFileSplitJoin(c *C) {
devnull, err := os.OpenFile(os.DevNull, 2, os.ModeAppend) devnull, err := os.OpenFile(os.DevNull, 2, os.ModeAppend)
defer devnull.Close() defer devnull.Close()
reader := split.JoinFiles(".", "ERROR")
_, err = io.Copy(devnull, reader) var reader io.Reader
reader, err = split.JoinFiles(".", "ERROR")
c.Assert(err, Not(IsNil)) c.Assert(err, Not(IsNil))
reader = split.JoinFiles(".", "TESTPREFIX")
reader, err = split.JoinFiles(".", "TESTPREFIX")
c.Assert(err, IsNil)
_, err = io.Copy(devnull, reader) _, err = io.Copy(devnull, reader)
c.Assert(err, IsNil) c.Assert(err, IsNil)
} }

Loading…
Cancel
Save