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  }