aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2018-07-27 14:16:42 +0200
committerMatthias Sohn <matthias.sohn@sap.com>2018-07-27 14:16:49 +0200
commit435975e7a937aaba7917115694a1e6bab2c2d840 (patch)
tree3e95a7e2feeb2582100c7c24a2d4c6eb7db969c4 /org.eclipse.jgit.test/tst
parentbd4b6d3bf1eb9eb28c933901ac9a8542824b9cfd (diff)
parent0db128acd57efef589e973585662da011a8c9e4f (diff)
downloadjgit-435975e7a937aaba7917115694a1e6bab2c2d840.tar.gz
jgit-435975e7a937aaba7917115694a1e6bab2c2d840.zip
Merge branch 'stable-5.0'
* stable-5.0: 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: I9717444c42ea89195dfcde8bb10121b9bb178e87 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