diff options
| author | Jochen Hilgers <[email protected]> | 2014-11-26 17:22:15 +0100 |
|---|---|---|
| committer | Jochen Hilgers <[email protected]> | 2014-11-26 17:22:15 +0100 |
| commit | a4ae68783d92a46b8d8bbd7e2aab3700bde10597 (patch) | |
| tree | 36aa17bc98911687b5c50b6abaea41a6a381cb06 /diff_test.go | |
| parent | 17963043741d7057cae1782032d022af0cd053fb (diff) | |
Integrated git_diff_find_similar
Diffstat (limited to 'diff_test.go')
| -rw-r--r-- | diff_test.go | 73 |
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 +} |
