Test empty files and zero piece length for both file and mmap storage backends

This commit is contained in:
Matt Joiner 2016-09-12 17:11:32 +10:00
parent b5ed171ac5
commit e1c6892eca
1 changed files with 18 additions and 3 deletions

View File

@ -13,6 +13,7 @@ import (
"github.com/anacrolix/torrent/bencode"
"github.com/anacrolix/torrent/metainfo"
"github.com/anacrolix/torrent/peer_protocol"
"github.com/anacrolix/torrent/storage"
)
func r(i, b, l peer_protocol.Integer) request {
@ -95,13 +96,19 @@ func BenchmarkUpdatePiecePriorities(b *testing.B) {
}
}
func TestEmptyFilesAndZeroPieceLength(t *testing.T) {
// Check that a torrent containing zero-length file(s) will start, and that
// they're created in the filesystem. The client storage is assumed to be
// file-based on the native filesystem based.
func testEmptyFilesAndZeroPieceLength(t *testing.T, cs storage.ClientImpl) {
cfg := TestingConfig
cfg.DefaultStorage = cs
cl, err := NewClient(&TestingConfig)
require.NoError(t, err)
defer cl.Close()
ib, err := bencode.Marshal(metainfo.Info{
Name: "empty",
Length: 0,
Name: "empty",
Length: 0,
PieceLength: 0,
})
require.NoError(t, err)
fp := filepath.Join(TestingConfig.DataDir, "empty")
@ -116,3 +123,11 @@ func TestEmptyFilesAndZeroPieceLength(t *testing.T) {
require.True(t, cl.WaitAll())
assert.True(t, missinggo.FilePathExists(fp))
}
func TestEmptyFilesAndZeroPieceLengthWithFileStorage(t *testing.T) {
testEmptyFilesAndZeroPieceLength(t, storage.NewFile(TestingConfig.DataDir))
}
func TestEmptyFilesAndZeroPieceLengthWithMMapStorage(t *testing.T) {
testEmptyFilesAndZeroPieceLength(t, storage.NewMMap(TestingConfig.DataDir))
}