From ff83f54d29a2e3c2fda5e25b60bd7d20347c53ca Mon Sep 17 00:00:00 2001 From: Robin Rosenberg Date: Tue, 4 Feb 2014 01:00:41 +0100 Subject: [PATCH] Failing to delete a directory with untracked content is actually ok We had a test, but it was wrong. Bug: 424630 Change-Id: I926e0954c8623a323a50fe8be3ebe5e0ac6944c8 Signed-off-by: Matthias Sohn --- .../tst/org/eclipse/jgit/merge/ResolveMergerTest.java | 9 ++++----- .../src/org/eclipse/jgit/merge/ResolveMerger.java | 5 +++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java index 72762437d..54de8cfb4 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java @@ -43,7 +43,6 @@ package org.eclipse.jgit.merge; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.File; @@ -79,7 +78,7 @@ public class ResolveMergerTest extends RepositoryTestCase { public static MergeStrategy recursive = MergeStrategy.RECURSIVE; @Theory - public void failingPathsShouldNotResultInOKReturnValue( + public void failingDeleteOfDirectoryWithUntrackedContent( MergeStrategy strategy) throws Exception { File folder1 = new File(db.getWorkTree(), "folder1"); FileUtils.mkdir(folder1); @@ -107,6 +106,7 @@ public void failingPathsShouldNotResultInOKReturnValue( RevCommit head = git.commit().setMessage("Adding another file").call(); // Untracked file to cause failing path for delete() of folder1 + // but that's ok. file = new File(folder1, "file3.txt"); write(file, "folder1--file3.txt"); @@ -114,9 +114,8 @@ public void failingPathsShouldNotResultInOKReturnValue( merger.setCommitNames(new String[] { "BASE", "HEAD", "other" }); merger.setWorkingTreeIterator(new FileTreeIterator(db)); boolean ok = merger.merge(head.getId(), other.getId()); - - assertFalse(merger.getFailingPaths().isEmpty()); - assertFalse(ok); + assertTrue(ok); + assertTrue(file.exists()); } /** diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java index 710996d2a..eca2f91be 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java @@ -244,8 +244,9 @@ private void checkout() throws NoWorkTreeException, IOException { String fileName = toBeDeleted.get(i); File f = new File(db.getWorkTree(), fileName); if (!f.delete()) - failingPaths.put(fileName, - MergeFailureReason.COULD_NOT_DELETE); + if (!f.isDirectory()) + failingPaths.put(fileName, + MergeFailureReason.COULD_NOT_DELETE); modifiedFiles.add(fileName); } } finally {