From c721a5d012ac3b841e1203ccd7fb60981a345c83 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 30 Oct 2012 17:28:28 -0400
Subject: [PATCH] Replaced fork icon

---
 tests/com/gitblit/tests/GitBlitSuite.java |   49 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/tests/com/gitblit/tests/GitBlitSuite.java b/tests/com/gitblit/tests/GitBlitSuite.java
index cab5b63..3527d58 100644
--- a/tests/com/gitblit/tests/GitBlitSuite.java
+++ b/tests/com/gitblit/tests/GitBlitSuite.java
@@ -16,11 +16,17 @@
 package com.gitblit.tests;
 
 import java.io.File;
+import java.lang.reflect.Field;
 import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
 
+import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.lib.RepositoryCache;
+import org.eclipse.jgit.lib.RepositoryCache.FileKey;
 import org.eclipse.jgit.storage.file.FileRepository;
+import org.eclipse.jgit.util.FS;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
@@ -49,11 +55,11 @@
 @RunWith(Suite.class)
 @SuiteClasses({ ArrayUtilsTest.class, FileUtilsTest.class, TimeUtilsTest.class,
 		StringUtilsTest.class, Base64Test.class, JsonUtilsTest.class, ByteFormatTest.class,
-		ObjectCacheTest.class, UserServiceTest.class, LdapUserServiceTest.class,
+		ObjectCacheTest.class, PermissionsTest.class, UserServiceTest.class, LdapUserServiceTest.class,
 		MarkdownUtilsTest.class, JGitUtilsTest.class, SyndicationUtilsTest.class,
 		DiffUtilsTest.class, MetricUtilsTest.class, TicgitUtilsTest.class,
 		GitBlitTest.class, FederationTests.class, RpcTests.class, GitServletTest.class,
-		GroovyScriptTest.class, LuceneExecutorTest.class, IssuesTest.class })
+		GroovyScriptTest.class, LuceneExecutorTest.class, IssuesTest.class, RepositoryModelTest.class })
 public class GitBlitSuite {
 
 	public static final File REPOSITORIES = new File("git");
@@ -101,6 +107,9 @@
 			// already started
 			return false;
 		}
+		
+		GitServletTest.deleteWorkingFolders();
+		
 		// Start a Gitblit instance
 		Executors.newSingleThreadExecutor().execute(new Runnable() {
 			public void run() {
@@ -123,7 +132,7 @@
 		GitBlitServer.main("--stop", "--shutdownPort", "" + shutdownPort);
 
 		// Wait a few seconds for it to be running
-		Thread.sleep(2500);
+		Thread.sleep(5000);
 	}
 
 	@BeforeClass
@@ -132,7 +141,7 @@
 
 		if (REPOSITORIES.exists() || REPOSITORIES.mkdirs()) {
 			cloneOrFetch("helloworld.git", "https://github.com/git/hello-world.git");
-			cloneOrFetch("ticgit.git", "https://github.com/jeffWelling/ticgit.git");
+			cloneOrFetch("ticgit.git", "https://github.com/schacon/ticgit.git");
 			cloneOrFetch("test/jgit.git", "https://github.com/eclipse/jgit.git");
 			cloneOrFetch("test/helloworld.git", "https://github.com/git/hello-world.git");
 			cloneOrFetch("test/ambition.git", "https://github.com/defunkt/ambition.git");
@@ -186,4 +195,36 @@
 			g.printStackTrace();
 		}
 	}
+	
+	public static void close(File repository) {
+		try {
+			File gitDir = FileKey.resolve(repository, FS.detect());
+			if (gitDir != null && gitDir.exists()) {
+				close(RepositoryCache.open(FileKey.exact(gitDir, FS.detect())));
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	public static void close(Git git) {
+		close(git.getRepository());
+	}
+	
+	public static void close(Repository r) {
+		RepositoryCache.close(r);
+
+		// assume 2 uses in case reflection fails
+		int uses = 2;
+		try {
+			Field useCnt = Repository.class.getDeclaredField("useCnt");
+			useCnt.setAccessible(true);
+			uses = ((AtomicInteger) useCnt.get(r)).get();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		for (int i = 0; i < uses; i++) {
+			r.close();
+		}
+	}
 }

--
Gitblit v1.9.1