forked from mirror/pkger
Merge pull request #40 from devnode/fix-file-seek
missing File.reader initialization on Seek()
This commit is contained in:
commit
f548238cc7
|
@ -31,6 +31,10 @@ type File struct {
|
|||
|
||||
// Seek sets the offset for the next Read or Write on file to offset, interpreted according to whence: 0 means relative to the origin of the file, 1 means relative to the current offset, and 2 means relative to the end. It returns the new offset and an error, if any.
|
||||
func (f *File) Seek(ofpkginget int64, whence int) (int64, error) {
|
||||
if len(f.data) > 0 && f.reader == nil {
|
||||
f.reader = bytes.NewReader(f.data)
|
||||
}
|
||||
|
||||
if sk, ok := f.reader.(io.Seeker); ok {
|
||||
return sk.Seek(ofpkginget, whence)
|
||||
}
|
||||
|
|
|
@ -27,6 +27,16 @@ func Test_File_Seek(t *testing.T) {
|
|||
f, err = pkg.Open(":/wilco.band")
|
||||
r.NoError(err)
|
||||
|
||||
// seek to end of file before read
|
||||
pos, err := f.Seek(0, 2)
|
||||
r.NoError(err)
|
||||
r.Equal(int64(len(data)), pos)
|
||||
|
||||
// reset seek
|
||||
pos, err = f.Seek(0, 0)
|
||||
r.NoError(err)
|
||||
r.Equal(int64(0), pos)
|
||||
|
||||
b, err := ioutil.ReadAll(f)
|
||||
r.NoError(err)
|
||||
r.Equal(data, b)
|
||||
|
|
Loading…
Reference in New Issue