From c2188a840bc4153ae92112b04b2e06a90d3944aa Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Wed, 27 Apr 2016 18:58:06 -0400
Subject: [PATCH] Ticket Reference handling #1048

---
 src/test/java/com/gitblit/tests/GitBlitSuite.java |  151 +++++++++++++++++++++++++++++---------------------
 1 files changed, 88 insertions(+), 63 deletions(-)

diff --git a/src/test/java/com/gitblit/tests/GitBlitSuite.java b/src/test/java/com/gitblit/tests/GitBlitSuite.java
index b0179c3..133be77 100644
--- a/src/test/java/com/gitblit/tests/GitBlitSuite.java
+++ b/src/test/java/com/gitblit/tests/GitBlitSuite.java
@@ -25,7 +25,7 @@
 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.storage.file.FileRepositoryBuilder;
 import org.eclipse.jgit.util.FS;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -33,74 +33,98 @@
 import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
-import com.gitblit.GitBlit;
 import com.gitblit.GitBlitException;
 import com.gitblit.GitBlitServer;
+import com.gitblit.manager.IRepositoryManager;
 import com.gitblit.models.RepositoryModel;
+import com.gitblit.servlet.GitblitContext;
 import com.gitblit.utils.JGitUtils;
 
 /**
  * The GitBlitSuite uses test-gitblit.properties and test-users.conf. The suite
  * is fairly comprehensive for all lower-level functionality. Wicket pages are
  * currently not unit-tested.
- * 
+ *
  * This suite starts a Gitblit server instance within the same JVM instance as
  * the unit tests. This allows the unit tests to access the GitBlit static
  * singleton while also being able to communicate with the instance via tcp/ip
  * for testing rpc requests, federation requests, and git servlet operations.
- * 
+ *
  * @author James Moger
- * 
+ *
  */
 @RunWith(Suite.class)
 @SuiteClasses({ ArrayUtilsTest.class, FileUtilsTest.class, TimeUtilsTest.class,
 		StringUtilsTest.class, Base64Test.class, JsonUtilsTest.class, ByteFormatTest.class,
-		ObjectCacheTest.class, PermissionsTest.class, UserServiceTest.class, LdapUserServiceTest.class,
+		UserModelTest.class, UserChoiceTest.class,
+		ObjectCacheTest.class, PermissionsTest.class, UserServiceTest.class, LdapAuthenticationTest.class,
 		MarkdownUtilsTest.class, JGitUtilsTest.class, SyndicationUtilsTest.class,
-		DiffUtilsTest.class, MetricUtilsTest.class, TicgitUtilsTest.class, X509UtilsTest.class,
-		GitBlitTest.class, FederationTests.class, RpcTests.class, GitServletTest.class,
-		GroovyScriptTest.class, LuceneExecutorTest.class, IssuesTest.class, RepositoryModelTest.class,
-		FanoutServiceTest.class })
+		DiffUtilsTest.class, MetricUtilsTest.class, X509UtilsTest.class,
+		GitBlitTest.class, FederationTests.class, RpcTests.class, GitServletTest.class, GitDaemonTest.class,
+		SshDaemonTest.class, GroovyScriptTest.class, LuceneExecutorTest.class, RepositoryModelTest.class,
+		FanoutServiceTest.class, Issue0259Test.class, Issue0271Test.class, HtpasswdAuthenticationTest.class,
+		ModelUtilsTest.class, JnaUtilsTest.class, LdapSyncServiceTest.class, FileTicketServiceTest.class,
+		BranchTicketServiceTest.class, RedisTicketServiceTest.class, AuthenticationManagerTest.class,
+		SshKeysDispatcherTest.class, UITicketTest.class, PathUtilsTest.class, SshKerberosAuthenticationTest.class,
+		GravatarTest.class, FilestoreManagerTest.class, FilestoreServletTest.class, TicketReferenceTest.class })
 public class GitBlitSuite {
+
+	public static final File BASEFOLDER = new File("data");
 
 	public static final File REPOSITORIES = new File("data/git");
 
+	public static final File SETTINGS = new File("src/test/config/test-gitblit.properties");
+
+	public static final File USERSCONF = new File("src/test/config/test-users.conf");
+
 	static int port = 8280;
+	static int gitPort = 8300;
 	static int shutdownPort = 8281;
+	static int sshPort = 39418;
 
 	public static String url = "http://localhost:" + port;
+	public static String gitServletUrl = "http://localhost:" + port + "/git";
+	public static String gitDaemonUrl = "git://localhost:" + gitPort;
+	public static String sshDaemonUrl = "ssh://admin@localhost:" + sshPort;
 	public static String account = "admin";
 	public static String password = "admin";
 
 	private static AtomicBoolean started = new AtomicBoolean(false);
 
-	public static Repository getHelloworldRepository() throws Exception {
-		return new FileRepository(new File(REPOSITORIES, "helloworld.git"));
+	public static Repository getHelloworldRepository() {
+		return getRepository("helloworld.git");
 	}
 
-	public static Repository getTicgitRepository() throws Exception {
-		return new FileRepository(new File(REPOSITORIES, "ticgit.git"));
+	public static Repository getTicgitRepository() {
+		return getRepository("ticgit.git");
 	}
 
-	public static Repository getJGitRepository() throws Exception {
-		return new FileRepository(new File(REPOSITORIES, "test/jgit.git"));
+	public static Repository getJGitRepository() {
+		return getRepository("test/jgit.git");
 	}
 
-	public static Repository getAmbitionRepository() throws Exception {
-		return new FileRepository(new File(REPOSITORIES, "test/ambition.git"));
+	public static Repository getAmbitionRepository() {
+		return getRepository("test/ambition.git");
 	}
 
-	public static Repository getTheoreticalPhysicsRepository() throws Exception {
-		return new FileRepository(new File(REPOSITORIES, "test/theoretical-physics.git"));
+	public static Repository getGitectiveRepository() {
+		return getRepository("test/gitective.git");
 	}
 
-	public static Repository getIssuesTestRepository() throws Exception {
-		JGitUtils.createRepository(REPOSITORIES, "gb-issues.git").close();
-		return new FileRepository(new File(REPOSITORIES, "gb-issues.git"));
+	public static Repository getTicketsTestRepository() {
+		JGitUtils.createRepository(REPOSITORIES, "gb-tickets.git").close();
+		return getRepository("gb-tickets.git");
 	}
-	
-	public static Repository getGitectiveRepository() throws Exception {
-		return new FileRepository(new File(REPOSITORIES, "test/gitective.git"));
+
+	private static Repository getRepository(String name) {
+		try {
+			File gitDir = FileKey.resolve(new File(REPOSITORIES, name), FS.DETECTED);
+			Repository repository = new FileRepositoryBuilder().setGitDir(gitDir).build();
+			return repository;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
 	}
 
 	public static boolean startGitblit() throws Exception {
@@ -108,22 +132,28 @@
 			// already started
 			return false;
 		}
-		
+
 		GitServletTest.deleteWorkingFolders();
-		
+
 		// Start a Gitblit instance
 		Executors.newSingleThreadExecutor().execute(new Runnable() {
+			@Override
 			public void run() {
-				GitBlitServer.main("--httpPort", "" + port, "--httpsPort", "0", "--shutdownPort",
-						"" + shutdownPort, "--repositoriesFolder",
-						"\"" + GitBlitSuite.REPOSITORIES.getAbsolutePath() + "\"", "--userService",
-						"test-users.conf", "--settings", "test-gitblit.properties",
+				GitBlitServer.main(
+						"--httpPort", "" + port,
+						"--httpsPort", "0",
+						"--shutdownPort", "" + shutdownPort,
+						"--gitPort", "" + gitPort,
+						"--sshPort", "" + sshPort,
+						"--repositoriesFolder", GitBlitSuite.REPOSITORIES.getAbsolutePath(),
+						"--userService", GitBlitSuite.USERSCONF.getAbsolutePath(),
+						"--settings", GitBlitSuite.SETTINGS.getAbsolutePath(),
 						"--baseFolder", "data");
 			}
 		});
 
 		// Wait a few seconds for it to be running
-		Thread.sleep(2500);
+		Thread.sleep(5000);
 
 		started.set(true);
 		return true;
@@ -147,13 +177,12 @@
 			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");
-			cloneOrFetch("test/theoretical-physics.git", "https://github.com/certik/theoretical-physics.git");
 			cloneOrFetch("test/gitective.git", "https://github.com/kevinsawicki/gitective.git");
-			
-			enableTickets("ticgit.git");
-			enableDocs("ticgit.git");
+
 			showRemoteBranches("ticgit.git");
+			automaticallyTagBranchTips("ticgit.git");
 			showRemoteBranches("test/jgit.git");
+			automaticallyTagBranchTips("test/jgit.git");
 		}
 	}
 
@@ -164,40 +193,36 @@
 
 	private static void cloneOrFetch(String name, String fromUrl) throws Exception {
 		System.out.print("Fetching " + name + "... ");
-		JGitUtils.cloneRepository(REPOSITORIES, name, fromUrl);
+		try {
+			JGitUtils.cloneRepository(REPOSITORIES, name, fromUrl);
+		} catch (Throwable t) {
+			System.out.println("Error: " + t.getMessage());
+		}
 		System.out.println("done.");
-	}
-
-	private static void enableTickets(String repositoryName) {
-		try {
-			RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
-			model.useTickets = true;
-			GitBlit.self().updateRepositoryModel(model.name, model, false);
-		} catch (GitBlitException g) {
-			g.printStackTrace();
-		}
-	}
-
-	private static void enableDocs(String repositoryName) {
-		try {
-			RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
-			model.useDocs = true;
-			GitBlit.self().updateRepositoryModel(model.name, model, false);
-		} catch (GitBlitException g) {
-			g.printStackTrace();
-		}
 	}
 
 	private static void showRemoteBranches(String repositoryName) {
 		try {
-			RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
+			IRepositoryManager repositoryManager = GitblitContext.getManager(IRepositoryManager.class);
+			RepositoryModel model = repositoryManager.getRepositoryModel(repositoryName);
 			model.showRemoteBranches = true;
-			GitBlit.self().updateRepositoryModel(model.name, model, false);
+			repositoryManager.updateRepositoryModel(model.name, model, false);
 		} catch (GitBlitException g) {
 			g.printStackTrace();
 		}
 	}
-	
+
+	private static void automaticallyTagBranchTips(String repositoryName) {
+		try {
+			IRepositoryManager repositoryManager = GitblitContext.getManager(IRepositoryManager.class);
+			RepositoryModel model = repositoryManager.getRepositoryModel(repositoryName);
+			model.useIncrementalPushTags = true;
+			repositoryManager.updateRepositoryModel(model.name, model, false);
+		} catch (GitBlitException g) {
+			g.printStackTrace();
+		}
+	}
+
 	public static void close(File repository) {
 		try {
 			File gitDir = FileKey.resolve(repository, FS.detect());
@@ -208,11 +233,11 @@
 			e.printStackTrace();
 		}
 	}
-	
+
 	public static void close(Git git) {
 		close(git.getRepository());
 	}
-	
+
 	public static void close(Repository r) {
 		RepositoryCache.close(r);
 

--
Gitblit v1.9.1