diff options
| author | 2025-11-20 08:00:00 +0800 | |
|---|---|---|
| committer | 2025-11-20 08:00:00 +0800 | |
| commit | b85af63ba50d34785b77633bf8db123d619e1db4 (patch) | |
| tree | b861120decb6e655de0756a38c30a95445f5198d /repo_current_test.go | |
| parent | README: 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.go | 42 |
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) } |
