8 "github.com/anacrolix/missinggo/v2/resource"
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
12 "github.com/anacrolix/torrent/metainfo"
15 // Two different torrents opened from the same storage. Closing one should not
16 // break the piece completion on the other.
17 func testIssue95(t *testing.T, c ClientImpl) {
19 Files: []metainfo.FileInfo{{Path: []string{"a"}}},
20 Pieces: make([]byte, 20),
22 t1, err := c.OpenTorrent(i1, metainfo.HashBytes([]byte("a")))
23 require.NoError(t, err)
25 Files: []metainfo.FileInfo{{Path: []string{"a"}}},
26 Pieces: make([]byte, 20),
28 t2, err := c.OpenTorrent(i2, metainfo.HashBytes([]byte("b")))
29 require.NoError(t, err)
30 t2p := t2.Piece(i2.Piece(0))
31 assert.NoError(t, t1.Close())
32 assert.NotPanics(t, func() { t2p.Completion() })
35 func TestIssue95File(t *testing.T) {
36 td, err := ioutil.TempDir("", "")
37 require.NoError(t, err)
38 defer os.RemoveAll(td)
39 testIssue95(t, NewFile(td))
42 func TestIssue95MMap(t *testing.T) {
43 td, err := ioutil.TempDir("", "")
44 require.NoError(t, err)
45 defer os.RemoveAll(td)
46 testIssue95(t, NewMMap(td))
49 func TestIssue95ResourcePieces(t *testing.T) {
50 td, err := ioutil.TempDir("", "")
51 require.NoError(t, err)
52 defer os.RemoveAll(td)
53 testIssue95(t, NewResourcePieces(resource.OSFileProvider{}))