summaryrefslogtreecommitdiff
path: root/diff_test.go
diff options
context:
space:
mode:
authorJochen Hilgers <[email protected]>2014-11-26 17:22:15 +0100
committerJochen Hilgers <[email protected]>2014-11-26 17:22:15 +0100
commita4ae68783d92a46b8d8bbd7e2aab3700bde10597 (patch)
tree36aa17bc98911687b5c50b6abaea41a6a381cb06 /diff_test.go
parent17963043741d7057cae1782032d022af0cd053fb (diff)
Integrated git_diff_find_similar
Diffstat (limited to 'diff_test.go')
-rw-r--r--diff_test.go73
1 files changed, 68 insertions, 5 deletions
diff --git a/diff_test.go b/diff_test.go
index b688294..84d72db 100644
--- a/diff_test.go
+++ b/diff_test.go
@@ -6,21 +6,69 @@ import (
"testing"
)
-func TestDiffTreeToTree(t *testing.T) {
+func TestFindSimilar(t *testing.T) {
repo := createTestRepo(t)
defer repo.Free()
defer os.RemoveAll(repo.Workdir())
- _, originalTreeId := seedTestRepo(t, repo)
- originalTree, err := repo.LookupTree(originalTreeId)
+ originalTree, newTree := createTestTrees(t, repo)
+
+ diffOpt, _ := DefaultDiffOptions()
+ diff, err := repo.DiffTreeToTree(originalTree, newTree, &diffOpt)
checkFatal(t, err)
+ if diff == nil {
+ t.Fatal("no diff returned")
+ }
- _, newTreeId := updateReadme(t, repo, "file changed\n")
+ findOpts, err := DefaultDiffFindOptions()
+ checkFatal(t, err)
+ findOpts.Flags = DiffFindBreakRewrites
- newTree, err := repo.LookupTree(newTreeId)
+ err = diff.FindSimilar(&findOpts)
checkFatal(t, err)
+ numDiffs := 0
+ numAdded := 0
+ numDeleted := 0
+
+ err = diff.ForEach(func(file DiffDelta, progress float64) (DiffForEachHunkCallback, error) {
+ numDiffs++
+
+ switch file.Status {
+ case DeltaAdded:
+ numAdded++
+ case DeltaDeleted:
+ numDeleted++
+ }
+
+ return func(hunk DiffHunk) (DiffForEachLineCallback, error) {
+ return func(line DiffLine) error {
+ return nil
+ }, nil
+ }, nil
+ }, DiffDetailLines)
+
+ if numDiffs != 2 {
+ t.Fatal("Incorrect number of files in diff")
+ }
+ if numAdded != 1 {
+ t.Fatal("Incorrect number of new files in diff")
+ }
+ if numDeleted != 1 {
+ t.Fatal("Incorrect number of deleted files in diff")
+ }
+
+}
+
+func TestDiffTreeToTree(t *testing.T) {
+
+ repo := createTestRepo(t)
+ defer repo.Free()
+ defer os.RemoveAll(repo.Workdir())
+
+ originalTree, newTree := createTestTrees(t, repo)
+
callbackInvoked := false
opts := DiffOptions{
NotifyCallback: func(diffSoFar *Diff, delta DiffDelta, matchedPathSpec string) error {
@@ -94,3 +142,18 @@ func TestDiffTreeToTree(t *testing.T) {
}
}
+
+func createTestTrees(t *testing.T, repo *Repository) (originalTree *Tree, newTree *Tree) {
+ var err error
+ _, originalTreeId := seedTestRepo(t, repo)
+ originalTree, err = repo.LookupTree(originalTreeId)
+
+ checkFatal(t, err)
+
+ _, newTreeId := updateReadme(t, repo, "file changed\n")
+
+ newTree, err = repo.LookupTree(newTreeId)
+ checkFatal(t, err)
+
+ return originalTree, newTree
+}