diff options
author | Matthias Sohn <matthias.sohn@sap.com> | 2018-07-27 13:38:21 +0200 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2018-07-27 13:38:21 +0200 |
commit | fd4a62fdf0a0f7b2273739a207700c10bd50afc4 (patch) | |
tree | 0bd93f2c66c92b85e9e944194ec6310105e7ca9e /org.eclipse.jgit.test/tst | |
parent | 55b13350842c4198c1227991b5c87b19a2a9edb6 (diff) | |
parent | 8b97c266c375c261aeb5b0adee8e1050c5e727f7 (diff) | |
download | jgit-fd4a62fdf0a0f7b2273739a207700c10bd50afc4.tar.gz jgit-fd4a62fdf0a0f7b2273739a207700c10bd50afc4.zip |
Merge branch 'stable-4.10' into stable-4.11
* stable-4.10:
Prepare 4.7.3-SNAPSHOT builds
JGit v4.7.2.201807261330-r
Delete all loose refs empty directories
Use java.nio to delete path to get detailed errors
GC: Remove empty references folders
Do not ignore path deletion errors
Change-Id: I2b44d862869d4453c57db668fc7c925da591f671
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit.test/tst')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcDeleteEmptyRefsFoldersTest.java | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcDeleteEmptyRefsFoldersTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcDeleteEmptyRefsFoldersTest.java index 76e1534c59..3caae72fc6 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcDeleteEmptyRefsFoldersTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcDeleteEmptyRefsFoldersTest.java @@ -46,6 +46,7 @@ package org.eclipse.jgit.internal.storage.file; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -56,8 +57,8 @@ import org.junit.Before; import org.junit.Test; public class GcDeleteEmptyRefsFoldersTest extends GcTestCase { - private static final String REF_FOLDER_01 = "01"; - private static final String REF_FOLDER_02 = "02"; + private static final String REF_FOLDER_01 = "A/B/01"; + private static final String REF_FOLDER_02 = "C/D/02"; private Path refsDir; private Path heads; @@ -74,23 +75,36 @@ public class GcDeleteEmptyRefsFoldersTest extends GcTestCase { @Test public void emptyRefFoldersAreDeleted() throws Exception { FileTime fileTime = FileTime.from(Instant.now().minusSeconds(31)); - Path refDir01 = Files.createDirectory(heads.resolve(REF_FOLDER_01)); - Path refDir02 = Files.createDirectory(heads.resolve(REF_FOLDER_02)); - Files.setLastModifiedTime(refDir01, fileTime); - Files.setLastModifiedTime(refDir02, fileTime); + Path refDir01 = Files.createDirectories(heads.resolve(REF_FOLDER_01)); + Path refDir02 = Files.createDirectories(heads.resolve(REF_FOLDER_02)); + setLastModifiedTime(fileTime, heads, REF_FOLDER_01); + setLastModifiedTime(fileTime, heads, REF_FOLDER_02); assertTrue(refDir01.toFile().exists()); assertTrue(refDir02.toFile().exists()); gc.gc(); assertFalse(refDir01.toFile().exists()); + assertFalse(refDir01.getParent().toFile().exists()); + assertFalse(refDir01.getParent().getParent().toFile().exists()); assertFalse(refDir02.toFile().exists()); + assertFalse(refDir02.getParent().toFile().exists()); + assertFalse(refDir02.getParent().getParent().toFile().exists()); + } + + private void setLastModifiedTime(FileTime fileTime, Path path, String folder) throws IOException { + long numParents = folder.chars().filter(c -> c == '/').count(); + Path folderPath = path.resolve(folder); + for(int folderLevel = 0; folderLevel <= numParents; folderLevel ++ ) { + Files.setLastModifiedTime(folderPath, fileTime); + folderPath = folderPath.getParent(); + } } @Test public void emptyRefFoldersAreKeptIfTheyAreTooRecent() throws Exception { - Path refDir01 = Files.createDirectory(heads.resolve(REF_FOLDER_01)); - Path refDir02 = Files.createDirectory(heads.resolve(REF_FOLDER_02)); + Path refDir01 = Files.createDirectories(heads.resolve(REF_FOLDER_01)); + Path refDir02 = Files.createDirectories(heads.resolve(REF_FOLDER_02)); assertTrue(refDir01.toFile().exists()); assertTrue(refDir02.toFile().exists()); gc.gc(); @@ -101,8 +115,8 @@ public class GcDeleteEmptyRefsFoldersTest extends GcTestCase { @Test public void nonEmptyRefsFoldersAreKept() throws Exception { - Path refDir01 = Files.createDirectory(heads.resolve(REF_FOLDER_01)); - Path refDir02 = Files.createDirectory(heads.resolve(REF_FOLDER_02)); + Path refDir01 = Files.createDirectories(heads.resolve(REF_FOLDER_01)); + Path refDir02 = Files.createDirectories(heads.resolve(REF_FOLDER_02)); Path ref01 = Files.createFile(refDir01.resolve("ref01")); Path ref02 = Files.createFile(refDir01.resolve("ref02")); assertTrue(refDir01.toFile().exists()); @@ -115,4 +129,4 @@ public class GcDeleteEmptyRefsFoldersTest extends GcTestCase { assertTrue(ref01.toFile().exists()); assertTrue(ref02.toFile().exists()); } -} +}
\ No newline at end of file |