]> source.dussan.org Git - jgit.git/commitdiff
AddCommandTest: Create Git instances in try-with-resource 25/64825/1
authorDavid Pursehouse <david.pursehouse@sonymobile.com>
Thu, 21 Jan 2016 01:21:12 +0000 (10:21 +0900)
committerDavid Pursehouse <david.pursehouse@sonymobile.com>
Thu, 21 Jan 2016 01:22:52 +0000 (10:22 +0900)
Change-Id: Idf42f03099eeb9975fef9492ea8a75776afc2a3c
Signed-off-by: David Pursehouse <david.pursehouse@sonymobile.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/AddCommandTest.java

index a5ad18d10231a16e39286c1b1da74e9a227bbd51..d4bd68e68681ac08e437c35cfc46151f27f5099b 100644 (file)
@@ -77,9 +77,7 @@ public class AddCommandTest extends RepositoryTestCase {
 
        @Test
        public void testAddNothing() throws GitAPIException {
-               Git git = new Git(db);
-
-               try {
+               try (Git git = new Git(db)) {
                        git.add().call();
                        fail("Expected IllegalArgumentException");
                } catch (NoFilepatternException e) {
@@ -90,11 +88,10 @@ public class AddCommandTest extends RepositoryTestCase {
 
        @Test
        public void testAddNonExistingSingleFile() throws GitAPIException {
-               Git git = new Git(db);
-
-               DirCache dc = git.add().addFilepattern("a.txt").call();
-               assertEquals(0, dc.getEntryCount());
-
+               try (Git git = new Git(db)) {
+                       DirCache dc = git.add().addFilepattern("a.txt").call();
+                       assertEquals(0, dc.getEntryCount());
+               }
        }
 
        @Test
@@ -105,13 +102,13 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content");
                writer.close();
 
-               Git git = new Git(db);
-
-               git.add().addFilepattern("a.txt").call();
+               try (Git git = new Git(db)) {
+                       git.add().addFilepattern("a.txt").call();
 
-               assertEquals(
-                               "[a.txt, mode:100644, content:content]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[a.txt, mode:100644, content:content]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -124,18 +121,19 @@ public class AddCommandTest extends RepositoryTestCase {
                writeTrashFile("src/a.txt", "foo\n");
                File script = writeTempFile("sed s/o/e/g");
 
-               Git git = new Git(db);
-               StoredConfig config = git.getRepository().getConfig();
-               config.setString("filter", "tstFilter", "clean",
-                               "sh " + slashify(script.getPath()));
-               config.save();
+               try (Git git = new Git(db)) {
+                       StoredConfig config = git.getRepository().getConfig();
+                       config.setString("filter", "tstFilter", "clean",
+                                       "sh " + slashify(script.getPath()));
+                       config.save();
 
-               git.add().addFilepattern("src/a.txt").addFilepattern("src/a.tmp")
-                               .call();
+                       git.add().addFilepattern("src/a.txt").addFilepattern("src/a.tmp")
+                                       .call();
 
-               assertEquals(
-                               "[src/a.tmp, mode:100644, content:foo][src/a.txt, mode:100644, content:fee\n]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[src/a.tmp, mode:100644, content:foo][src/a.txt, mode:100644, content:fee\n]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -145,17 +143,18 @@ public class AddCommandTest extends RepositoryTestCase {
                writeTrashFile("src/a.txt", "foo");
                File script = writeTempFile("echo $GIT_DIR; echo 1 >xyz");
 
-               Git git = new Git(db);
-               StoredConfig config = git.getRepository().getConfig();
-               config.setString("filter", "tstFilter", "clean",
-                               "sh " + slashify(script.getPath()));
-               config.save();
-               git.add().addFilepattern("src/a.txt").call();
-
-               String gitDir = db.getDirectory().getAbsolutePath();
-               assertEquals("[src/a.txt, mode:100644, content:" + gitDir
-                               + "\n]", indexState(CONTENT));
-               assertTrue(new File(db.getWorkTree(), "xyz").exists());
+               try (Git git = new Git(db)) {
+                       StoredConfig config = git.getRepository().getConfig();
+                       config.setString("filter", "tstFilter", "clean",
+                                       "sh " + slashify(script.getPath()));
+                       config.save();
+                       git.add().addFilepattern("src/a.txt").call();
+
+                       String gitDir = db.getDirectory().getAbsolutePath();
+                       assertEquals("[src/a.txt, mode:100644, content:" + gitDir
+                                       + "\n]", indexState(CONTENT));
+                       assertTrue(new File(db.getWorkTree(), "xyz").exists());
+               }
        }
 
        @Test
@@ -169,22 +168,23 @@ public class AddCommandTest extends RepositoryTestCase {
                File script = writeTempFile("sed s/o/e/g");
                File script2 = writeTempFile("sed s/f/x/g");
 
-               Git git = new Git(db);
-               StoredConfig config = git.getRepository().getConfig();
-               config.setString("filter", "tstFilter", "clean",
-                               "sh " + slashify(script.getPath()));
-               config.setString("filter", "tstFilter2", "clean",
-                               "sh " + slashify(script2.getPath()));
-               config.save();
+               try (Git git = new Git(db)) {
+                       StoredConfig config = git.getRepository().getConfig();
+                       config.setString("filter", "tstFilter", "clean",
+                                       "sh " + slashify(script.getPath()));
+                       config.setString("filter", "tstFilter2", "clean",
+                                       "sh " + slashify(script2.getPath()));
+                       config.save();
 
-               git.add().addFilepattern("src/a.txt").addFilepattern("src/a.tmp")
-                               .call();
+                       git.add().addFilepattern("src/a.txt").addFilepattern("src/a.tmp")
+                                       .call();
 
-               assertEquals(
-                               "[src/a.tmp, mode:100644, content:xoo\n][src/a.txt, mode:100644, content:fee\n]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[src/a.tmp, mode:100644, content:xoo\n][src/a.txt, mode:100644, content:fee\n]",
+                                       indexState(CONTENT));
 
-               // TODO: multiple clean filters for one file???
+                       // TODO: multiple clean filters for one file???
+               }
        }
 
        /**
@@ -202,17 +202,18 @@ public class AddCommandTest extends RepositoryTestCase {
                writeTrashFile("; echo virus", "foo\n");
                File script = writeTempFile("sed s/o/e/g");
 
-               Git git = new Git(db);
-               StoredConfig config = git.getRepository().getConfig();
-               config.setString("filter", "tstFilter", "clean",
-                               "sh " + slashify(script.getPath()) + " %f");
-               writeTrashFile(".gitattributes", "* filter=tstFilter");
-
-               git.add().addFilepattern("; echo virus").call();
-               // Without proper escaping the content would be "feovirus". The sed
-               // command and the "echo virus" would contribute to the content
-               assertEquals("[; echo virus, mode:100644, content:fee\n]",
-                               indexState(CONTENT));
+               try (Git git = new Git(db)) {
+                       StoredConfig config = git.getRepository().getConfig();
+                       config.setString("filter", "tstFilter", "clean",
+                                       "sh " + slashify(script.getPath()) + " %f");
+                       writeTrashFile(".gitattributes", "* filter=tstFilter");
+
+                       git.add().addFilepattern("; echo virus").call();
+                       // Without proper escaping the content would be "feovirus". The sed
+                       // command and the "echo virus" would contribute to the content
+                       assertEquals("[; echo virus, mode:100644, content:fee\n]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -220,18 +221,19 @@ public class AddCommandTest extends RepositoryTestCase {
                writeTrashFile("a.txt", "foo");
                File script = writeTempFile("sedfoo s/o/e/g");
 
-               Git git = new Git(db);
-               StoredConfig config = git.getRepository().getConfig();
-               config.setString("filter", "tstFilter", "clean",
-                               "sh " + script.getPath());
-               config.save();
-               writeTrashFile(".gitattributes", "*.txt filter=tstFilter");
-
-               try {
-                       git.add().addFilepattern("a.txt").call();
-                       fail("Didn't received the expected exception");
-               } catch (FilterFailedException e) {
-                       assertEquals(127, e.getReturnCode());
+               try (Git git = new Git(db)) {
+                       StoredConfig config = git.getRepository().getConfig();
+                       config.setString("filter", "tstFilter", "clean",
+                                       "sh " + script.getPath());
+                       config.save();
+                       writeTrashFile(".gitattributes", "*.txt filter=tstFilter");
+
+                       try {
+                               git.add().addFilepattern("a.txt").call();
+                               fail("Didn't received the expected exception");
+                       } catch (FilterFailedException e) {
+                               assertEquals(127, e.getReturnCode());
+                       }
                }
        }
 
@@ -240,18 +242,19 @@ public class AddCommandTest extends RepositoryTestCase {
                writeTrashFile("a.txt", "foo");
                File script = writeTempFile("sed s/o/e/g");
 
-               Git git = new Git(db);
-               StoredConfig config = git.getRepository().getConfig();
-               config.setString("filter", "tstFilter", "clean",
-                               "shfoo " + script.getPath());
-               config.save();
-               writeTrashFile(".gitattributes", "*.txt filter=tstFilter");
-
-               try {
-                       git.add().addFilepattern("a.txt").call();
-                       fail("Didn't received the expected exception");
-               } catch (FilterFailedException e) {
-                       assertEquals(127, e.getReturnCode());
+               try (Git git = new Git(db)) {
+                       StoredConfig config = git.getRepository().getConfig();
+                       config.setString("filter", "tstFilter", "clean",
+                                       "shfoo " + script.getPath());
+                       config.save();
+                       writeTrashFile(".gitattributes", "*.txt filter=tstFilter");
+
+                       try {
+                               git.add().addFilepattern("a.txt").call();
+                               fail("Didn't received the expected exception");
+                       } catch (FilterFailedException e) {
+                               assertEquals(127, e.getReturnCode());
+                       }
                }
        }
 
@@ -261,18 +264,19 @@ public class AddCommandTest extends RepositoryTestCase {
                writeTrashFile("a.txt", "foo");
                File script = writeTempFile("exit 12");
 
-               Git git = new Git(db);
-               StoredConfig config = git.getRepository().getConfig();
-               config.setString("filter", "tstFilter", "clean",
-                               "sh " + slashify(script.getPath()));
-               config.save();
-               writeTrashFile(".gitattributes", "*.txt filter=tstFilter");
-
-               try {
-                       git.add().addFilepattern("a.txt").call();
-                       fail("Didn't received the expected exception");
-               } catch (FilterFailedException e) {
-                       assertEquals(12, e.getReturnCode());
+               try (Git git = new Git(db)) {
+                       StoredConfig config = git.getRepository().getConfig();
+                       config.setString("filter", "tstFilter", "clean",
+                                       "sh " + slashify(script.getPath()));
+                       config.save();
+                       writeTrashFile(".gitattributes", "*.txt filter=tstFilter");
+
+                       try {
+                               git.add().addFilepattern("a.txt").call();
+                               fail("Didn't received the expected exception");
+                       } catch (FilterFailedException e) {
+                               assertEquals(12, e.getReturnCode());
+                       }
                }
        }
 
@@ -281,16 +285,18 @@ public class AddCommandTest extends RepositoryTestCase {
                writeTrashFile("a.txt", "foo");
                File script = writeTempFile("sed s/o/e/g");
 
-               Git git = new Git(db);
-               StoredConfig config = git.getRepository().getConfig();
-               config.setString("filter", "tstFilter", "something",
-                               "sh " + script.getPath());
-               config.save();
-               writeTrashFile(".gitattributes", "*.txt filter=tstFilter");
+               try (Git git = new Git(db)) {
+                       StoredConfig config = git.getRepository().getConfig();
+                       config.setString("filter", "tstFilter", "something",
+                                       "sh " + script.getPath());
+                       config.save();
+                       writeTrashFile(".gitattributes", "*.txt filter=tstFilter");
 
-               git.add().addFilepattern("a.txt").call();
+                       git.add().addFilepattern("a.txt").call();
 
-               assertEquals("[a.txt, mode:100644, content:foo]", indexState(CONTENT));
+                       assertEquals("[a.txt, mode:100644, content:foo]",
+                                       indexState(CONTENT));
+               }
        }
 
        private File writeTempFile(String body) throws IOException {
@@ -308,19 +314,20 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("row1\r\nrow2");
                writer.close();
 
-               Git git = new Git(db);
-               db.getConfig().setString("core", null, "autocrlf", "false");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:row1\r\nrow2]",
-                               indexState(CONTENT));
-               db.getConfig().setString("core", null, "autocrlf", "true");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:row1\nrow2]",
-                               indexState(CONTENT));
-               db.getConfig().setString("core", null, "autocrlf", "input");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:row1\nrow2]",
-                               indexState(CONTENT));
+               try (Git git = new Git(db)) {
+                       db.getConfig().setString("core", null, "autocrlf", "false");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:row1\r\nrow2]",
+                                       indexState(CONTENT));
+                       db.getConfig().setString("core", null, "autocrlf", "true");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:row1\nrow2]",
+                                       indexState(CONTENT));
+                       db.getConfig().setString("core", null, "autocrlf", "input");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:row1\nrow2]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -337,19 +344,20 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print(crData);
                writer.close();
                String lfData = data.toString().replaceAll("\r", "");
-               Git git = new Git(db);
-               db.getConfig().setString("core", null, "autocrlf", "false");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:" + data + "]",
-                               indexState(CONTENT));
-               db.getConfig().setString("core", null, "autocrlf", "true");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:" + lfData + "]",
-                               indexState(CONTENT));
-               db.getConfig().setString("core", null, "autocrlf", "input");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:" + lfData + "]",
-                               indexState(CONTENT));
+               try (Git git = new Git(db)) {
+                       db.getConfig().setString("core", null, "autocrlf", "false");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:" + data + "]",
+                                       indexState(CONTENT));
+                       db.getConfig().setString("core", null, "autocrlf", "true");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:" + lfData + "]",
+                                       indexState(CONTENT));
+                       db.getConfig().setString("core", null, "autocrlf", "input");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:" + lfData + "]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -361,19 +369,20 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("row1\r\nrow2\u0000");
                writer.close();
 
-               Git git = new Git(db);
-               db.getConfig().setString("core", null, "autocrlf", "false");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:row1\r\nrow2\u0000]",
-                               indexState(CONTENT));
-               db.getConfig().setString("core", null, "autocrlf", "true");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:row1\r\nrow2\u0000]",
-                               indexState(CONTENT));
-               db.getConfig().setString("core", null, "autocrlf", "input");
-               git.add().addFilepattern("a.txt").call();
-               assertEquals("[a.txt, mode:100644, content:row1\r\nrow2\u0000]",
-                               indexState(CONTENT));
+               try (Git git = new Git(db)) {
+                       db.getConfig().setString("core", null, "autocrlf", "false");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:row1\r\nrow2\u0000]",
+                                       indexState(CONTENT));
+                       db.getConfig().setString("core", null, "autocrlf", "true");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:row1\r\nrow2\u0000]",
+                                       indexState(CONTENT));
+                       db.getConfig().setString("core", null, "autocrlf", "input");
+                       git.add().addFilepattern("a.txt").call();
+                       assertEquals("[a.txt, mode:100644, content:row1\r\nrow2\u0000]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -386,13 +395,13 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content");
                writer.close();
 
-               Git git = new Git(db);
-
-               git.add().addFilepattern("sub/a.txt").call();
+               try (Git git = new Git(db)) {
+                       git.add().addFilepattern("sub/a.txt").call();
 
-               assertEquals(
-                               "[sub/a.txt, mode:100644, content:content]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[sub/a.txt, mode:100644, content:content]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -404,20 +413,21 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content");
                writer.close();
 
-               Git git = new Git(db);
-               DirCache dc = git.add().addFilepattern("a.txt").call();
+               try (Git git = new Git(db)) {
+                       DirCache dc = git.add().addFilepattern("a.txt").call();
 
-               dc.getEntry(0).getObjectId();
+                       dc.getEntry(0).getObjectId();
 
-               writer = new PrintWriter(file);
-               writer.print("other content");
-               writer.close();
+                       writer = new PrintWriter(file);
+                       writer.print("other content");
+                       writer.close();
 
-               dc = git.add().addFilepattern("a.txt").call();
+                       dc = git.add().addFilepattern("a.txt").call();
 
-               assertEquals(
-                               "[a.txt, mode:100644, content:other content]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[a.txt, mode:100644, content:other content]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -428,22 +438,23 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content");
                writer.close();
 
-               Git git = new Git(db);
-               DirCache dc = git.add().addFilepattern("a.txt").call();
+               try (Git git = new Git(db)) {
+                       DirCache dc = git.add().addFilepattern("a.txt").call();
 
-               dc.getEntry(0).getObjectId();
+                       dc.getEntry(0).getObjectId();
 
-               git.commit().setMessage("commit a.txt").call();
+                       git.commit().setMessage("commit a.txt").call();
 
-               writer = new PrintWriter(file);
-               writer.print("other content");
-               writer.close();
+                       writer = new PrintWriter(file);
+                       writer.print("other content");
+                       writer.close();
 
-               dc = git.add().addFilepattern("a.txt").call();
+                       dc = git.add().addFilepattern("a.txt").call();
 
-               assertEquals(
-                               "[a.txt, mode:100644, content:other content]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[a.txt, mode:100644, content:other content]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -454,18 +465,19 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content");
                writer.close();
 
-               Git git = new Git(db);
-               DirCache dc = git.add().addFilepattern("a.txt").call();
+               try (Git git = new Git(db)) {
+                       DirCache dc = git.add().addFilepattern("a.txt").call();
 
-               dc.getEntry(0).getObjectId();
-               FileUtils.delete(file);
+                       dc.getEntry(0).getObjectId();
+                       FileUtils.delete(file);
 
-               // is supposed to do nothing
-               dc = git.add().addFilepattern("a.txt").call();
+                       // is supposed to do nothing
+                       dc = git.add().addFilepattern("a.txt").call();
 
-               assertEquals(
-                               "[a.txt, mode:100644, content:content]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[a.txt, mode:100644, content:content]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -476,20 +488,21 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content");
                writer.close();
 
-               Git git = new Git(db);
-               DirCache dc = git.add().addFilepattern("a.txt").call();
+               try (Git git = new Git(db)) {
+                       DirCache dc = git.add().addFilepattern("a.txt").call();
 
-               git.commit().setMessage("commit a.txt").call();
+                       git.commit().setMessage("commit a.txt").call();
 
-               dc.getEntry(0).getObjectId();
-               FileUtils.delete(file);
+                       dc.getEntry(0).getObjectId();
+                       FileUtils.delete(file);
 
-               // is supposed to do nothing
-               dc = git.add().addFilepattern("a.txt").call();
+                       // is supposed to do nothing
+                       dc = git.add().addFilepattern("a.txt").call();
 
-               assertEquals(
-                               "[a.txt, mode:100644, content:content]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[a.txt, mode:100644, content:content]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -537,13 +550,14 @@ public class AddCommandTest extends RepositoryTestCase {
 
                // now the test begins
 
-               Git git = new Git(db);
-               dc = git.add().addFilepattern("a.txt").call();
+               try (Git git = new Git(db)) {
+                       dc = git.add().addFilepattern("a.txt").call();
 
-               assertEquals(
-                               "[a.txt, mode:100644, content:our content]" +
-                               "[b.txt, mode:100644, content:content b]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[a.txt, mode:100644, content:our content]" +
+                                       "[b.txt, mode:100644, content:content b]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -560,12 +574,13 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content b");
                writer.close();
 
-               Git git = new Git(db);
-               git.add().addFilepattern("a.txt").addFilepattern("b.txt").call();
-               assertEquals(
-                               "[a.txt, mode:100644, content:content]" +
-                               "[b.txt, mode:100644, content:content b]",
-                               indexState(CONTENT));
+               try (Git git = new Git(db)) {
+                       git.add().addFilepattern("a.txt").addFilepattern("b.txt").call();
+                       assertEquals(
+                                       "[a.txt, mode:100644, content:content]" +
+                                       "[b.txt, mode:100644, content:content b]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -583,12 +598,13 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content b");
                writer.close();
 
-               Git git = new Git(db);
-               git.add().addFilepattern("sub").call();
-               assertEquals(
-                               "[sub/a.txt, mode:100644, content:content]" +
-                               "[sub/b.txt, mode:100644, content:content b]",
-                               indexState(CONTENT));
+               try (Git git = new Git(db)) {
+                       git.add().addFilepattern("sub").call();
+                       assertEquals(
+                                       "[sub/a.txt, mode:100644, content:content]" +
+                                       "[sub/b.txt, mode:100644, content:content b]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -612,12 +628,13 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content b");
                writer.close();
 
-               Git git = new Git(db);
-               git.add().addFilepattern("sub").call();
+               try (Git git = new Git(db)) {
+                       git.add().addFilepattern("sub").call();
 
-               assertEquals(
-                               "[sub/a.txt, mode:100644, content:content]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[sub/a.txt, mode:100644, content:content]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
@@ -635,12 +652,13 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content b");
                writer.close();
 
-               Git git = new Git(db);
-               git.add().addFilepattern(".").call();
-               assertEquals(
-                               "[sub/a.txt, mode:100644, content:content]" +
-                               "[sub/b.txt, mode:100644, content:content b]",
-                               indexState(CONTENT));
+               try (Git git = new Git(db)) {
+                       git.add().addFilepattern(".").call();
+                       assertEquals(
+                                       "[sub/a.txt, mode:100644, content:content]" +
+                                       "[sub/b.txt, mode:100644, content:content b]",
+                                       indexState(CONTENT));
+               }
        }
 
        // the same three cases as in testAddWithParameterUpdate
@@ -662,40 +680,41 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content b");
                writer.close();
 
-               Git git = new Git(db);
-               git.add().addFilepattern("sub").call();
-
-               assertEquals(
-                               "[sub/a.txt, mode:100644, content:content]" +
-                               "[sub/b.txt, mode:100644, content:content b]",
-                               indexState(CONTENT));
-
-               git.commit().setMessage("commit").call();
-
-               // new unstaged file sub/c.txt
-               File file3 = new File(db.getWorkTree(), "sub/c.txt");
-               FileUtils.createNewFile(file3);
-               writer = new PrintWriter(file3);
-               writer.print("content c");
-               writer.close();
-
-               // file sub/a.txt is modified
-               writer = new PrintWriter(file);
-               writer.print("modified content");
-               writer.close();
-
-               // file sub/b.txt is deleted
-               FileUtils.delete(file2);
-
-               git.add().addFilepattern("sub").call();
-               // change in sub/a.txt is staged
-               // deletion of sub/b.txt is not staged
-               // sub/c.txt is staged
-               assertEquals(
-                               "[sub/a.txt, mode:100644, content:modified content]" +
-                               "[sub/b.txt, mode:100644, content:content b]" +
-                               "[sub/c.txt, mode:100644, content:content c]",
-                               indexState(CONTENT));
+               try (Git git = new Git(db)) {
+                       git.add().addFilepattern("sub").call();
+
+                       assertEquals(
+                                       "[sub/a.txt, mode:100644, content:content]" +
+                                       "[sub/b.txt, mode:100644, content:content b]",
+                                       indexState(CONTENT));
+
+                       git.commit().setMessage("commit").call();
+
+                       // new unstaged file sub/c.txt
+                       File file3 = new File(db.getWorkTree(), "sub/c.txt");
+                       FileUtils.createNewFile(file3);
+                       writer = new PrintWriter(file3);
+                       writer.print("content c");
+                       writer.close();
+
+                       // file sub/a.txt is modified
+                       writer = new PrintWriter(file);
+                       writer.print("modified content");
+                       writer.close();
+
+                       // file sub/b.txt is deleted
+                       FileUtils.delete(file2);
+
+                       git.add().addFilepattern("sub").call();
+                       // change in sub/a.txt is staged
+                       // deletion of sub/b.txt is not staged
+                       // sub/c.txt is staged
+                       assertEquals(
+                                       "[sub/a.txt, mode:100644, content:modified content]" +
+                                       "[sub/b.txt, mode:100644, content:content b]" +
+                                       "[sub/c.txt, mode:100644, content:content c]",
+                                       indexState(CONTENT));
+               }
        }
 
        // file a exists in workdir and in index -> added
@@ -716,71 +735,73 @@ public class AddCommandTest extends RepositoryTestCase {
                writer.print("content b");
                writer.close();
 
-               Git git = new Git(db);
-               git.add().addFilepattern("sub").call();
+               try (Git git = new Git(db)) {
+                       git.add().addFilepattern("sub").call();
 
-               assertEquals(
-                               "[sub/a.txt, mode:100644, content:content]" +
-                               "[sub/b.txt, mode:100644, content:content b]",
-                               indexState(CONTENT));
+                       assertEquals(
+                                       "[sub/a.txt, mode:100644, content:content]" +
+                                       "[sub/b.txt, mode:100644, content:content b]",
+                                       indexState(CONTENT));
 
-               git.commit().setMessage("commit").call();
+                       git.commit().setMessage("commit").call();
 
-               // new unstaged file sub/c.txt
-               File file3 = new File(db.getWorkTree(), "sub/c.txt");
-               FileUtils.createNewFile(file3);
-               writer = new PrintWriter(file3);
-               writer.print("content c");
-               writer.close();
+                       // new unstaged file sub/c.txt
+                       File file3 = new File(db.getWorkTree(), "sub/c.txt");
+                       FileUtils.createNewFile(file3);
+                       writer = new PrintWriter(file3);
+                       writer.print("content c");
+                       writer.close();
 
-               // file sub/a.txt is modified
-               writer = new PrintWriter(file);
-               writer.print("modified content");
-               writer.close();
+                       // file sub/a.txt is modified
+                       writer = new PrintWriter(file);
+                       writer.print("modified content");
+                       writer.close();
 
-               FileUtils.delete(file2);
+                       FileUtils.delete(file2);
 
-               // change in sub/a.txt is staged
-               // deletion of sub/b.txt is staged
-               // sub/c.txt is not staged
-               git.add().addFilepattern("sub").setUpdate(true).call();
-               // change in sub/a.txt is staged
-               assertEquals(
-                               "[sub/a.txt, mode:100644, content:modified content]",
-                               indexState(CONTENT));
+                       // change in sub/a.txt is staged
+                       // deletion of sub/b.txt is staged
+                       // sub/c.txt is not staged
+                       git.add().addFilepattern("sub").setUpdate(true).call();
+                       // change in sub/a.txt is staged
+                       assertEquals(
+                                       "[sub/a.txt, mode:100644, content:modified content]",
+                                       indexState(CONTENT));
+               }
        }
 
        @Test
        public void testAssumeUnchanged() throws Exception {
-               Git git = new Git(db);
-               String path = "a.txt";
-               writeTrashFile(path, "content");
-               git.add().addFilepattern(path).call();
-               String path2 = "b.txt";
-               writeTrashFile(path2, "content");
-               git.add().addFilepattern(path2).call();
-               git.commit().setMessage("commit").call();
-               assertEquals("[a.txt, mode:100644, content:"
-                               + "content, assume-unchanged:false]"
-                               + "[b.txt, mode:100644, content:content, "
-                               + "assume-unchanged:false]", indexState(CONTENT
-                               | ASSUME_UNCHANGED));
-               assumeUnchanged(path2);
-               assertEquals("[a.txt, mode:100644, content:content, "
-                               + "assume-unchanged:false][b.txt, mode:100644, "
-                               + "content:content, assume-unchanged:true]", indexState(CONTENT
-                               | ASSUME_UNCHANGED));
-               writeTrashFile(path, "more content");
-               writeTrashFile(path2, "more content");
-
-               git.add().addFilepattern(".").call();
-
-               assertEquals("[a.txt, mode:100644, content:more content,"
-                               + " assume-unchanged:false][b.txt, mode:100644,"
- + "" + ""
-                               + " content:content, assume-unchanged:true]",
-                               indexState(CONTENT
-                               | ASSUME_UNCHANGED));
+               try (Git git = new Git(db)) {
+                       String path = "a.txt";
+                       writeTrashFile(path, "content");
+                       git.add().addFilepattern(path).call();
+                       String path2 = "b.txt";
+                       writeTrashFile(path2, "content");
+                       git.add().addFilepattern(path2).call();
+                       git.commit().setMessage("commit").call();
+                       assertEquals("[a.txt, mode:100644, content:"
+                                       + "content, assume-unchanged:false]"
+                                       + "[b.txt, mode:100644, content:content, "
+                                       + "assume-unchanged:false]", indexState(CONTENT
+                                       | ASSUME_UNCHANGED));
+                       assumeUnchanged(path2);
+                       assertEquals("[a.txt, mode:100644, content:content, "
+                                       + "assume-unchanged:false][b.txt, mode:100644, "
+                                       + "content:content, assume-unchanged:true]", indexState(CONTENT
+                                       | ASSUME_UNCHANGED));
+                       writeTrashFile(path, "more content");
+                       writeTrashFile(path2, "more content");
+
+                       git.add().addFilepattern(".").call();
+
+                       assertEquals("[a.txt, mode:100644, content:more content,"
+                                       + " assume-unchanged:false][b.txt, mode:100644,"
+                                       + "" + ""
+                                       + " content:content, assume-unchanged:true]",
+                                       indexState(CONTENT
+                                       | ASSUME_UNCHANGED));
+               }
        }
 
        @Test