2016-03-28 17:38:30 +08:00
|
|
|
package storage
|
2016-03-26 15:30:30 +08:00
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"io"
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
"testing"
|
|
|
|
|
2016-03-28 17:38:30 +08:00
|
|
|
"github.com/anacrolix/missinggo"
|
2016-03-26 15:30:30 +08:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
|
|
|
"github.com/anacrolix/torrent/metainfo"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestShortFile(t *testing.T) {
|
|
|
|
td, err := ioutil.TempDir("", "")
|
|
|
|
require.NoError(t, err)
|
|
|
|
defer os.RemoveAll(td)
|
2016-03-28 19:40:29 +08:00
|
|
|
s := NewFile(td)
|
2016-03-28 18:57:04 +08:00
|
|
|
info := &metainfo.InfoEx{
|
|
|
|
Info: metainfo.Info{
|
|
|
|
Name: "a",
|
|
|
|
Length: 2,
|
|
|
|
PieceLength: missinggo.MiB,
|
|
|
|
},
|
2016-03-28 17:38:30 +08:00
|
|
|
}
|
2016-03-28 19:40:29 +08:00
|
|
|
ts, err := s.OpenTorrent(info)
|
|
|
|
assert.NoError(t, err)
|
2016-03-26 15:30:30 +08:00
|
|
|
f, err := os.Create(filepath.Join(td, "a"))
|
|
|
|
err = f.Truncate(1)
|
|
|
|
f.Close()
|
|
|
|
var buf bytes.Buffer
|
2016-03-28 17:38:30 +08:00
|
|
|
p := info.Piece(0)
|
2016-03-28 19:40:29 +08:00
|
|
|
n, err := io.Copy(&buf, io.NewSectionReader(ts.Piece(p), 0, p.Length()))
|
2016-03-26 15:30:30 +08:00
|
|
|
assert.EqualValues(t, 1, n)
|
|
|
|
assert.Equal(t, io.ErrUnexpectedEOF, err)
|
|
|
|
}
|