@Test
public void testDirCacheMatchingId() throws Exception {
File f = writeTrashFile("file", "content");
- Git git = new Git(db);
- writeTrashFile("file", "content");
- fsTick(f);
- git.add().addFilepattern("file").call();
+ try (Git git = new Git(db)) {
+ writeTrashFile("file", "content");
+ fsTick(f);
+ git.add().addFilepattern("file").call();
+ }
DirCacheEntry dce = db.readDirCache().getEntry("file");
TreeWalk tw = new TreeWalk(db);
FileTreeIterator fti = new FileTreeIterator(trash, db.getFS(), db
@Test
public void testIsModifiedSymlinkAsFile() throws Exception {
writeTrashFile("symlink", "content");
- Git git = new Git(db);
- db.getConfig().setString(ConfigConstants.CONFIG_CORE_SECTION, null,
- ConfigConstants.CONFIG_KEY_SYMLINKS, "false");
- git.add().addFilepattern("symlink").call();
- git.commit().setMessage("commit").call();
+ try (Git git = new Git(db)) {
+ db.getConfig().setString(ConfigConstants.CONFIG_CORE_SECTION, null,
+ ConfigConstants.CONFIG_KEY_SYMLINKS, "false");
+ git.add().addFilepattern("symlink").call();
+ git.commit().setMessage("commit").call();
+ }
// Modify previously committed DirCacheEntry and write it back to disk
DirCacheEntry dce = db.readDirCache().getEntry("symlink");
@Test
public void testIsModifiedFileSmudged() throws Exception {
File f = writeTrashFile("file", "content");
- Git git = new Git(db);
- // The idea of this test is to check the smudged handling
- // Hopefully fsTick will make sure our entry gets smudged
- fsTick(f);
- writeTrashFile("file", "content");
- long lastModified = f.lastModified();
- git.add().addFilepattern("file").call();
- writeTrashFile("file", "conten2");
- f.setLastModified(lastModified);
- // We cannot trust this to go fast enough on
- // a system with less than one-second lastModified
- // resolution, so we force the index to have the
- // same timestamp as the file we look at.
- db.getIndexFile().setLastModified(lastModified);
+ try (Git git = new Git(db)) {
+ // The idea of this test is to check the smudged handling
+ // Hopefully fsTick will make sure our entry gets smudged
+ fsTick(f);
+ writeTrashFile("file", "content");
+ long lastModified = f.lastModified();
+ git.add().addFilepattern("file").call();
+ writeTrashFile("file", "conten2");
+ f.setLastModified(lastModified);
+ // We cannot trust this to go fast enough on
+ // a system with less than one-second lastModified
+ // resolution, so we force the index to have the
+ // same timestamp as the file we look at.
+ db.getIndexFile().setLastModified(lastModified);
+ }
DirCacheEntry dce = db.readDirCache().getEntry("file");
FileTreeIterator fti = new FileTreeIterator(trash, db.getFS(), db
.getConfig().get(WorkingTreeOptions.KEY));
@Test
public void submoduleHeadMatchesIndex() throws Exception {
- Git git = new Git(db);
- writeTrashFile("file.txt", "content");
- git.add().addFilepattern("file.txt").call();
- final RevCommit id = git.commit().setMessage("create file").call();
- final String path = "sub";
- DirCache cache = db.lockDirCache();
- DirCacheEditor editor = cache.editor();
- editor.add(new PathEdit(path) {
-
- public void apply(DirCacheEntry ent) {
- ent.setFileMode(FileMode.GITLINK);
- ent.setObjectId(id);
- }
- });
- editor.commit();
-
- Git.cloneRepository().setURI(db.getDirectory().toURI().toString())
- .setDirectory(new File(db.getWorkTree(), path)).call()
- .getRepository().close();
-
- TreeWalk walk = new TreeWalk(db);
- DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
- FileTreeIterator workTreeIter = new FileTreeIterator(db);
- walk.addTree(indexIter);
- walk.addTree(workTreeIter);
- walk.setFilter(PathFilter.create(path));
-
- assertTrue(walk.next());
- assertTrue(indexIter.idEqual(workTreeIter));
+ try (Git git = new Git(db);
+ TreeWalk walk = new TreeWalk(db)) {
+ writeTrashFile("file.txt", "content");
+ git.add().addFilepattern("file.txt").call();
+ final RevCommit id = git.commit().setMessage("create file").call();
+ final String path = "sub";
+ DirCache cache = db.lockDirCache();
+ DirCacheEditor editor = cache.editor();
+ editor.add(new PathEdit(path) {
+
+ public void apply(DirCacheEntry ent) {
+ ent.setFileMode(FileMode.GITLINK);
+ ent.setObjectId(id);
+ }
+ });
+ editor.commit();
+
+ Git.cloneRepository().setURI(db.getDirectory().toURI().toString())
+ .setDirectory(new File(db.getWorkTree(), path)).call()
+ .getRepository().close();
+
+ DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
+ FileTreeIterator workTreeIter = new FileTreeIterator(db);
+ walk.addTree(indexIter);
+ walk.addTree(workTreeIter);
+ walk.setFilter(PathFilter.create(path));
+
+ assertTrue(walk.next());
+ assertTrue(indexIter.idEqual(workTreeIter));
+ }
}
@Test
public void submoduleWithNoGitDirectory() throws Exception {
- Git git = new Git(db);
- writeTrashFile("file.txt", "content");
- git.add().addFilepattern("file.txt").call();
- final RevCommit id = git.commit().setMessage("create file").call();
- final String path = "sub";
- DirCache cache = db.lockDirCache();
- DirCacheEditor editor = cache.editor();
- editor.add(new PathEdit(path) {
-
- public void apply(DirCacheEntry ent) {
- ent.setFileMode(FileMode.GITLINK);
- ent.setObjectId(id);
- }
- });
- editor.commit();
-
- File submoduleRoot = new File(db.getWorkTree(), path);
- assertTrue(submoduleRoot.mkdir());
- assertTrue(new File(submoduleRoot, Constants.DOT_GIT).mkdir());
-
- TreeWalk walk = new TreeWalk(db);
- DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
- FileTreeIterator workTreeIter = new FileTreeIterator(db);
- walk.addTree(indexIter);
- walk.addTree(workTreeIter);
- walk.setFilter(PathFilter.create(path));
-
- assertTrue(walk.next());
- assertFalse(indexIter.idEqual(workTreeIter));
- assertEquals(ObjectId.zeroId(), workTreeIter.getEntryObjectId());
+ try (Git git = new Git(db);
+ TreeWalk walk = new TreeWalk(db)) {
+ writeTrashFile("file.txt", "content");
+ git.add().addFilepattern("file.txt").call();
+ final RevCommit id = git.commit().setMessage("create file").call();
+ final String path = "sub";
+ DirCache cache = db.lockDirCache();
+ DirCacheEditor editor = cache.editor();
+ editor.add(new PathEdit(path) {
+
+ public void apply(DirCacheEntry ent) {
+ ent.setFileMode(FileMode.GITLINK);
+ ent.setObjectId(id);
+ }
+ });
+ editor.commit();
+
+ File submoduleRoot = new File(db.getWorkTree(), path);
+ assertTrue(submoduleRoot.mkdir());
+ assertTrue(new File(submoduleRoot, Constants.DOT_GIT).mkdir());
+
+ DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
+ FileTreeIterator workTreeIter = new FileTreeIterator(db);
+ walk.addTree(indexIter);
+ walk.addTree(workTreeIter);
+ walk.setFilter(PathFilter.create(path));
+
+ assertTrue(walk.next());
+ assertFalse(indexIter.idEqual(workTreeIter));
+ assertEquals(ObjectId.zeroId(), workTreeIter.getEntryObjectId());
+ }
}
@Test
public void submoduleWithNoHead() throws Exception {
- Git git = new Git(db);
- writeTrashFile("file.txt", "content");
- git.add().addFilepattern("file.txt").call();
- final RevCommit id = git.commit().setMessage("create file").call();
- final String path = "sub";
- DirCache cache = db.lockDirCache();
- DirCacheEditor editor = cache.editor();
- editor.add(new PathEdit(path) {
-
- public void apply(DirCacheEntry ent) {
- ent.setFileMode(FileMode.GITLINK);
- ent.setObjectId(id);
- }
- });
- editor.commit();
-
- assertNotNull(Git.init().setDirectory(new File(db.getWorkTree(), path))
- .call().getRepository());
-
- TreeWalk walk = new TreeWalk(db);
- DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
- FileTreeIterator workTreeIter = new FileTreeIterator(db);
- walk.addTree(indexIter);
- walk.addTree(workTreeIter);
- walk.setFilter(PathFilter.create(path));
-
- assertTrue(walk.next());
- assertFalse(indexIter.idEqual(workTreeIter));
- assertEquals(ObjectId.zeroId(), workTreeIter.getEntryObjectId());
+ try (Git git = new Git(db);
+ TreeWalk walk = new TreeWalk(db)) {
+ writeTrashFile("file.txt", "content");
+ git.add().addFilepattern("file.txt").call();
+ final RevCommit id = git.commit().setMessage("create file").call();
+ final String path = "sub";
+ DirCache cache = db.lockDirCache();
+ DirCacheEditor editor = cache.editor();
+ editor.add(new PathEdit(path) {
+
+ public void apply(DirCacheEntry ent) {
+ ent.setFileMode(FileMode.GITLINK);
+ ent.setObjectId(id);
+ }
+ });
+ editor.commit();
+
+ assertNotNull(Git.init().setDirectory(new File(db.getWorkTree(), path))
+ .call().getRepository());
+
+ DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
+ FileTreeIterator workTreeIter = new FileTreeIterator(db);
+ walk.addTree(indexIter);
+ walk.addTree(workTreeIter);
+ walk.setFilter(PathFilter.create(path));
+
+ assertTrue(walk.next());
+ assertFalse(indexIter.idEqual(workTreeIter));
+ assertEquals(ObjectId.zeroId(), workTreeIter.getEntryObjectId());
+ }
}
@Test
public void submoduleDirectoryIterator() throws Exception {
- Git git = new Git(db);
- writeTrashFile("file.txt", "content");
- git.add().addFilepattern("file.txt").call();
- final RevCommit id = git.commit().setMessage("create file").call();
- final String path = "sub";
- DirCache cache = db.lockDirCache();
- DirCacheEditor editor = cache.editor();
- editor.add(new PathEdit(path) {
-
- public void apply(DirCacheEntry ent) {
- ent.setFileMode(FileMode.GITLINK);
- ent.setObjectId(id);
- }
- });
- editor.commit();
-
- Git.cloneRepository().setURI(db.getDirectory().toURI().toString())
- .setDirectory(new File(db.getWorkTree(), path)).call()
- .getRepository().close();
-
- TreeWalk walk = new TreeWalk(db);
- DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
- FileTreeIterator workTreeIter = new FileTreeIterator(db.getWorkTree(),
- db.getFS(), db.getConfig().get(WorkingTreeOptions.KEY));
- walk.addTree(indexIter);
- walk.addTree(workTreeIter);
- walk.setFilter(PathFilter.create(path));
-
- assertTrue(walk.next());
- assertTrue(indexIter.idEqual(workTreeIter));
+ try (Git git = new Git(db);
+ TreeWalk walk = new TreeWalk(db)) {
+ writeTrashFile("file.txt", "content");
+ git.add().addFilepattern("file.txt").call();
+ final RevCommit id = git.commit().setMessage("create file").call();
+ final String path = "sub";
+ DirCache cache = db.lockDirCache();
+ DirCacheEditor editor = cache.editor();
+ editor.add(new PathEdit(path) {
+
+ public void apply(DirCacheEntry ent) {
+ ent.setFileMode(FileMode.GITLINK);
+ ent.setObjectId(id);
+ }
+ });
+ editor.commit();
+
+ Git.cloneRepository().setURI(db.getDirectory().toURI().toString())
+ .setDirectory(new File(db.getWorkTree(), path)).call()
+ .getRepository().close();
+
+ DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
+ FileTreeIterator workTreeIter = new FileTreeIterator(db.getWorkTree(),
+ db.getFS(), db.getConfig().get(WorkingTreeOptions.KEY));
+ walk.addTree(indexIter);
+ walk.addTree(workTreeIter);
+ walk.setFilter(PathFilter.create(path));
+
+ assertTrue(walk.next());
+ assertTrue(indexIter.idEqual(workTreeIter));
+ }
}
@Test
public void submoduleNestedWithHeadMatchingIndex() throws Exception {
- Git git = new Git(db);
- writeTrashFile("file.txt", "content");
- git.add().addFilepattern("file.txt").call();
- final RevCommit id = git.commit().setMessage("create file").call();
- final String path = "sub/dir1/dir2";
- DirCache cache = db.lockDirCache();
- DirCacheEditor editor = cache.editor();
- editor.add(new PathEdit(path) {
-
- public void apply(DirCacheEntry ent) {
- ent.setFileMode(FileMode.GITLINK);
- ent.setObjectId(id);
- }
- });
- editor.commit();
-
- Git.cloneRepository().setURI(db.getDirectory().toURI().toString())
- .setDirectory(new File(db.getWorkTree(), path)).call()
- .getRepository().close();
-
- TreeWalk walk = new TreeWalk(db);
- DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
- FileTreeIterator workTreeIter = new FileTreeIterator(db);
- walk.addTree(indexIter);
- walk.addTree(workTreeIter);
- walk.setFilter(PathFilter.create(path));
-
- assertTrue(walk.next());
- assertTrue(indexIter.idEqual(workTreeIter));
+ try (Git git = new Git(db);
+ TreeWalk walk = new TreeWalk(db)) {
+ writeTrashFile("file.txt", "content");
+ git.add().addFilepattern("file.txt").call();
+ final RevCommit id = git.commit().setMessage("create file").call();
+ final String path = "sub/dir1/dir2";
+ DirCache cache = db.lockDirCache();
+ DirCacheEditor editor = cache.editor();
+ editor.add(new PathEdit(path) {
+
+ public void apply(DirCacheEntry ent) {
+ ent.setFileMode(FileMode.GITLINK);
+ ent.setObjectId(id);
+ }
+ });
+ editor.commit();
+
+ Git.cloneRepository().setURI(db.getDirectory().toURI().toString())
+ .setDirectory(new File(db.getWorkTree(), path)).call()
+ .getRepository().close();
+
+ DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
+ FileTreeIterator workTreeIter = new FileTreeIterator(db);
+ walk.addTree(indexIter);
+ walk.addTree(workTreeIter);
+ walk.setFilter(PathFilter.create(path));
+
+ assertTrue(walk.next());
+ assertTrue(indexIter.idEqual(workTreeIter));
+ }
}
@Test
public void idOffset() throws Exception {
- Git git = new Git(db);
- writeTrashFile("fileAinfsonly", "A");
- File fileBinindex = writeTrashFile("fileBinindex", "B");
- fsTick(fileBinindex);
- git.add().addFilepattern("fileBinindex").call();
- writeTrashFile("fileCinfsonly", "C");
- TreeWalk tw = new TreeWalk(db);
- DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
- FileTreeIterator workTreeIter = new FileTreeIterator(db);
- tw.addTree(indexIter);
- tw.addTree(workTreeIter);
- workTreeIter.setDirCacheIterator(tw, 0);
- assertEntry("d46c305e85b630558ee19cc47e73d2e5c8c64cdc", "a,", tw);
- assertEntry("58ee403f98538ec02409538b3f80adf610accdec", "a,b", tw);
- assertEntry("0000000000000000000000000000000000000000", "a", tw);
- assertEntry("b8d30ff397626f0f1d3538d66067edf865e201d6", "a0b", tw);
- // The reason for adding this test. Check that the id is correct for
- // mixed
- assertEntry("8c7e5a667f1b771847fe88c01c3de34413a1b220",
- "fileAinfsonly", tw);
- assertEntry("7371f47a6f8bd23a8fa1a8b2a9479cdd76380e54", "fileBinindex",
- tw);
- assertEntry("96d80cd6c4e7158dbebd0849f4fb7ce513e5828c",
- "fileCinfsonly", tw);
- assertFalse(tw.next());
+ try (Git git = new Git(db);
+ TreeWalk tw = new TreeWalk(db)) {
+ writeTrashFile("fileAinfsonly", "A");
+ File fileBinindex = writeTrashFile("fileBinindex", "B");
+ fsTick(fileBinindex);
+ git.add().addFilepattern("fileBinindex").call();
+ writeTrashFile("fileCinfsonly", "C");
+ DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
+ FileTreeIterator workTreeIter = new FileTreeIterator(db);
+ tw.addTree(indexIter);
+ tw.addTree(workTreeIter);
+ workTreeIter.setDirCacheIterator(tw, 0);
+ assertEntry("d46c305e85b630558ee19cc47e73d2e5c8c64cdc", "a,", tw);
+ assertEntry("58ee403f98538ec02409538b3f80adf610accdec", "a,b", tw);
+ assertEntry("0000000000000000000000000000000000000000", "a", tw);
+ assertEntry("b8d30ff397626f0f1d3538d66067edf865e201d6", "a0b", tw);
+ // The reason for adding this test. Check that the id is correct for
+ // mixed
+ assertEntry("8c7e5a667f1b771847fe88c01c3de34413a1b220",
+ "fileAinfsonly", tw);
+ assertEntry("7371f47a6f8bd23a8fa1a8b2a9479cdd76380e54", "fileBinindex",
+ tw);
+ assertEntry("96d80cd6c4e7158dbebd0849f4fb7ce513e5828c",
+ "fileCinfsonly", tw);
+ assertFalse(tw.next());
+ }
}
private static void assertEntry(String sha1string, String path, TreeWalk tw)