1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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)
}
|