From 929afc63d5333950970ddbe8455f6ce97cc4d58a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 4 Mar 2018 10:40:42 +0100 Subject: [PATCH] Use int64 for the length in the RewindReader --- internal/backend/rest/rest.go | 2 +- internal/backend/test/tests.go | 6 +++--- internal/restic/rewind_reader.go | 14 +++++++------- internal/restic/rewind_reader_test.go | 20 ++++++++++---------- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/internal/backend/rest/rest.go b/internal/backend/rest/rest.go index 58a8b83d8..24b177a98 100644 --- a/internal/backend/rest/rest.go +++ b/internal/backend/rest/rest.go @@ -119,7 +119,7 @@ func (b *restBackend) Save(ctx context.Context, h restic.Handle, rd restic.Rewin if err != nil { 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("Accept", contentTypeV2) diff --git a/internal/backend/test/tests.go b/internal/backend/test/tests.go index c1127103d..caf0a9ac7 100644 --- a/internal/backend/test/tests.go +++ b/internal/backend/test/tests.go @@ -443,7 +443,7 @@ func (s *Suite) TestListCancel(t *testing.T) { type errorCloser struct { io.ReadSeeker - l int + l int64 t testing.TB } @@ -452,7 +452,7 @@ func (ec errorCloser) Close() error { return errors.New("forbidden method close was called") } -func (ec errorCloser) Length() int { +func (ec errorCloser) Length() int64 { 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 // 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 { t.Fatal(err) } diff --git a/internal/restic/rewind_reader.go b/internal/restic/rewind_reader.go index aa851d99f..acbb29678 100644 --- a/internal/restic/rewind_reader.go +++ b/internal/restic/rewind_reader.go @@ -17,13 +17,13 @@ type RewindReader interface { // Length returns the number of bytes that can be read from the Reader // after calling Rewind. - Length() int + Length() int64 } // ByteReader implements a RewindReader for a byte slice. type ByteReader struct { *bytes.Reader - Len int + Len int64 } // 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 // called. -func (b *ByteReader) Length() int { +func (b *ByteReader) Length() int64 { return b.Len } @@ -45,7 +45,7 @@ var _ RewindReader = &ByteReader{} func NewByteReader(buf []byte) *ByteReader { return &ByteReader{ 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. type FileReader struct { io.ReadSeeker - Len int + Len int64 } // Rewind seeks to the beginning of the file. @@ -65,7 +65,7 @@ func (f *FileReader) Rewind() error { } // Length returns the length of the file. -func (f *FileReader) Length() int { +func (f *FileReader) Length() int64 { return f.Len } @@ -78,7 +78,7 @@ func NewFileReader(f io.ReadSeeker) (*FileReader, error) { fr := &FileReader{ ReadSeeker: f, - Len: int(pos), + Len: pos, } err = fr.Rewind() diff --git a/internal/restic/rewind_reader_test.go b/internal/restic/rewind_reader_test.go index c3c6001f8..53f0a4424 100644 --- a/internal/restic/rewind_reader_test.go +++ b/internal/restic/rewind_reader_test.go @@ -57,15 +57,15 @@ func TestFileReader(t *testing.T) { } func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) { - seed := time.Now().Unix() + seed := time.Now().UnixNano() t.Logf("seed is %d", seed) rnd := rand.New(rand.NewSource(seed)) type ReaderTestFunc func(t testing.TB, r RewindReader, data []byte) var tests = []ReaderTestFunc{ func(t testing.TB, rd RewindReader, data []byte) { - if rd.Length() != len(data) { - t.Fatalf("wrong length returned, want %d, got %d", len(data), rd.Length()) + if rd.Length() != int64(len(data)) { + t.Fatalf("wrong length returned, want %d, got %d", int64(len(data)), rd.Length()) } buf := make([]byte, len(data)) @@ -78,8 +78,8 @@ func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) { t.Fatalf("wrong data returned") } - if rd.Length() != len(data) { - t.Fatalf("wrong length returned, want %d, got %d", len(data), rd.Length()) + if rd.Length() != int64(len(data)) { + t.Fatalf("wrong length returned, want %d, got %d", int64(len(data)), rd.Length()) } err = rd.Rewind() @@ -87,11 +87,11 @@ func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) { t.Fatal(err) } - if rd.Length() != len(data) { - t.Fatalf("wrong length returned, want %d, got %d", len(data), rd.Length()) + if rd.Length() != int64(len(data)) { + 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) if err != nil { t.Fatal(err) @@ -101,8 +101,8 @@ func testRewindReader(t *testing.T, fn func() RewindReader, data []byte) { t.Fatalf("wrong data returned") } - if rd.Length() != len(data) { - t.Fatalf("wrong length returned, want %d, got %d", len(data), rd.Length()) + if rd.Length() != int64(len(data)) { + t.Fatalf("wrong length returned, want %d, got %d", int64(len(data)), rd.Length()) } }, func(t testing.TB, rd RewindReader, data []byte) {