]> source.dussan.org Git - jgit.git/commitdiff
FileTreeIteratorTest: Open Git and RevWalk in try-with-resource 61/65161/1
authorDavid Pursehouse <david.pursehouse@sonymobile.com>
Tue, 26 Jan 2016 08:56:47 +0000 (17:56 +0900)
committerDavid Pursehouse <david.pursehouse@sonymobile.com>
Tue, 26 Jan 2016 08:56:47 +0000 (17:56 +0900)
Change-Id: I6e68c4b028e0aa01964eace10307372060371df7
Signed-off-by: David Pursehouse <david.pursehouse@sonymobile.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java

index 767e13d114b6442b8d0d332b48395a575bd756b2..df17a3e2fc51e331c8e87adef5d6ff9f4a1e9040 100644 (file)
@@ -255,10 +255,11 @@ public class FileTreeIteratorTest extends RepositoryTestCase {
        @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
@@ -282,11 +283,12 @@ public class FileTreeIteratorTest extends RepositoryTestCase {
        @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");
@@ -305,20 +307,21 @@ public class FileTreeIteratorTest extends RepositoryTestCase {
        @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));
@@ -334,198 +337,204 @@ public class FileTreeIteratorTest extends RepositoryTestCase {
 
        @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)