aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/protocol/packp/updreq_encode_test.go
diff options
context:
space:
mode:
authorSantiago M. Mola <santi@mola.io>2016-12-05 11:59:49 +0100
committerMáximo Cuadros <mcuadros@gmail.com>2016-12-05 11:59:49 +0100
commit0042bb031676a20ffc789f94e332a6da70e2756d (patch)
tree22a142575c6f12894b4faec73807b57afc287529 /plumbing/protocol/packp/updreq_encode_test.go
parent19f59e782b92d32cc430619c77053c764a3180f9 (diff)
downloadgo-git-0042bb031676a20ffc789f94e332a6da70e2756d.tar.gz
protocol/packp: add reference update request encoder. (#147)
* add ReferenceUpdateRequest struct. * add ReferenceUpdateRequest decoder. * add ReferenceUpdateRequest encoder.
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)
+}