From a4ae68783d92a46b8d8bbd7e2aab3700bde10597 Mon Sep 17 00:00:00 2001 From: Jochen Hilgers Date: Wed, 26 Nov 2014 17:22:15 +0100 Subject: Integrated git_diff_find_similar --- diff_test.go | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 5 deletions(-) (limited to 'diff_test.go') 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 +} -- cgit v1.2.3