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
|
package helper
import (
"bytes"
"strings"
"testing"
"github.com/npfaro/dumbforge/internal/publish"
)
func TestParsePushes(t *testing.T) {
updates, err := parsePushes([]string{
"+refs/heads/local:refs/heads/main",
":refs/heads/old",
})
if err != nil {
t.Fatal(err)
}
if len(updates) != 2 {
t.Fatalf("got %d updates", len(updates))
}
if !updates[0].Force || updates[0].Src != "refs/heads/local" || updates[0].Dst != "refs/heads/main" {
t.Fatalf("unexpected forced update %#v", updates[0])
}
if updates[1].Src != "" || updates[1].Dst != "refs/heads/old" {
t.Fatalf("unexpected deletion %#v", updates[1])
}
}
func TestParsePushesRejectsMissingDestination(t *testing.T) {
if _, err := parsePushes([]string{"refs/heads/main"}); err == nil {
t.Fatal("expected an error")
}
}
func TestPushRefListDoesNotAdvertiseSymbolicHead(t *testing.T) {
metadata := publish.Metadata{
Head: "refs/heads/hUGETracker",
Refs: map[string]publish.Ref{
"refs/heads/hUGETracker": {OID: "aa259a4936b9b539131abf51cdc8486829d2bab4"},
},
}
var output bytes.Buffer
writeRefList(&output, metadata, false)
if strings.Contains(output.String(), " HEAD\n") {
t.Fatalf("push advertisement included symbolic HEAD:\n%s", output.String())
}
if !strings.Contains(output.String(), " refs/heads/hUGETracker\n") {
t.Fatalf("push advertisement omitted branch:\n%s", output.String())
}
}
func TestFetchRefListAdvertisesSymbolicHead(t *testing.T) {
metadata := publish.Metadata{
Head: "refs/heads/hUGETracker",
Refs: map[string]publish.Ref{
"refs/heads/hUGETracker": {OID: "aa259a4936b9b539131abf51cdc8486829d2bab4"},
},
}
var output bytes.Buffer
writeRefList(&output, metadata, true)
if !strings.Contains(output.String(), "@refs/heads/hUGETracker HEAD\n") {
t.Fatalf("fetch advertisement omitted symbolic HEAD:\n%s", output.String())
}
}
|