aboutsummaryrefslogtreecommitdiff
path: root/refs_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'refs_test.go')
-rw-r--r--refs_test.go40
1 files changed, 37 insertions, 3 deletions
diff --git a/refs_test.go b/refs_test.go
index f79bccc9..396b15d8 100644
--- a/refs_test.go
+++ b/refs_test.go
@@ -333,7 +333,7 @@ func TestListRefsLooseOverridesPacked(t *testing.T) {
if _, exists := got[r.Name]; exists {
t.Fatalf("duplicate ref %q in results", r.Name)
}
- got[r.Name] = r.Ref
+ got[r.Name] = r
}
mainRef, ok := got["refs/heads/main"]
@@ -392,8 +392,8 @@ func TestListRefsPatternFiltering(t *testing.T) {
if refs[0].Name != "refs/heads/feature" {
t.Fatalf("unexpected ref name: got %q, want %q", refs[0].Name, "refs/heads/feature")
}
- if refs[0].Ref.Kind != RefKindDetached || refs[0].Ref.Hash != hash1 {
- t.Fatalf("refs/heads/feature hash: got %s (kind %v), want %s", refs[0].Ref.Hash, refs[0].Ref.Kind, hash1)
+ if refs[0].Kind != RefKindDetached || refs[0].Hash != hash1 {
+ t.Fatalf("refs/heads/feature hash: got %s (kind %v), want %s", refs[0].Hash, refs[0].Kind, hash1)
}
}
@@ -484,3 +484,37 @@ func TestListRefsPackedPatterns(t *testing.T) {
})
}
}
+
+func TestRefShort(t *testing.T) {
+ t.Run("unambiguous", func(t *testing.T) {
+ ref := Ref{Name: "refs/heads/main"}
+ short := ref.Short([]Ref{ref}, false)
+ if short != "main" {
+ t.Fatalf("expected short name %q, got %q", "main", short)
+ }
+ })
+
+ t.Run("ambiguous", func(t *testing.T) {
+ ref := Ref{Name: "refs/heads/main"}
+ tags := Ref{Name: "refs/tags/main"}
+ short := ref.Short([]Ref{ref, tags}, false)
+ if short != "heads/main" {
+ t.Fatalf("expected ambiguous ref to shorten to %q, got %q", "heads/main", short)
+ }
+ })
+
+ t.Run("strict", func(t *testing.T) {
+ ref := Ref{Name: "refs/heads/main"}
+ remoteHead := Ref{Name: "refs/remotes/main/HEAD"}
+
+ shortNonStrict := ref.Short([]Ref{ref, remoteHead}, false)
+ if shortNonStrict != "main" {
+ t.Fatalf("expected non-strict short name %q, got %q", "main", shortNonStrict)
+ }
+
+ shortStrict := ref.Short([]Ref{ref, remoteHead}, true)
+ if shortStrict != "heads/main" {
+ t.Fatalf("expected strict ambiguity to shorten to %q, got %q", "heads/main", shortStrict)
+ }
+ })
+}