]> Sergey Matveev's repositories - btrtrc.git/blob - storage/issue95_test.go
Switch to goimports import sorting
[btrtrc.git] / storage / issue95_test.go
1 package storage
2
3 import (
4         "io/ioutil"
5         "os"
6         "testing"
7
8         "github.com/anacrolix/missinggo/resource"
9         "github.com/anacrolix/torrent/metainfo"
10         "github.com/stretchr/testify/assert"
11         "github.com/stretchr/testify/require"
12 )
13
14 // Two different torrents opened from the same storage. Closing one should not
15 // break the piece completion on the other.
16 func testIssue95(t *testing.T, c ClientImpl) {
17         i1 := &metainfo.Info{
18                 Files:  []metainfo.FileInfo{{Path: []string{"a"}}},
19                 Pieces: make([]byte, 20),
20         }
21         t1, err := c.OpenTorrent(i1, metainfo.HashBytes([]byte("a")))
22         require.NoError(t, err)
23         i2 := &metainfo.Info{
24                 Files:  []metainfo.FileInfo{{Path: []string{"a"}}},
25                 Pieces: make([]byte, 20),
26         }
27         t2, err := c.OpenTorrent(i2, metainfo.HashBytes([]byte("b")))
28         require.NoError(t, err)
29         t2p := t2.Piece(i2.Piece(0))
30         assert.NoError(t, t1.Close())
31         assert.NotPanics(t, func() { t2p.Completion() })
32 }
33
34 func TestIssue95File(t *testing.T) {
35         td, err := ioutil.TempDir("", "")
36         require.NoError(t, err)
37         defer os.RemoveAll(td)
38         testIssue95(t, NewFile(td))
39 }
40
41 func TestIssue95MMap(t *testing.T) {
42         td, err := ioutil.TempDir("", "")
43         require.NoError(t, err)
44         defer os.RemoveAll(td)
45         testIssue95(t, NewMMap(td))
46 }
47
48 func TestIssue95ResourcePieces(t *testing.T) {
49         td, err := ioutil.TempDir("", "")
50         require.NoError(t, err)
51         defer os.RemoveAll(td)
52         testIssue95(t, NewResourcePieces(resource.OSFileProvider{}))
53 }