diff options
author | Bernard Leach <leachbj@bouncycastle.org> | 2011-04-29 19:42:10 +1000 |
---|---|---|
committer | Chris Aniszczyk <caniszczyk@gmail.com> | 2011-05-05 13:48:57 -0500 |
commit | 298486a7c320629de12f9506e0133686a7382b01 (patch) | |
tree | 4a3f545edd4fb769f89d33b4d071233a4da17d41 /org.eclipse.jgit.test | |
parent | e435f7de7748081945b02a0896dc54f4d6cc053c (diff) | |
download | jgit-298486a7c320629de12f9506e0133686a7382b01.tar.gz jgit-298486a7c320629de12f9506e0133686a7382b01.zip |
IndexDiff: conflicting files aren't properly shown
Before this change any files in the conflicting set would
also be listed in the the other IndexDiff Sets which is
confusing. With this change a conflicting file will not
be included in any of the other sets.
Change-Id: Ife9f2652685220bcfddc1f9820423acdcd5acfdc
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java | 83 |
1 files changed, 79 insertions, 4 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java index 80c779ddfd..77f1238547 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java @@ -176,16 +176,91 @@ public class IndexDiffTest extends RepositoryTestCase { IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator); diff.diff(); - assertEquals("[a, b]", + assertEquals("[b]", new TreeSet<String>(diff.getChanged()).toString()); - assertEquals("[a]", diff.getAdded().toString()); + assertEquals("[]", diff.getAdded().toString()); assertEquals("[]", diff.getRemoved().toString()); - assertEquals("[a]", diff.getMissing().toString()); - assertEquals("[a]", diff.getModified().toString()); + assertEquals("[]", diff.getMissing().toString()); + assertEquals("[]", diff.getModified().toString()); assertEquals("[a]", diff.getConflicting().toString()); } @Test + public void testConflictingDeletedAndModified() throws Exception { + Git git = new Git(db); + + writeTrashFile("a", "1\na\n3\n"); + writeTrashFile("b", "1\nb\n3\n"); + git.add().addFilepattern("a").addFilepattern("b").call(); + RevCommit initialCommit = git.commit().setMessage("initial").call(); + + // create side branch and delete "a" + createBranch(initialCommit, "refs/heads/side"); + checkoutBranch("refs/heads/side"); + git.rm().addFilepattern("a").call(); + RevCommit secondCommit = git.commit().setMessage("side").call(); + + // update a on master to generate conflict + checkoutBranch("refs/heads/master"); + writeTrashFile("a", "1\na(main)\n3\n"); + git.add().addFilepattern("a").call(); + git.commit().setMessage("main").call(); + + // merge side with master + MergeResult result = git.merge().include(secondCommit.getId()) + .setStrategy(MergeStrategy.RESOLVE).call(); + assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus()); + + FileTreeIterator iterator = new FileTreeIterator(db); + IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator); + diff.diff(); + + assertEquals("[]", new TreeSet<String>(diff.getChanged()).toString()); + assertEquals("[]", diff.getAdded().toString()); + assertEquals("[]", diff.getRemoved().toString()); + assertEquals("[]", diff.getMissing().toString()); + assertEquals("[]", diff.getModified().toString()); + assertEquals("[a]", diff.getConflicting().toString()); + } + + @Test + public void testConflictingFromMultipleCreations() throws Exception { + Git git = new Git(db); + + writeTrashFile("a", "1\na\n3\n"); + git.add().addFilepattern("a").call(); + RevCommit initialCommit = git.commit().setMessage("initial").call(); + + createBranch(initialCommit, "refs/heads/side"); + checkoutBranch("refs/heads/side"); + + writeTrashFile("b", "1\nb(side)\n3\n"); + git.add().addFilepattern("b").call(); + RevCommit secondCommit = git.commit().setMessage("side").call(); + + checkoutBranch("refs/heads/master"); + + writeTrashFile("b", "1\nb(main)\n3\n"); + git.add().addFilepattern("b").call(); + git.commit().setMessage("main").call(); + + MergeResult result = git.merge().include(secondCommit.getId()) + .setStrategy(MergeStrategy.RESOLVE).call(); + assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus()); + + FileTreeIterator iterator = new FileTreeIterator(db); + IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator); + diff.diff(); + + assertEquals("[]", new TreeSet<String>(diff.getChanged()).toString()); + assertEquals("[]", diff.getAdded().toString()); + assertEquals("[]", diff.getRemoved().toString()); + assertEquals("[]", diff.getMissing().toString()); + assertEquals("[]", diff.getModified().toString()); + assertEquals("[b]", diff.getConflicting().toString()); + } + + @Test public void testUnchangedSimple() throws IOException { GitIndex index = new GitIndex(db); |