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 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 @Test
88 public void testModify() throws Exception {
89 Git git = new Git(db);
90 String path = "file";
91 writeTrashFile(path, "content");
92
93 git.add().addFilepattern(path).call();
94 git.commit().setMessage("commit").call();
95
96 DirCache dc = db.readDirCache();
97 DirCacheEntry entry = dc.getEntry(path);
98
99 long masterLastMod = entry.getLastModified();
100
101 git.checkout().setCreateBranch(true).setName("side").call();
102
103 Thread.sleep(10);
104 String path2 = "file2";
105 writeTrashFile(path2, "side content");
106 git.add().addFilepattern(path2).call();
107 git.commit().setMessage("commit").call();
108
109 dc = db.readDirCache();
110 entry = dc.getEntry(path);
111
112 long sideLastMode = entry.getLastModified();
113
114 Thread.sleep(2000);
115
116 writeTrashFile(path, "uncommitted content");
117 git.checkout().setName("master").call();
118
119 dc = db.readDirCache();
120 entry = dc.getEntry(path);
121
122 assertTrue("shall have equal mod time!", masterLastMod == sideLastMode);
123 assertTrue("shall not equal master timestamp!",
124 entry.getLastModified() == masterLastMod);
125
126 }
127
128 }