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()) } }