github.com/stffabi/git-lfs@v2.3.5-0.20180214015214-8eeaa8d88902+incompatible/git/odb/pack/index_decode_test.go (about) 1 package pack 2 3 import ( 4 "bytes" 5 "encoding/binary" 6 "io" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestDecodeIndexV1InvalidFanout(t *testing.T) { 13 idx, err := DecodeIndex(bytes.NewReader(make([]byte, indexFanoutWidth-1))) 14 15 assert.Equal(t, ErrShortFanout, err) 16 assert.Nil(t, idx) 17 } 18 19 func TestDecodeIndexV2(t *testing.T) { 20 buf := make([]byte, 0, indexV2Width+indexFanoutWidth) 21 buf = append(buf, 0xff, 0x74, 0x4f, 0x63) 22 buf = append(buf, 0x0, 0x0, 0x0, 0x2) 23 for i := 0; i < indexFanoutEntries; i++ { 24 x := make([]byte, 4) 25 26 binary.BigEndian.PutUint32(x, uint32(3)) 27 28 buf = append(buf, x...) 29 } 30 31 idx, err := DecodeIndex(bytes.NewReader(buf)) 32 33 assert.NoError(t, err) 34 assert.EqualValues(t, 3, idx.Count()) 35 } 36 37 func TestDecodeIndexV2InvalidFanout(t *testing.T) { 38 buf := make([]byte, 0, indexV2Width+indexFanoutWidth-indexFanoutEntryWidth) 39 buf = append(buf, 0xff, 0x74, 0x4f, 0x63) 40 buf = append(buf, 0x0, 0x0, 0x0, 0x2) 41 buf = append(buf, make([]byte, indexFanoutWidth-1)...) 42 43 idx, err := DecodeIndex(bytes.NewReader(buf)) 44 45 assert.Nil(t, idx) 46 assert.Equal(t, ErrShortFanout, err) 47 } 48 49 func TestDecodeIndexV1(t *testing.T) { 50 idx, err := DecodeIndex(bytes.NewReader(make([]byte, indexFanoutWidth))) 51 52 assert.NoError(t, err) 53 assert.EqualValues(t, 0, idx.Count()) 54 } 55 56 func TestDecodeIndexUnsupportedVersion(t *testing.T) { 57 buf := make([]byte, 0, 4+4) 58 buf = append(buf, 0xff, 0x74, 0x4f, 0x63) 59 buf = append(buf, 0x0, 0x0, 0x0, 0x3) 60 61 idx, err := DecodeIndex(bytes.NewReader(buf)) 62 63 assert.EqualError(t, err, "git/odb/pack: unsupported version: 3") 64 assert.Nil(t, idx) 65 } 66 67 func TestDecodeIndexEmptyContents(t *testing.T) { 68 idx, err := DecodeIndex(bytes.NewReader(make([]byte, 0))) 69 70 assert.Equal(t, io.EOF, err) 71 assert.Nil(t, idx) 72 }