Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn2018-07-27 11:38:21 +0000
committerMatthias Sohn2018-07-27 11:38:21 +0000
commitfd4a62fdf0a0f7b2273739a207700c10bd50afc4 (patch)
tree0bd93f2c66c92b85e9e944194ec6310105e7ca9e /org.eclipse.jgit.test/tst
parent55b13350842c4198c1227991b5c87b19a2a9edb6 (diff)
parent8b97c266c375c261aeb5b0adee8e1050c5e727f7 (diff)
downloadjgit-fd4a62fdf0a0f7b2273739a207700c10bd50afc4.tar.gz
jgit-fd4a62fdf0a0f7b2273739a207700c10bd50afc4.tar.xz
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.java36
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

Back to the top