Handle v2 fetch remote ERR packets · Entire
Handle v2 fetch remote ERR packets
6097620→main·
pjbgf·2mo ago·2 files·+36 added/-0 removed
Changes
2
internal/gitproto
Mfetch.go+6
Mfetch_test.go+30
264 unmodified lines
265
266
267
268
269
270
271
272
273
30 unmodified lines
304
305
306
307
308
309
310
311
312
264 unmodified lines
continue
case PacketData:
line := string(payload)
if strings.HasPrefix(line, "ERR ") {
return errors.New("remote: " + line[4:])
}
switch line {
case "packfile\n":
demux := sideband.NewDemuxer(sideband.Sideband64k, reader.BufReader())
30 unmodified lines
continue
case PacketData:
line := string(payload)
if strings.HasPrefix(line, "ERR ") {
return nil, errors.New("remote: " + line[4:])
}
switch line {
case "packfile\n":
demux := sideband.NewDemuxer(sideband.Sideband64k, reader.BufReader())
Minternal/gitproto/fetch.go+6
781 unmodified lines
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
781 unmodified lines
}
}
func TestStoreV2FetchPackReturnsRemoteError(t *testing.T) {
var wire bytes.Buffer
if _, err := pktline.WriteString(&wire, "ERR upload-pack: not our ref"); err != nil {
t.Fatalf("write remote error: %v", err)
}
err := storeV2FetchPack(memory.NewStorage(), &wire, false)
if err == nil {
t.Fatal("expected remote error")
}
if got, want := err.Error(), "remote: upload-pack: not our ref"; got != want {
t.Fatalf("error = %q, want %q", got, want)
}
}
func TestOpenV2PackStreamReturnsRemoteError(t *testing.T) {
var wire bytes.Buffer
if _, err := pktline.WriteString(&wire, "ERR upload-pack: not our ref"); err != nil {
t.Fatalf("write remote error: %v", err)
}
_, err := openV2PackStream(io.NopCloser(&wire), false)
if err == nil {
t.Fatal("expected remote error")
}
if got, want := err.Error(), "remote: upload-pack: not our ref"; got != want {
t.Fatalf("error = %q, want %q", got, want)
}
}
func TestFetchPackV2ReturnedReaderClosesBodyOnInterruption(t *testing.T) {
ep, err := transport.ParseURL("https://example.com/repo.git")
if err != nil {