]> Sergey Matveev's repositories - btrtrc.git/blob - storage/issue95_test.go
Fixes for storage tests on Windows
[btrtrc.git] / storage / issue95_test.go
1 package storage
2
3 import (
4         "testing"
5
6         "github.com/anacrolix/missinggo/v2/resource"
7         "github.com/stretchr/testify/assert"
8         "github.com/stretchr/testify/require"
9
10         "github.com/anacrolix/torrent/metainfo"
11 )
12
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) {
16         i1 := &metainfo.Info{
17                 Files:  []metainfo.FileInfo{{Path: []string{"a"}}},
18                 Pieces: make([]byte, 20),
19         }
20         t1, err := c.OpenTorrent(i1, metainfo.HashBytes([]byte("a")))
21         require.NoError(t, err)
22         defer t1.Close()
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         defer t2.Close()
30         t2p := t2.Piece(i2.Piece(0))
31         assert.NoError(t, t1.Close())
32         assert.NotPanics(t, func() { t2p.Completion() })
33 }
34
35 func TestIssue95File(t *testing.T) {
36         td := t.TempDir()
37         cs := NewFile(td)
38         defer cs.Close()
39         testIssue95(t, cs)
40 }
41
42 func TestIssue95MMap(t *testing.T) {
43         td := t.TempDir()
44         cs := NewMMap(td)
45         defer cs.Close()
46         testIssue95(t, cs)
47 }
48
49 func TestIssue95ResourcePieces(t *testing.T) {
50         testIssue95(t, NewResourcePieces(resource.OSFileProvider{}))
51 }