Refactoring and first steps to make multi OS compatible.
- Using cgofuse to be compatible with multiple OSes - Refactor to make possible better testing - Add a bunch of tests - Add code coverage Signed-off-by: Antonio Navarro Perez <antnavper@gmail.com>
This commit is contained in:
parent
89af681694
commit
45f10e2f81
27 changed files with 1291 additions and 440 deletions
|
@ -20,7 +20,7 @@ type DiskTeeReader struct {
|
|||
tr io.Reader
|
||||
}
|
||||
|
||||
func NewDiskTeeReader(r io.Reader) (*DiskTeeReader, error) {
|
||||
func NewDiskTeeReader(r io.Reader) (Reader, error) {
|
||||
fr, err := ioutil.TempFile("", "dtb_tmp")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
|
@ -11,6 +11,8 @@ import (
|
|||
var testData []byte = []byte("Hello World")
|
||||
|
||||
func TestReadData(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
require := require.New(t)
|
||||
|
||||
br := bytes.NewReader(testData)
|
||||
|
@ -31,6 +33,8 @@ func TestReadData(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestReadDataEOF(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
require := require.New(t)
|
||||
|
||||
br := bytes.NewReader(testData)
|
||||
|
|
9
iio/reader.go
Normal file
9
iio/reader.go
Normal file
|
@ -0,0 +1,9 @@
|
|||
package iio
|
||||
|
||||
import "io"
|
||||
|
||||
type Reader interface {
|
||||
io.ReaderAt
|
||||
io.Closer
|
||||
io.Reader
|
||||
}
|
22
iio/utils.go
22
iio/utils.go
|
@ -1,22 +0,0 @@
|
|||
package iio
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func CloseIfCloseable(r interface{}) error {
|
||||
log.Debug("closing file...")
|
||||
if r == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
closer, ok := r.(io.Closer)
|
||||
if !ok {
|
||||
log.Debug("file is not implementing close method")
|
||||
return nil
|
||||
}
|
||||
|
||||
return closer.Close()
|
||||
}
|
|
@ -10,9 +10,10 @@ type readAtWrapper struct {
|
|||
|
||||
io.ReadSeeker
|
||||
io.ReaderAt
|
||||
io.Closer
|
||||
}
|
||||
|
||||
func NewReadAtWrapper(r io.ReadSeeker) io.ReaderAt {
|
||||
func NewReadAtWrapper(r io.ReadSeeker) Reader {
|
||||
return &readAtWrapper{ReadSeeker: r}
|
||||
}
|
||||
|
||||
|
@ -26,3 +27,12 @@ func (rw *readAtWrapper) ReadAt(p []byte, off int64) (int, error) {
|
|||
|
||||
return rw.Read(p)
|
||||
}
|
||||
|
||||
func (rw *readAtWrapper) Close() error {
|
||||
c, ok := rw.ReadSeeker.(io.Closer)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
|
||||
return c.Close()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue