aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/protocol/packp/updreq_encode_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plumbing/protocol/packp/updreq_encode_test.go')
-rw-r--r--plumbing/protocol/packp/updreq_encode_test.go119
1 files changed, 119 insertions, 0 deletions
diff --git a/plumbing/protocol/packp/updreq_encode_test.go b/plumbing/protocol/packp/updreq_encode_test.go
new file mode 100644
index 0000000..47958fd
--- /dev/null
+++ b/plumbing/protocol/packp/updreq_encode_test.go
@@ -0,0 +1,119 @@
+package packp
+
+import (
+ "bytes"
+
+ "gopkg.in/src-d/go-git.v4/plumbing"
+ "gopkg.in/src-d/go-git.v4/plumbing/format/pktline"
+
+ . "gopkg.in/check.v1"
+)
+
+type UpdReqEncodeSuite struct{}
+
+var _ = Suite(&UpdReqEncodeSuite{})
+
+func (s *UpdReqEncodeSuite) testEncode(c *C, input *ReferenceUpdateRequest,
+ expected []byte) {
+
+ var buf bytes.Buffer
+ c.Assert(input.Encode(&buf), IsNil)
+ obtained := buf.Bytes()
+
+ comment := Commentf("\nobtained = %s\nexpected = %s\n", string(obtained), string(expected))
+ c.Assert(obtained, DeepEquals, expected, comment)
+}
+
+func (s *UpdReqEncodeSuite) TestZeroValue(c *C) {
+ r := &ReferenceUpdateRequest{}
+ var buf bytes.Buffer
+ c.Assert(r.Encode(&buf), Equals, ErrEmptyCommands)
+
+ r = NewReferenceUpdateRequest()
+ c.Assert(r.Encode(&buf), Equals, ErrEmptyCommands)
+}
+
+func (s *UpdReqEncodeSuite) TestOneUpdateCommand(c *C) {
+ hash1 := plumbing.NewHash("1ecf0ef2c2dffb796033e5a02219af86ec6584e5")
+ hash2 := plumbing.NewHash("2ecf0ef2c2dffb796033e5a02219af86ec6584e5")
+ name := "myref"
+
+ r := NewReferenceUpdateRequest()
+ r.Commands = []*Command{
+ {Name: name, Old: hash1, New: hash2},
+ }
+
+ expected := pktlines(c,
+ "1ecf0ef2c2dffb796033e5a02219af86ec6584e5 2ecf0ef2c2dffb796033e5a02219af86ec6584e5 myref\x00",
+ pktline.FlushString,
+ )
+
+ s.testEncode(c, r, expected)
+}
+
+func (s *UpdReqEncodeSuite) TestMultipleCommands(c *C) {
+ hash1 := plumbing.NewHash("1ecf0ef2c2dffb796033e5a02219af86ec6584e5")
+ hash2 := plumbing.NewHash("2ecf0ef2c2dffb796033e5a02219af86ec6584e5")
+
+ r := NewReferenceUpdateRequest()
+ r.Commands = []*Command{
+ {Name: "myref1", Old: hash1, New: hash2},
+ {Name: "myref2", Old: plumbing.ZeroHash, New: hash2},
+ {Name: "myref3", Old: hash1, New: plumbing.ZeroHash},
+ }
+
+ expected := pktlines(c,
+ "1ecf0ef2c2dffb796033e5a02219af86ec6584e5 2ecf0ef2c2dffb796033e5a02219af86ec6584e5 myref1\x00",
+ "0000000000000000000000000000000000000000 2ecf0ef2c2dffb796033e5a02219af86ec6584e5 myref2",
+ "1ecf0ef2c2dffb796033e5a02219af86ec6584e5 0000000000000000000000000000000000000000 myref3",
+ pktline.FlushString,
+ )
+
+ s.testEncode(c, r, expected)
+}
+
+func (s *UpdReqEncodeSuite) TestMultipleCommandsAndCapabilities(c *C) {
+ hash1 := plumbing.NewHash("1ecf0ef2c2dffb796033e5a02219af86ec6584e5")
+ hash2 := plumbing.NewHash("2ecf0ef2c2dffb796033e5a02219af86ec6584e5")
+
+ r := NewReferenceUpdateRequest()
+ r.Commands = []*Command{
+ {Name: "myref1", Old: hash1, New: hash2},
+ {Name: "myref2", Old: plumbing.ZeroHash, New: hash2},
+ {Name: "myref3", Old: hash1, New: plumbing.ZeroHash},
+ }
+ r.Capabilities.Add("shallow")
+
+ expected := pktlines(c,
+ "1ecf0ef2c2dffb796033e5a02219af86ec6584e5 2ecf0ef2c2dffb796033e5a02219af86ec6584e5 myref1\x00shallow",
+ "0000000000000000000000000000000000000000 2ecf0ef2c2dffb796033e5a02219af86ec6584e5 myref2",
+ "1ecf0ef2c2dffb796033e5a02219af86ec6584e5 0000000000000000000000000000000000000000 myref3",
+ pktline.FlushString,
+ )
+
+ s.testEncode(c, r, expected)
+}
+
+func (s *UpdReqEncodeSuite) TestMultipleCommandsAndCapabilitiesShallow(c *C) {
+ hash1 := plumbing.NewHash("1ecf0ef2c2dffb796033e5a02219af86ec6584e5")
+ hash2 := plumbing.NewHash("2ecf0ef2c2dffb796033e5a02219af86ec6584e5")
+
+ r := NewReferenceUpdateRequest()
+ r.Commands = []*Command{
+ {Name: "myref1", Old: hash1, New: hash2},
+ {Name: "myref2", Old: plumbing.ZeroHash, New: hash2},
+ {Name: "myref3", Old: hash1, New: plumbing.ZeroHash},
+ }
+ r.Capabilities.Add("shallow")
+ r.Shallow = &hash1
+
+ expected := pktlines(c,
+ "shallow 1ecf0ef2c2dffb796033e5a02219af86ec6584e5",
+ "1ecf0ef2c2dffb796033e5a02219af86ec6584e5 2ecf0ef2c2dffb796033e5a02219af86ec6584e5 myref1\x00shallow",
+ "0000000000000000000000000000000000000000 2ecf0ef2c2dffb796033e5a02219af86ec6584e5 myref2",
+ "1ecf0ef2c2dffb796033e5a02219af86ec6584e5 0000000000000000000000000000000000000000 myref3",
+ pktline.FlushString,
+ )
+
+ s.testEncode(c, r, expected)
+}