From e1c6892ecab2a9688e17bf23b1a520e1f71723dc Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Mon, 12 Sep 2016 17:11:32 +1000 Subject: [PATCH] Test empty files and zero piece length for both file and mmap storage backends --- torrent_test.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/torrent_test.go b/torrent_test.go index f841e7f3..0cf213ad 100644 --- a/torrent_test.go +++ b/torrent_test.go @@ -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)) +} -- 2.50.0