"math/rand"
"strings"
+ "github.com/anacrolix/torrent/internal/testutil"
"github.com/anacrolix/torrent/metainfo"
"github.com/anacrolix/torrent/storage"
)
}
func (p badStoragePiece) randomlyTruncatedDataString() string {
- return "hello, world\n"[:rand.Intn(14)]
+ return testutil.GreetingFileContents[:rand.Intn(14)]
}
func (p badStoragePiece) ReadAt(b []byte, off int64) (n int, err error) {
"path/filepath"
"reflect"
"testing"
+ "testing/iotest"
"time"
"github.com/bradfitz/iter"
+ "github.com/frankban/quicktest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
assert.True(t, new)
r := tt.NewReader()
defer r.Close()
- b, err = ioutil.ReadAll(r)
- assert.Len(t, b, 13)
- assert.NoError(t, err)
+ quicktest.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), quicktest.IsNil)
}
func BenchmarkAddLargeTorrent(b *testing.B) {
assert.Equal(t, alreadyCompleted, psrs[0].Complete)
if alreadyCompleted {
r := tt.NewReader()
- b, err := ioutil.ReadAll(r)
- assert.NoError(t, err)
- assert.EqualValues(t, testutil.GreetingFileContents, b)
+ quicktest.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), quicktest.IsNil)
}
}
defer r.opMu.Unlock()
n, err = r.readOnceAt(b, r.pos, &ctxErr)
if n == 0 {
- if err == nil {
+ if err == nil && len(b) > 0 {
panic("expected error")
} else {
return
err = errors.New("downloading disabled and data not already available")
return
}
- if !wait {
+ if !wait || wanted == 0 {
return
}
r.waitReadable(pos)
import (
"errors"
"io"
- "io/ioutil"
"os"
"sync"
"testing"
+ "testing/iotest"
"github.com/anacrolix/log"
pp "github.com/anacrolix/torrent/peer_protocol"
// We don't seem to need to seek, but that's probably just because the storage failure is
// happening on the first read.
r.Seek(0, io.SeekStart)
- output, err := ioutil.ReadAll(r)
- if err != nil {
+ if err := iotest.TestReader(r, []byte(testutil.GreetingFileContents)); err != nil {
t.Logf("got error while reading: %v", err)
return true
}
- assert.EqualValues(t, testutil.GreetingFileContents, output)
return false
}() {
}
"path/filepath"
"sync"
"testing"
+ "testing/iotest"
"time"
"github.com/anacrolix/missinggo/v2/filecache"
"github.com/anacrolix/torrent/internal/testutil"
"github.com/anacrolix/torrent/storage"
sqliteStorage "github.com/anacrolix/torrent/storage/sqlite"
+ "github.com/frankban/quicktest"
"golang.org/x/time/rate"
"github.com/stretchr/testify/assert"
pos, err := r.Seek(0, io.SeekStart)
assert.NoError(t, err)
assert.EqualValues(t, 0, pos)
- _greeting, err := ioutil.ReadAll(r)
- assert.NoError(t, err)
- assert.EqualValues(t, testutil.GreetingFileContents, string(_greeting))
+ quicktest.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), quicktest.IsNil)
}
// Creates a seeder and a leecher, and ensures the data transfers when a read
defer wg.Done()
r := llg.NewReader()
defer r.Close()
- b, err := ioutil.ReadAll(r)
- require.NoError(t, err)
- assert.EqualValues(t, testutil.GreetingFileContents, b)
+ quicktest.Check(t, iotest.TestReader(r, []byte(testutil.GreetingFileContents)), quicktest.IsNil)
}()
done := make(chan struct{})
defer close(done)
import (
"fmt"
+ "io"
"net"
"os"
"path/filepath"
for range iter.N(7) {
r := t.NewReader()
r.SetReadahead(32 << 20)
- r.Seek(3500000, 0)
+ r.Seek(3500000, io.SeekStart)
}
assert.Len(b, t.readers, 7)
for i := 0; i < int(t.numPieces()); i += 3 {