git-lfs/git/odb/pack/set_test.go

79 lines
1.7 KiB
Go

package pack
import (
"bytes"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestSetOpenOpensAPackedObject(t *testing.T) {
const sha = "decafdecafdecafdecafdecafdecafdecafdecaf"
const data = "Hello, world!\n"
compressed, _ := compress(data)
set := NewSetPacks(&Packfile{
idx: IndexWith(map[string]uint32{
sha: 0,
}),
r: bytes.NewReader(append([]byte{0x3e}, compressed...)),
})
o, err := set.Object(DecodeHex(t, sha))
assert.NoError(t, err)
assert.Equal(t, TypeBlob, o.Type())
unpacked, err := o.Unpack()
assert.NoError(t, err)
assert.Equal(t, []byte(data), unpacked)
}
func TestSetOpenOpensPackedObjectsInPackOrder(t *testing.T) {
p1 := &Packfile{
Objects: 1,
idx: IndexWith(map[string]uint32{
"aa00000000000000000000000000000000000000": 1,
}),
r: bytes.NewReader(nil),
}
p2 := &Packfile{
Objects: 2,
idx: IndexWith(map[string]uint32{
"aa11111111111111111111111111111111111111": 1,
"aa22222222222222222222222222222222222222": 2,
}),
r: bytes.NewReader(nil),
}
p3 := &Packfile{
Objects: 3,
idx: IndexWith(map[string]uint32{
"aa33333333333333333333333333333333333333": 3,
"aa44444444444444444444444444444444444444": 4,
"aa55555555555555555555555555555555555555": 5,
}),
r: bytes.NewReader(nil),
}
set := NewSetPacks(p1, p2, p3)
var visited []*Packfile
set.each(
DecodeHex(t, "aa55555555555555555555555555555555555555"),
func(p *Packfile) (*Object, error) {
visited = append(visited, p)
return nil, errNotFound
},
)
require.Len(t, visited, 3)
assert.EqualValues(t, visited[0].Objects, 3)
assert.EqualValues(t, visited[1].Objects, 2)
assert.EqualValues(t, visited[2].Objects, 1)
}