diff options
| author | lhchavez <[email protected]> | 2021-09-30 09:24:49 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-09-30 09:24:49 -0700 |
| commit | 9b155184fe1f0f0258730bccd2759ac7ec39be2a (patch) | |
| tree | b750693d723a888f7f283fc42ddb9c17ca41a348 /tree_test.go | |
| parent | c6da3b97a8a2c7bbbed4496f50c990a1aab4f7bf (diff) | |
Allow skipping an entry expansion in `tree.Walk()` (#838)
It is now possible to skip expanding an entry in `tree.Walk()` by
returning `TreeWalkSkip`, in addition to stopping altogether by
returning a non-nil error.
Fixes: #837
Diffstat (limited to 'tree_test.go')
| -rw-r--r-- | tree_test.go | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/tree_test.go b/tree_test.go index f5b6822..0c0c004 100644 --- a/tree_test.go +++ b/tree_test.go @@ -1,6 +1,9 @@ package git -import "testing" +import ( + "errors" + "testing" +) func TestTreeEntryById(t *testing.T) { t.Parallel() @@ -63,3 +66,72 @@ func TestTreeBuilderInsert(t *testing.T) { t.Fatalf("got oid %v, want %v", entry.Id, blobId) } } + +func TestTreeWalk(t *testing.T) { + t.Parallel() + repo, err := OpenRepository("testdata/TestGitRepository.git") + checkFatal(t, err) + treeID, err := NewOid("6020a3b8d5d636e549ccbd0c53e2764684bb3125") + checkFatal(t, err) + + tree, err := repo.LookupTree(treeID) + checkFatal(t, err) + + var callCount int + err = tree.Walk(func(name string, entry *TreeEntry) error { + callCount++ + + return nil + }) + checkFatal(t, err) + if callCount != 11 { + t.Fatalf("got called %v times, want %v", callCount, 11) + } +} + +func TestTreeWalkSkip(t *testing.T) { + t.Parallel() + repo, err := OpenRepository("testdata/TestGitRepository.git") + checkFatal(t, err) + treeID, err := NewOid("6020a3b8d5d636e549ccbd0c53e2764684bb3125") + checkFatal(t, err) + + tree, err := repo.LookupTree(treeID) + checkFatal(t, err) + + var callCount int + err = tree.Walk(func(name string, entry *TreeEntry) error { + callCount++ + + return TreeWalkSkip + }) + checkFatal(t, err) + if callCount != 4 { + t.Fatalf("got called %v times, want %v", callCount, 4) + } +} + +func TestTreeWalkStop(t *testing.T) { + t.Parallel() + repo, err := OpenRepository("testdata/TestGitRepository.git") + checkFatal(t, err) + treeID, err := NewOid("6020a3b8d5d636e549ccbd0c53e2764684bb3125") + checkFatal(t, err) + + tree, err := repo.LookupTree(treeID) + checkFatal(t, err) + + var callCount int + stopError := errors.New("stop") + err = tree.Walk(func(name string, entry *TreeEntry) error { + callCount++ + + return stopError + }) + if err != stopError { + t.Fatalf("got error %v, want %v", err, stopError) + } + if callCount != 1 { + t.Fatalf("got called %v times, want %v", callCount, 1) + } +} |
