internal/helper/helper_test.go1.8 KB · Go
Raw
 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())
	}
}