summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
authorMasaya Suzuki <masayasuzuki@google.com>2016-08-21 15:27:30 -0700
committerAndrey Loskutov <loskutov@gmx.de>2016-08-24 09:07:08 +0200
commitedd8ad4d04897830f08b6793a9493c70c0e9b87a (patch)
tree4675dd5c84a81b9b4289850a1a4c908d90716204 /org.eclipse.jgit.test
parentda9eef85e7fff1c1c64c4302b897d20aff24b448 (diff)
downloadjgit-edd8ad4d04897830f08b6793a9493c70c0e9b87a.tar.gz
jgit-edd8ad4d04897830f08b6793a9493c70c0e9b87a.zip
Use FS#lastModified instead of File#lastModified
This fixes the tests failed in JDK8. FS uses java.nio API to get file attributes. The timestamps obtained from that API are more precise than the ones from java.io.File#lastModified() since Java8. This difference accidentally makes JGit detect newly added files as smudged. Use the precised timestamp to avoid this false positive. Bug: 500058 Change-Id: I9e587583c85cb6efa7562ad6c5f26577869a2e7c Signed-off-by: Masaya Suzuki <masayasuzuki@google.com> Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTestCase.java5
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java26
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java2
3 files changed, 18 insertions, 15 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTestCase.java
index 5abf625489..e463285915 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTestCase.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTestCase.java
@@ -105,8 +105,9 @@ public abstract class GcTestCase extends LocalDiskRepositoryTestCase {
return tip;
}
- protected long lastModified(AnyObjectId objectId) {
- return repo.getObjectDatabase().fileFor(objectId).lastModified();
+ protected long lastModified(AnyObjectId objectId) throws IOException {
+ return repo.getFS().lastModified(
+ repo.getObjectDatabase().fileFor(objectId));
}
protected static void fsTick() throws InterruptedException, IOException {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
index 55bb93acf8..a08dbbcc83 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
@@ -62,6 +62,7 @@ import org.eclipse.jgit.junit.RepositoryTestCase;
import org.eclipse.jgit.merge.ResolveMerger.MergeFailureReason;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.treewalk.FileTreeIterator;
+import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
import org.junit.Assert;
import org.junit.experimental.theories.DataPoint;
@@ -694,7 +695,7 @@ public class ResolveMergerTest extends RepositoryTestCase {
// Create initial content and remember when the last file was written.
f = writeTrashFiles(false, "orig", "orig", "1\n2\n3", "orig", "orig");
- lastTs4 = f.lastModified();
+ lastTs4 = FS.DETECTED.lastModified(f);
// add all files, commit and check this doesn't update any working tree
// files and that the index is in a new file system timer tick. Make
@@ -707,8 +708,8 @@ public class ResolveMergerTest extends RepositoryTestCase {
checkConsistentLastModified("0", "1", "2", "3", "4");
checkModificationTimeStampOrder("1", "2", "3", "4", "<.git/index");
assertEquals("Commit should not touch working tree file 4", lastTs4,
- new File(db.getWorkTree(), "4").lastModified());
- lastTsIndex = indexFile.lastModified();
+ FS.DETECTED.lastModified(new File(db.getWorkTree(), "4")));
+ lastTsIndex = FS.DETECTED.lastModified(indexFile);
// Do modifications on the master branch. Then add and commit. This
// should touch only "0", "2 and "3"
@@ -722,7 +723,7 @@ public class ResolveMergerTest extends RepositoryTestCase {
checkConsistentLastModified("0", "1", "2", "3", "4");
checkModificationTimeStampOrder("1", "4", "*" + lastTs4, "<*"
+ lastTsIndex, "<0", "2", "3", "<.git/index");
- lastTsIndex = indexFile.lastModified();
+ lastTsIndex = FS.DETECTED.lastModified(indexFile);
// Checkout a side branch. This should touch only "0", "2 and "3"
fsTick(indexFile);
@@ -731,7 +732,7 @@ public class ResolveMergerTest extends RepositoryTestCase {
checkConsistentLastModified("0", "1", "2", "3", "4");
checkModificationTimeStampOrder("1", "4", "*" + lastTs4, "<*"
+ lastTsIndex, "<0", "2", "3", ".git/index");
- lastTsIndex = indexFile.lastModified();
+ lastTsIndex = FS.DETECTED.lastModified(indexFile);
// This checkout may have populated worktree and index so fast that we
// may have smudged entries now. Check that we have the right content
@@ -744,13 +745,13 @@ public class ResolveMergerTest extends RepositoryTestCase {
indexState(CONTENT));
fsTick(indexFile);
f = writeTrashFiles(false, "orig", "orig", "1\n2\n3", "orig", "orig");
- lastTs4 = f.lastModified();
+ lastTs4 = FS.DETECTED.lastModified(f);
fsTick(f);
git.add().addFilepattern(".").call();
checkConsistentLastModified("0", "1", "2", "3", "4");
checkModificationTimeStampOrder("*" + lastTsIndex, "<0", "1", "2", "3",
"4", "<.git/index");
- lastTsIndex = indexFile.lastModified();
+ lastTsIndex = FS.DETECTED.lastModified(indexFile);
// Do modifications on the side branch. Touch only "1", "2 and "3"
fsTick(indexFile);
@@ -761,7 +762,7 @@ public class ResolveMergerTest extends RepositoryTestCase {
checkConsistentLastModified("0", "1", "2", "3", "4");
checkModificationTimeStampOrder("0", "4", "*" + lastTs4, "<*"
+ lastTsIndex, "<1", "2", "3", "<.git/index");
- lastTsIndex = indexFile.lastModified();
+ lastTsIndex = FS.DETECTED.lastModified(indexFile);
// merge master and side. Should only touch "0," "2" and "3"
fsTick(indexFile);
@@ -789,7 +790,7 @@ public class ResolveMergerTest extends RepositoryTestCase {
"IndexEntry with path "
+ path
+ " has lastmodified with is different from the worktree file",
- new File(workTree, path).lastModified(), dc.getEntry(path)
+ FS.DETECTED.lastModified(new File(workTree, path)), dc.getEntry(path)
.getLastModified());
}
@@ -799,14 +800,15 @@ public class ResolveMergerTest extends RepositoryTestCase {
// then this file must be younger then file i. A path "*<modtime>"
// represents a file with a modification time of <modtime>
// E.g. ("a", "b", "<c", "f/a.txt") means: a<=b<c<=f/a.txt
- private void checkModificationTimeStampOrder(String... pathes) {
+ private void checkModificationTimeStampOrder(String... pathes)
+ throws IOException {
long lastMod = Long.MIN_VALUE;
for (String p : pathes) {
boolean strong = p.startsWith("<");
boolean fixed = p.charAt(strong ? 1 : 0) == '*';
p = p.substring((strong ? 1 : 0) + (fixed ? 1 : 0));
- long curMod = fixed ? Long.valueOf(p).longValue() : new File(
- db.getWorkTree(), p).lastModified();
+ long curMod = fixed ? Long.valueOf(p).longValue()
+ : FS.DETECTED.lastModified(new File(db.getWorkTree(), p));
if (strong)
assertTrue("path " + p + " is not younger than predecesssor",
curMod > lastMod);
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java
index efb5ddb4e7..ef0f2d91f2 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java
@@ -99,7 +99,7 @@ public class FileTreeIteratorTest extends RepositoryTestCase {
for (int i = paths.length - 1; i >= 0; i--) {
final String s = paths[i];
writeTrashFile(s, s);
- mtime[i] = new File(trash, s).lastModified();
+ mtime[i] = FS.DETECTED.lastModified(new File(trash, s));
}
}