From: Matt Joiner Date: Mon, 12 Sep 2016 07:11:32 +0000 (+1000) Subject: Test empty files and zero piece length for both file and mmap storage backends X-Git-Tag: v1.0.0~587 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=e1c6892ecab2a9688e17bf23b1a520e1f71723dc;p=btrtrc.git Test empty files and zero piece length for both file and mmap storage backends --- 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)) +}