aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit
diff options
context:
space:
mode:
authorRobin Rosenberg <robin.rosenberg@dewire.com>2013-03-24 00:49:23 +0100
committerRobin Rosenberg <robin.rosenberg@dewire.com>2013-03-24 00:49:23 +0100
commit7aa54967a26cb027fe390ad1c624ebb30f9ac6d5 (patch)
tree600efd6fb35048572e07b4fa71ba55d289863544 /org.eclipse.jgit.test/tst/org/eclipse/jgit
parent9b63f324413fb093313c3f33e52627b1c97cd6f6 (diff)
downloadjgit-7aa54967a26cb027fe390ad1c624ebb30f9ac6d5.tar.gz
jgit-7aa54967a26cb027fe390ad1c624ebb30f9ac6d5.zip
Add tests for FileUtils.delete and EMPTY_DIREECTORIES_ONLY
Change-Id: I54a46c29df5eafc7739a6ef29e5dc80fa2f6d9ba
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/util/FileUtilTest.java85
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);