Skip to content

Commit

Permalink
add tests
Browse files Browse the repository at this point in the history
Signed-off-by: Andrew Thornton <art27@cantab.net>
  • Loading branch information
zeripath committed Jun 2, 2021
1 parent fa47367 commit 22550b6
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 3 deletions.
51 changes: 51 additions & 0 deletions plumbing/format/packfile/delta_test.go
@@ -1,8 +1,11 @@
package packfile

import (
"bytes"
"io/ioutil"
"math/rand"

"github.com/go-git/go-git/v5/plumbing"
. "gopkg.in/check.v1"
)

Expand Down Expand Up @@ -97,6 +100,32 @@ func (s *DeltaSuite) TestAddDelta(c *C) {
}
}

func (s *DeltaSuite) TestAddDeltaReader(c *C) {
for _, t := range s.testCases {
baseBuf := genBytes(t.base)
baseObj := &plumbing.MemoryObject{}
baseObj.Write(baseBuf)

targetBuf := genBytes(t.target)

delta := DiffDelta(baseBuf, targetBuf)
deltaRC := ioutil.NopCloser(bytes.NewReader(delta))

c.Log("Executing test case:", t.description)

resultRC, err := ReaderFromDelta(baseObj, deltaRC)
c.Assert(err, IsNil)

result, err := ioutil.ReadAll(resultRC)
c.Assert(err, IsNil)

err = resultRC.Close()
c.Assert(err, IsNil)

c.Assert(result, DeepEquals, targetBuf)
}
}

func (s *DeltaSuite) TestIncompleteDelta(c *C) {
for _, t := range s.testCases {
c.Log("Incomplete delta on:", t.description)
Expand Down Expand Up @@ -125,3 +154,25 @@ func (s *DeltaSuite) TestMaxCopySizeDelta(c *C) {
c.Assert(err, IsNil)
c.Assert(result, DeepEquals, targetBuf)
}

func (s *DeltaSuite) TestMaxCopySizeDeltaReader(c *C) {
baseBuf := randBytes(maxCopySize)
baseObj := &plumbing.MemoryObject{}
baseObj.Write(baseBuf)

targetBuf := baseBuf[0:]
targetBuf = append(targetBuf, byte(1))

delta := DiffDelta(baseBuf, targetBuf)
deltaRC := ioutil.NopCloser(bytes.NewReader(delta))

resultRC, err := ReaderFromDelta(baseObj, deltaRC)
c.Assert(err, IsNil)

result, err := ioutil.ReadAll(resultRC)
c.Assert(err, IsNil)

err = resultRC.Close()
c.Assert(err, IsNil)
c.Assert(result, DeepEquals, targetBuf)
}
4 changes: 2 additions & 2 deletions plumbing/format/packfile/packfile.go
Expand Up @@ -397,7 +397,7 @@ func (p *Packfile) readREFDeltaObjectContent(h *ObjectHeader, deltaRC io.Reader)
}
}

return ReaderFromDelta(h, base, deltaRC)
return ReaderFromDelta(base, deltaRC)
}

func (p *Packfile) fillREFDeltaObjectContentWithBuffer(obj plumbing.EncodedObject, ref plumbing.Hash, buf *bytes.Buffer) error {
Expand Down Expand Up @@ -441,7 +441,7 @@ func (p *Packfile) readOFSDeltaObjectContent(h *ObjectHeader, deltaRC io.Reader)
return nil, err
}

return ReaderFromDelta(h, base, deltaRC)
return ReaderFromDelta(base, deltaRC)
}

func (p *Packfile) fillOFSDeltaObjectContentWithBuffer(obj plumbing.EncodedObject, offset int64, buf *bytes.Buffer) error {
Expand Down
2 changes: 1 addition & 1 deletion plumbing/format/packfile/patch_delta.go
Expand Up @@ -75,7 +75,7 @@ func PatchDelta(src, delta []byte) ([]byte, error) {
return b.Bytes(), nil
}

func ReaderFromDelta(h *ObjectHeader, base plumbing.EncodedObject, deltaRC io.Reader) (io.ReadCloser, error) {
func ReaderFromDelta(base plumbing.EncodedObject, deltaRC io.Reader) (io.ReadCloser, error) {
deltaBuf := bufio.NewReaderSize(deltaRC, 1024)
srcSz, err := decodeLEB128ByteReader(deltaBuf)
if err != nil {
Expand Down

0 comments on commit 22550b6

Please sign in to comment.