aboutsummaryrefslogtreecommitdiff
path: root/repo_current_test.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2025-11-20 08:00:00 +0800
committerGravatar Runxi Yu2025-11-20 08:00:00 +0800
commitb85af63ba50d34785b77633bf8db123d619e1db4 (patch)
treeb861120decb6e655de0756a38c30a95445f5198d /repo_current_test.go
parentREADME: no more zlib branch (diff)
refs: ResolveRef and ResolveRefFully, no HEAD split
Diffstat (limited to 'repo_current_test.go')
-rw-r--r--repo_current_test.go42
1 files changed, 17 insertions, 25 deletions
diff --git a/repo_current_test.go b/repo_current_test.go
index f5699916..ed530385 100644
--- a/repo_current_test.go
+++ b/repo_current_test.go
@@ -16,36 +16,23 @@ func TestCurrentRepoDepthFirstEnumeration(t *testing.T) {
if err != nil {
t.Skipf("failed to open current .git directory: %v", err)
}
- defer func() { _ = repo.Close() }()
+ defer repo.Close()
- headRef, err := repo.ResolveHead()
+ headHash, err := repo.ResolveRefFully("HEAD")
if err != nil {
t.Fatalf("failed to resolve HEAD: %v", err)
}
- var headHash Hash
-
- switch headRef.Kind {
- case HeadKindDetached:
- headHash = headRef.Hash
- case HeadKindSymbolic:
- headHash, err = repo.ResolveRef(headRef.Ref)
- if err != nil {
- t.Fatalf("failed to resolve symbolic HEAD ref %v: %v", headRef, err)
- }
- default:
- t.Fatalf("unexpected HEAD ref kind: %v", headRef.Kind)
- }
-
visited := make(map[Hash]bool)
- var visitQueue []Hash
- visitQueue = append(visitQueue, headHash)
+ var queue []Hash
+ queue = append(queue, headHash)
objectsRead := 0
errors := 0
- for len(visitQueue) > 0 {
- hash := visitQueue[0]
- visitQueue = visitQueue[1:]
+
+ for len(queue) > 0 {
+ hash := queue[0]
+ queue = queue[1:]
if visited[hash] {
continue
@@ -65,15 +52,19 @@ func TestCurrentRepoDepthFirstEnumeration(t *testing.T) {
switch o := obj.(type) {
case *StoredCommit:
- visitQueue = append(visitQueue, o.Tree)
- visitQueue = append(visitQueue, o.Parents...)
+ queue = append(queue, o.Tree)
+ queue = append(queue, o.Parents...)
+
case *StoredTree:
for _, entry := range o.Entries {
- visitQueue = append(visitQueue, entry.ID)
+ queue = append(queue, entry.ID)
}
+
case *StoredTag:
- visitQueue = append(visitQueue, o.Target)
+ queue = append(queue, o.Target)
+
case *StoredBlob:
+
default:
t.Errorf("unexpected object type: %T", o)
}
@@ -84,6 +75,7 @@ func TestCurrentRepoDepthFirstEnumeration(t *testing.T) {
}
t.Logf("Read %d objects from current repository HEAD (%d errors)", objectsRead, errors)
+
if errors > 0 {
t.Fatalf("encountered %d errors during enumeration", errors)
}