Skip unborn ls-refs entries · Entire
Skip unborn ls-refs entries
5d07f05→main·
pjbgf·2mo ago·2 files·+26 added/-0 removed
Changes
2
internal/gitproto
Mfetch_test.go+23
Mrefs.go+3
264 unmodified lines
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
264 unmodified lines
}\n}
func TestDecodeV2LSRefsSkipsUnbornLines(t *testing.T) {
wire := "" +
FormatPktLine("unborn HEAD symref-target:refs/heads/main\n") +
FormatPktLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa refs/heads/main\n") +
"0000"
refs, head, err := decodeV2LSRefs(bytes.NewReader([]byte(wire)))
if err != nil {
t.Fatalf("decodeV2LSRefs: %v", err)
}
if len(refs) != 1 {
t.Fatalf("expected 1 ref, got %d", len(refs))
}
if refs[0].Name().String() != refsHeadsMain {
t.Errorf("refs[0].Name() = %q, want refs/heads/main", refs[0].Name())
}
if refs[0].Hash().IsZero() {
t.Fatal("unborn line was decoded as a zero-hash ref")
}
if head != "" {
t.Errorf("head target = %q, want empty", head)
}
}
func TestDecodeV2LSRefsMalformed(t *testing.T) {
// Line with only one field (no refname).
wire := FormatPktLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n") + "0000"
Minternal/gitproto/fetch_test.go+23
179 unmodified lines
180
181
182
183
184
185
186
187
188
179 unmodified lines
if len(fields) < 2 {
return nil, "", fmt.Errorf("malformed ls-refs response line %q", payload)
}
if fields[0] == "unborn" {
continue
}
hash := plumbing.NewHash(fields[0])
name := plumbing.ReferenceName(fields[1])
if name == plumbing.HEAD {
Minternal/gitproto/refs.go+3