6 "github.com/anacrolix/missinggo/v2/resource"
7 "github.com/stretchr/testify/assert"
8 "github.com/stretchr/testify/require"
10 "github.com/anacrolix/torrent/metainfo"
13 // Two different torrents opened from the same storage. Closing one should not
14 // break the piece completion on the other.
15 func testIssue95(t *testing.T, c ClientImpl) {
17 Files: []metainfo.FileInfo{{Path: []string{"a"}}},
18 Pieces: make([]byte, 20),
20 t1, err := c.OpenTorrent(i1, metainfo.HashBytes([]byte("a")))
21 require.NoError(t, err)
23 Files: []metainfo.FileInfo{{Path: []string{"a"}}},
24 Pieces: make([]byte, 20),
26 t2, err := c.OpenTorrent(i2, metainfo.HashBytes([]byte("b")))
27 require.NoError(t, err)
28 t2p := t2.Piece(i2.Piece(0))
29 assert.NoError(t, t1.Close())
30 assert.NotPanics(t, func() { t2p.Completion() })
33 func TestIssue95File(t *testing.T) {
35 testIssue95(t, NewFile(td))
38 func TestIssue95MMap(t *testing.T) {
40 testIssue95(t, NewMMap(td))
43 func TestIssue95ResourcePieces(t *testing.T) {
44 testIssue95(t, NewResourcePieces(resource.OSFileProvider{}))