diff options
author | Christian Halstrick <christian.halstrick@sap.com> | 2013-03-24 18:59:31 -0400 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org <gerrit@eclipse.org> | 2013-03-24 18:59:31 -0400 |
commit | e7669c44e3a414cbe78519afed3ecd7b12bed0a9 (patch) | |
tree | b65361c33a5808ee90506ca2500c508eadd808c0 | |
parent | 6b3515c3ee410161c35116528f18338d57eedb7b (diff) | |
parent | 7aa54967a26cb027fe390ad1c624ebb30f9ac6d5 (diff) | |
download | jgit-e7669c44e3a414cbe78519afed3ecd7b12bed0a9.tar.gz jgit-e7669c44e3a414cbe78519afed3ecd7b12bed0a9.zip |
Merge "Add tests for FileUtils.delete and EMPTY_DIREECTORIES_ONLY"
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java index 7790b3024a..d0680cab74 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java @@ -117,6 +117,91 @@ public class FileUtilTest { } @Test + public void testDeleteRecursiveEmpty() throws IOException { + File f1 = new File(trash, "test/test/a"); + File f2 = new File(trash, "test/a"); + File d1 = new File(trash, "test"); + File d2 = new File(trash, "test/test"); + File d3 = new File(trash, "test/b"); + FileUtils.mkdirs(f1.getParentFile()); + FileUtils.createNewFile(f2); + FileUtils.createNewFile(f1); + FileUtils.mkdirs(d3); + + // Cannot delete hierarchy since files exist + try { + FileUtils.delete(d1, FileUtils.EMPTY_DIRECTORIES_ONLY); + fail("delete should fail"); + } catch (IOException e1) { + try { + FileUtils.delete(d1, FileUtils.EMPTY_DIRECTORIES_ONLY|FileUtils.RECURSIVE); + fail("delete should fail"); + } catch (IOException e2) { + // Everything still there + assertTrue(f1.exists()); + assertTrue(f2.exists()); + assertTrue(d1.exists()); + assertTrue(d2.exists()); + assertTrue(d3.exists()); + } + } + + // setup: delete files, only directories left + assertTrue(f1.delete()); + assertTrue(f2.delete()); + + // Shall not delete hierarchy without recursive + try { + FileUtils.delete(d1, FileUtils.EMPTY_DIRECTORIES_ONLY); + fail("delete should fail"); + } catch (IOException e2) { + // Everything still there + assertTrue(d1.exists()); + assertTrue(d2.exists()); + assertTrue(d3.exists()); + } + + // Now delete the empty hierarchy + FileUtils.delete(d2, FileUtils.EMPTY_DIRECTORIES_ONLY + | FileUtils.RECURSIVE); + assertFalse(d2.exists()); + + // Will fail to delete non-existing without SKIP_MISSING + try { + FileUtils.delete(d2, FileUtils.EMPTY_DIRECTORIES_ONLY); + fail("Cannot delete non-existent entity"); + } catch (IOException e) { + // ok + } + + // ..with SKIP_MISSING there is no exception + FileUtils.delete(d2, FileUtils.EMPTY_DIRECTORIES_ONLY + | FileUtils.SKIP_MISSING); + FileUtils.delete(d2, FileUtils.EMPTY_DIRECTORIES_ONLY + | FileUtils.RECURSIVE | FileUtils.SKIP_MISSING); + + // essentially the same, using IGNORE_ERRORS + FileUtils.delete(d2, FileUtils.EMPTY_DIRECTORIES_ONLY + | FileUtils.IGNORE_ERRORS); + FileUtils.delete(d2, FileUtils.EMPTY_DIRECTORIES_ONLY + | FileUtils.RECURSIVE | FileUtils.IGNORE_ERRORS); + } + + @Test + public void testDeleteRecursiveEmptyDirectoriesOnlyButIsFile() + throws IOException { + File f1 = new File(trash, "test/test/a"); + FileUtils.mkdirs(f1.getParentFile()); + FileUtils.createNewFile(f1); + try { + FileUtils.delete(f1, FileUtils.EMPTY_DIRECTORIES_ONLY); + fail("delete should fail"); + } catch (IOException e) { + assertTrue(f1.exists()); + } + } + + @Test public void testMkdir() throws IOException { File d = new File(trash, "test"); FileUtils.mkdir(d); |