import (
"io"
- "io/ioutil"
"os"
"path"
"path/filepath"
+ "strings"
"testing"
- "github.com/anacrolix/missinggo"
+ "github.com/anacrolix/missinggo/v2"
+ qt "github.com/frankban/quicktest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
PieceLength: _case.PieceLength,
}
err := info.GeneratePieces(func(fi FileInfo) (io.ReadCloser, error) {
- return ioutil.NopCloser(missinggo.ZeroReader), nil
+ return io.NopCloser(missinggo.ZeroReader), nil
})
assert.NoError(t, err)
assert.EqualValues(t, _case.NumPieces, info.NumPieces())
}
func TestBuildFromFilePathOrder(t *testing.T) {
- td, err := ioutil.TempDir("", "anacrolix")
- require.NoError(t, err)
- defer os.RemoveAll(td)
+ td := t.TempDir()
require.NoError(t, touchFile(filepath.Join(td, "b")))
require.NoError(t, touchFile(filepath.Join(td, "a")))
info := Info{
mi, err := LoadFromFile("testdata/SKODAOCTAVIA336x280_archive.torrent")
require.NoError(t, err)
assert.Len(t, mi.UrlList, 3)
+ qt.Assert(t, mi.Magnet(nil, nil).String(), qt.ContentEquals,
+ strings.Join([]string{
+ "magnet:?xt=urn:btih:d4b197dff199aad447a9a352e31528adbbd97922",
+ "tr=http%3A%2F%2Fbt1.archive.org%3A6969%2Fannounce",
+ "tr=http%3A%2F%2Fbt2.archive.org%3A6969%2Fannounce",
+ "ws=https%3A%2F%2Farchive.org%2Fdownload%2F",
+ "ws=http%3A%2F%2Fia601600.us.archive.org%2F26%2Fitems%2F",
+ "ws=http%3A%2F%2Fia801600.us.archive.org%2F26%2Fitems%2F",
+ }, "&"))
}
func TestMetainfoWithStringURLList(t *testing.T) {
mi, err := LoadFromFile("testdata/flat-url-list.torrent")
require.NoError(t, err)
assert.Len(t, mi.UrlList, 1)
+ qt.Assert(t, mi.Magnet(nil, nil).String(), qt.ContentEquals,
+ strings.Join([]string{
+ "magnet:?xt=urn:btih:9da24e606e4ed9c7b91c1772fb5bf98f82bd9687",
+ "tr=http%3A%2F%2Fbt1.archive.org%3A6969%2Fannounce",
+ "tr=http%3A%2F%2Fbt2.archive.org%3A6969%2Fannounce",
+ "ws=https%3A%2F%2Farchive.org%2Fdownload%2F",
+ }, "&"))
}
// https://github.com/anacrolix/torrent/issues/247
var mi MetaInfo
assert.NoError(t, bencode.Unmarshal([]byte("d13:creation date23:29.03.2018 22:18:14 UTC4:infodee"), &mi))
}
+
+// See https://github.com/anacrolix/torrent/issues/843.
+func TestUnmarshalEmptyStringNodes(t *testing.T) {
+ var mi MetaInfo
+ c := qt.New(t)
+ err := bencode.Unmarshal([]byte("d5:nodes0:e"), &mi)
+ c.Assert(err, qt.IsNil)
+}