From 07adc3a19b288c539903dc126d20998e17137508 Mon Sep 17 00:00:00 2001 From: Máximo Cuadros Date: Sun, 19 Nov 2017 18:56:33 +0100 Subject: format: packfile fix DecodeObjectAt when Decoder has type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Máximo Cuadros --- plumbing/format/packfile/decoder_test.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'plumbing/format/packfile/decoder_test.go') diff --git a/plumbing/format/packfile/decoder_test.go b/plumbing/format/packfile/decoder_test.go index ecf7c81..5d1530c 100644 --- a/plumbing/format/packfile/decoder_test.go +++ b/plumbing/format/packfile/decoder_test.go @@ -293,7 +293,7 @@ func (s *ReaderSuite) TestDecodeCRCs(c *C) { c.Assert(int(sum), Equals, 78022211966) } -func (s *ReaderSuite) TestReadObjectAt(c *C) { +func (s *ReaderSuite) TestDecodeObjectAt(c *C) { f := fixtures.Basic().One() scanner := packfile.NewScanner(f.Packfile()) d, err := packfile.NewDecoder(scanner, nil) @@ -311,6 +311,25 @@ func (s *ReaderSuite) TestReadObjectAt(c *C) { c.Assert(obj.Hash().String(), Equals, "6ecf0ef2c2dffb796033e5a02219af86ec6584e5") } +func (s *ReaderSuite) TestDecodeObjectAtForType(c *C) { + f := fixtures.Basic().One() + scanner := packfile.NewScanner(f.Packfile()) + d, err := packfile.NewDecoderForType(scanner, nil, plumbing.TreeObject) + c.Assert(err, IsNil) + + // when the packfile is ref-delta based, the offsets are required + if f.Is("ref-delta") { + d.SetIndex(getIndexFromIdxFile(f.Idx())) + } + + // the objects at reference 186, is a delta, so should be recall, + // without being read before. + obj, err := d.DecodeObjectAt(186) + c.Assert(err, IsNil) + c.Assert(obj.Type(), Equals, plumbing.CommitObject) + c.Assert(obj.Hash().String(), Equals, "6ecf0ef2c2dffb796033e5a02219af86ec6584e5") +} + func (s *ReaderSuite) TestIndex(c *C) { f := fixtures.Basic().One() scanner := packfile.NewScanner(f.Packfile()) -- cgit