2
0
mirror of synced 2025-02-23 22:28:11 +00:00
torrent/storage/issue95_test.go
Eng Zer Jun 841a702e34
test: use T.TempDir to create temporary test directory (#718)
The directory created by `T.TempDir` is automatically removed when the
test and all its subtests complete.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2022-02-02 18:26:46 +11:00

46 lines
1.1 KiB
Go

package storage
import (
"testing"
"github.com/anacrolix/missinggo/v2/resource"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/anacrolix/torrent/metainfo"
)
// Two different torrents opened from the same storage. Closing one should not
// break the piece completion on the other.
func testIssue95(t *testing.T, c ClientImpl) {
i1 := &metainfo.Info{
Files: []metainfo.FileInfo{{Path: []string{"a"}}},
Pieces: make([]byte, 20),
}
t1, err := c.OpenTorrent(i1, metainfo.HashBytes([]byte("a")))
require.NoError(t, err)
i2 := &metainfo.Info{
Files: []metainfo.FileInfo{{Path: []string{"a"}}},
Pieces: make([]byte, 20),
}
t2, err := c.OpenTorrent(i2, metainfo.HashBytes([]byte("b")))
require.NoError(t, err)
t2p := t2.Piece(i2.Piece(0))
assert.NoError(t, t1.Close())
assert.NotPanics(t, func() { t2p.Completion() })
}
func TestIssue95File(t *testing.T) {
td := t.TempDir()
testIssue95(t, NewFile(td))
}
func TestIssue95MMap(t *testing.T) {
td := t.TempDir()
testIssue95(t, NewMMap(td))
}
func TestIssue95ResourcePieces(t *testing.T) {
testIssue95(t, NewResourcePieces(resource.OSFileProvider{}))
}