]> source.dussan.org Git - jgit.git/commitdiff
RepositoryCacheTest: avoid to close already closed repository 11/89811/1
authorMatthias Sohn <matthias.sohn@sap.com>
Sat, 28 Jan 2017 20:19:55 +0000 (21:19 +0100)
committerMatthias Sohn <matthias.sohn@sap.com>
Sat, 28 Jan 2017 20:19:55 +0000 (21:19 +0100)
The tearDown() of the superclass closed the repository once more which
led to a negative use count warning logged by Repository.close().

Change-Id: I331f85a540c68264a53456276c32f72b79113d61
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/LocalDiskRepositoryTestCase.java
org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryCacheTest.java

index 42e201e932e48f8ce7f843b4279729aa257baec7..ceb0452350d8eda53d2d0cbed323c912f6e59285 100644 (file)
@@ -359,12 +359,32 @@ public abstract class LocalDiskRepositoryTestCase {
         * @throws IOException
         *             the repository could not be created in the temporary area
         */
-       private FileRepository createRepository(boolean bare) throws IOException {
+       private FileRepository createRepository(boolean bare)
+                       throws IOException {
+               return createRepository(bare, true);
+       }
+
+       /**
+        * Creates a new empty repository.
+        *
+        * @param bare
+        *            true to create a bare repository; false to make a repository
+        *            within its working directory
+        * @param autoClose
+        *            auto close the repository in #tearDown
+        * @return the newly created repository, opened for access
+        * @throws IOException
+        *             the repository could not be created in the temporary area
+        */
+       public FileRepository createRepository(boolean bare, boolean autoClose)
+                       throws IOException {
                File gitdir = createUniqueTestGitDir(bare);
                FileRepository db = new FileRepository(gitdir);
                assertFalse(gitdir.exists());
                db.create(bare);
-               addRepoToClose(db);
+               if (autoClose) {
+                       addRepoToClose(db);
+               }
                return db;
        }
 
index b44b4c34a7f74b6db311f59cad4eb32e8d5a97af..1107c2c69b807f7ccd7d6ce858883e8223f99d24 100644 (file)
@@ -109,7 +109,7 @@ public class RepositoryCacheTest extends RepositoryTestCase {
 
        @Test
        public void testFileKeyOpenNew() throws IOException {
-               final Repository n = createBareRepository();
+               final Repository n = createRepository(true, false);
                final File gitdir = n.getDirectory();
                n.close();
                recursiveDelete(gitdir);
@@ -187,12 +187,14 @@ public class RepositoryCacheTest extends RepositoryTestCase {
        }
 
        @Test
-       public void testRepositoryUsageCountWithRegisteredRepository() {
-               assertEquals(1, ((Repository) db).useCnt.get());
-               RepositoryCache.register(db);
-               assertEquals(1, ((Repository) db).useCnt.get());
-               db.close();
-               assertEquals(0, ((Repository) db).useCnt.get());
+       public void testRepositoryUsageCountWithRegisteredRepository()
+                       throws IOException {
+               Repository repo = createRepository(false, false);
+               assertEquals(1, repo.useCnt.get());
+               RepositoryCache.register(repo);
+               assertEquals(1, repo.useCnt.get());
+               repo.close();
+               assertEquals(0, repo.useCnt.get());
        }
 
        @Test
@@ -232,8 +234,8 @@ public class RepositoryCacheTest extends RepositoryTestCase {
 
        @Test
        public void testRepositoryUnregisteringWhenExpired() throws Exception {
-               Repository repoA = createBareRepository();
-               Repository repoB = createBareRepository();
+               Repository repoA = createRepository(true, false);
+               Repository repoB = createRepository(true, false);
                Repository repoC = createBareRepository();
                RepositoryCache.register(repoA);
                RepositoryCache.register(repoB);
@@ -265,11 +267,12 @@ public class RepositoryCacheTest extends RepositoryTestCase {
        }
 
        @Test
-       public void testReconfigure() throws InterruptedException {
-               RepositoryCache.register(db);
-               assertTrue(RepositoryCache.isCached(db));
-               db.close();
-               assertTrue(RepositoryCache.isCached(db));
+       public void testReconfigure() throws InterruptedException, IOException {
+               Repository repo = createRepository(false, false);
+               RepositoryCache.register(repo);
+               assertTrue(RepositoryCache.isCached(repo));
+               repo.close();
+               assertTrue(RepositoryCache.isCached(repo));
 
                // Actually, we would only need to validate that
                // WorkQueue.getExecutor().scheduleWithFixedDelay is called with proper
@@ -287,7 +290,7 @@ public class RepositoryCacheTest extends RepositoryTestCase {
                // This wait will time out after 2048 ms
                for (int i = 0; i <= 10; i++) {
                        Thread.sleep(1 << i);
-                       if (!RepositoryCache.isCached(db)) {
+                       if (!RepositoryCache.isCached(repo)) {
                                return;
                        }
                }