Use int64 for the length in the RewindReader

This commit is contained in:
Alexander Neumann 2018-03-04 10:40:42 +01:00
parent 99f7fd74e3
commit 929afc63d5
4 changed files with 21 additions and 21 deletions

View File

@ -119,7 +119,7 @@ func (b *restBackend) Save(ctx context.Context, h restic.Handle, rd restic.Rewin
if err != nil { if err != nil {
return errors.Wrap(err, "NewRequest") return errors.Wrap(err, "NewRequest")
} }
req.Header.Set("Content-Length", strconv.Itoa(rd.Length())) req.Header.Set("Content-Length", strconv.FormatInt(rd.Length(), 10))
req.Header.Set("Content-Type", "application/octet-stream") req.Header.Set("Content-Type", "application/octet-stream")
req.Header.Set("Accept", contentTypeV2) req.Header.Set("Accept", contentTypeV2)

View File

@ -443,7 +443,7 @@ func (s *Suite) TestListCancel(t *testing.T) {
type errorCloser struct { type errorCloser struct {
io.ReadSeeker io.ReadSeeker
l int l int64
t testing.TB t testing.TB
} }
@ -452,7 +452,7 @@ func (ec errorCloser) Close() error {
return errors.New("forbidden method close was called") return errors.New("forbidden method close was called")
} }
func (ec errorCloser) Length() int { func (ec errorCloser) Length() int64 {
return ec.l return ec.l
} }
@ -536,7 +536,7 @@ func (s *Suite) TestSave(t *testing.T) {
// wrap the tempfile in an errorCloser, so we can detect if the backend // wrap the tempfile in an errorCloser, so we can detect if the backend
// closes the reader // closes the reader
err = b.Save(context.TODO(), h, errorCloser{t: t, l: length, ReadSeeker: tmpfile}) err = b.Save(context.TODO(), h, errorCloser{t: t, l: int64(length), ReadSeeker: tmpfile})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -17,13 +17,13 @@ type RewindReader interface {
// Length returns the number of bytes that can be read from the Reader // Length returns the number of bytes that can be read from the Reader
// after calling Rewind. // after calling Rewind.
Length() int Length() int64
} }
// ByteReader implements a RewindReader for a byte slice. // ByteReader implements a RewindReader for a byte slice.
type ByteReader struct { type ByteReader struct {
*bytes.Reader *bytes.Reader
Len int Len int64
} }
// Rewind restarts the reader from the beginning of the data. // Rewind restarts the reader from the beginning of the data.
@ -34,7 +34,7 @@ func (b *ByteReader) Rewind() error {
// Length returns the number of bytes read from the reader after Rewind is // Length returns the number of bytes read from the reader after Rewind is
// called. // called.
func (b *ByteReader) Length() int { func (b *ByteReader) Length() int64 {
return b.Len return b.Len
} }
@ -45,7 +45,7 @@ var _ RewindReader = &ByteReader{}
func NewByteReader(buf []byte) *ByteReader { func NewByteReader(buf []byte) *ByteReader {
return &ByteReader{ return &ByteReader{
Reader: bytes.NewReader(buf), Reader: bytes.NewReader(buf),
Len: len(buf), Len: int64(len(buf)),
} }
} }
@ -55,7 +55,7 @@ var _ RewindReader = &FileReader{}
// FileReader implements a RewindReader for an open file. // FileReader implements a RewindReader for an open file.
type FileReader struct { type FileReader struct {
io.ReadSeeker io.ReadSeeker
Len int Len int64
} }
// Rewind seeks to the beginning of the file. // Rewind seeks to the beginning of the file.
@ -65,7 +65,7 @@ func (f *FileReader) Rewind() error {
} }
// Length returns the length of the file. // Length returns the length of the file.
func (f *FileReader) Length() int { func (f *FileReader) Length() int64 {
return f.Len return f.Len
} }
@ -78,7 +78,7 @@ func NewFileReader(f io.ReadSeeker) (*FileReader, error) {
fr := &FileReader{ fr := &FileReader{
ReadSeeker: f, ReadSeeker: f,
Len: int(pos), Len: pos,
} }
err = fr.Rewind() err = fr.Rewind()

View File

@ -57,15 +57,15 @@ func TestFileReader(t *testing.T) {
} }
func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) { func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) {
seed := time.Now().Unix() seed := time.Now().UnixNano()
t.Logf("seed is %d", seed) t.Logf("seed is %d", seed)
rnd := rand.New(rand.NewSource(seed)) rnd := rand.New(rand.NewSource(seed))
type ReaderTestFunc func(t testing.TB, r RewindReader, data []byte) type ReaderTestFunc func(t testing.TB, r RewindReader, data []byte)
var tests = []ReaderTestFunc{ var tests = []ReaderTestFunc{
func(t testing.TB, rd RewindReader, data []byte) { func(t testing.TB, rd RewindReader, data []byte) {
if rd.Length() != len(data) { if rd.Length() != int64(len(data)) {
t.Fatalf("wrong length returned, want %d, got %d", len(data), rd.Length()) t.Fatalf("wrong length returned, want %d, got %d", int64(len(data)), rd.Length())
} }
buf := make([]byte, len(data)) buf := make([]byte, len(data))
@ -78,8 +78,8 @@ func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) {
t.Fatalf("wrong data returned") t.Fatalf("wrong data returned")
} }
if rd.Length() != len(data) { if rd.Length() != int64(len(data)) {
t.Fatalf("wrong length returned, want %d, got %d", len(data), rd.Length()) t.Fatalf("wrong length returned, want %d, got %d", int64(len(data)), rd.Length())
} }
err = rd.Rewind() err = rd.Rewind()
@ -87,11 +87,11 @@ func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) {
t.Fatal(err) t.Fatal(err)
} }
if rd.Length() != len(data) { if rd.Length() != int64(len(data)) {
t.Fatalf("wrong length returned, want %d, got %d", len(data), rd.Length()) t.Fatalf("wrong length returned, want %d, got %d", int64(len(data)), rd.Length())
} }
buf2 := make([]byte, len(data)) buf2 := make([]byte, int64(len(data)))
_, err = io.ReadFull(rd, buf2) _, err = io.ReadFull(rd, buf2)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -101,8 +101,8 @@ func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) {
t.Fatalf("wrong data returned") t.Fatalf("wrong data returned")
} }
if rd.Length() != len(data) { if rd.Length() != int64(len(data)) {
t.Fatalf("wrong length returned, want %d, got %d", len(data), rd.Length()) t.Fatalf("wrong length returned, want %d, got %d", int64(len(data)), rd.Length())
} }
}, },
func(t testing.TB, rd RewindReader, data []byte) { func(t testing.TB, rd RewindReader, data []byte) {