1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package org.eclipse.jgit.lib;
39
40 import static org.junit.Assert.assertTrue;
41
42 import org.eclipse.jgit.api.Git;
43 import org.eclipse.jgit.dircache.DirCache;
44 import org.eclipse.jgit.dircache.DirCacheEntry;
45 import org.eclipse.jgit.junit.RepositoryTestCase;
46 import org.junit.Test;
47
48 public class IndexModificationTimesTest extends RepositoryTestCase {
49
50 @Test
51 public void testLastModifiedTimes() throws Exception {
52 try (Git git = new Git(db)) {
53 String path = "file";
54 writeTrashFile(path, "content");
55 String path2 = "file2";
56 writeTrashFile(path2, "content2");
57
58 git.add().addFilepattern(path).call();
59 git.add().addFilepattern(path2).call();
60 git.commit().setMessage("commit").call();
61
62 DirCache dc = db.readDirCache();
63 DirCacheEntry entry = dc.getEntry(path);
64 DirCacheEntry entry2 = dc.getEntry(path);
65
66 assertTrue("last modified shall not be zero!",
67 entry.getLastModified() != 0);
68
69 assertTrue("last modified shall not be zero!",
70 entry2.getLastModified() != 0);
71
72 writeTrashFile(path, "new content");
73 git.add().addFilepattern(path).call();
74 git.commit().setMessage("commit2").call();
75
76 dc = db.readDirCache();
77 entry = dc.getEntry(path);
78 entry2 = dc.getEntry(path);
79
80 assertTrue("last modified shall not be zero!",
81 entry.getLastModified() != 0);
82
83 assertTrue("last modified shall not be zero!",
84 entry2.getLastModified() != 0);
85 }
86 }
87
88 @Test
89 public void testModify() throws Exception {
90 try (Git git = new Git(db)) {
91 String path = "file";
92 writeTrashFile(path, "content");
93
94 git.add().addFilepattern(path).call();
95 git.commit().setMessage("commit").call();
96
97 DirCache dc = db.readDirCache();
98 DirCacheEntry entry = dc.getEntry(path);
99
100 long masterLastMod = entry.getLastModified();
101
102 git.checkout().setCreateBranch(true).setName("side").call();
103
104 Thread.sleep(10);
105 String path2 = "file2";
106 writeTrashFile(path2, "side content");
107 git.add().addFilepattern(path2).call();
108 git.commit().setMessage("commit").call();
109
110 dc = db.readDirCache();
111 entry = dc.getEntry(path);
112
113 long sideLastMode = entry.getLastModified();
114
115 Thread.sleep(2000);
116
117 writeTrashFile(path, "uncommitted content");
118 git.checkout().setName("master").call();
119
120 dc = db.readDirCache();
121 entry = dc.getEntry(path);
122
123 assertTrue("shall have equal mod time!", masterLastMod == sideLastMode);
124 assertTrue("shall not equal master timestamp!",
125 entry.getLastModified() == masterLastMod);
126 }
127 }
128
129 }