diff options
Diffstat (limited to 'plumbing/transport/server')
-rw-r--r-- | plumbing/transport/server/receive_pack_test.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/plumbing/transport/server/receive_pack_test.go b/plumbing/transport/server/receive_pack_test.go index de072f3..2c5b0ae 100644 --- a/plumbing/transport/server/receive_pack_test.go +++ b/plumbing/transport/server/receive_pack_test.go @@ -1,8 +1,13 @@ package server_test import ( + "context" + + "github.com/go-git/go-git/v5/plumbing" + "github.com/go-git/go-git/v5/plumbing/protocol/packp" "github.com/go-git/go-git/v5/plumbing/transport" + fixtures "github.com/go-git/go-git-fixtures/v4" . "gopkg.in/check.v1" ) @@ -31,3 +36,28 @@ func (s *ReceivePackSuite) TestAdvertisedReferencesNotExists(c *C) { c.Assert(err, Equals, transport.ErrRepositoryNotFound) c.Assert(r, IsNil) } + +func (s *ReceivePackSuite) TestReceivePackWithNilPackfile(c *C) { + endpoint := s.Endpoint + auth := s.EmptyAuth + + fixture := fixtures.Basic().ByTag("packfile").One() + req := packp.NewReferenceUpdateRequest() + req.Commands = []*packp.Command{ + {Name: "refs/heads/newbranch", Old: plumbing.NewHash(fixture.Head), New: plumbing.ZeroHash}, + } + // default is already nil, but be explicit since this is what the test is for + req.Packfile = nil + + comment := Commentf( + "failed with ep=%s fixture=%s", + endpoint.String(), fixture.URL, + ) + + r, err := s.Client.NewReceivePackSession(endpoint, auth) + c.Assert(err, IsNil, comment) + defer func() { c.Assert(r.Close(), IsNil, comment) }() + + report, err := r.ReceivePack(context.Background(), req) + c.Assert(report, IsNil, comment) +} |