From 78dc06a87f82ed19e3eebe1f16dc6c1bdaf5fbc5 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 31 Jan 2012 09:35:30 -0500 Subject: [PATCH] Merge pull request #6 from lemval/master --- tests/com/gitblit/tests/GitBlitSuite.java | 105 ++++++++++++++++++++++++++++------------------------ 1 files changed, 57 insertions(+), 48 deletions(-) diff --git a/tests/com/gitblit/tests/GitBlitSuite.java b/tests/com/gitblit/tests/GitBlitSuite.java index a2ab3e8..71947e1 100644 --- a/tests/com/gitblit/tests/GitBlitSuite.java +++ b/tests/com/gitblit/tests/GitBlitSuite.java @@ -17,23 +17,43 @@ import java.io.File; import java.util.concurrent.Executors; - -import junit.extensions.TestSetup; -import junit.framework.Test; -import junit.framework.TestSuite; +import java.util.concurrent.atomic.AtomicBoolean; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.storage.file.FileRepository; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; -import com.gitblit.ConfigUserService; -import com.gitblit.FileSettings; import com.gitblit.GitBlit; import com.gitblit.GitBlitException; import com.gitblit.GitBlitServer; import com.gitblit.models.RepositoryModel; import com.gitblit.utils.JGitUtils; -public class GitBlitSuite extends TestSetup { +/** + * 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, UserServiceTest.class, MarkdownUtilsTest.class, JGitUtilsTest.class, + SyndicationUtilsTest.class, DiffUtilsTest.class, MetricUtilsTest.class, + TicgitUtilsTest.class, GitBlitTest.class, FederationTests.class, RpcTests.class, + GitServletTest.class, GroovyScriptTest.class }) +public class GitBlitSuite { public static final File REPOSITORIES = new File("git"); @@ -44,30 +64,7 @@ public static String account = "admin"; public static String password = "admin"; - private GitBlitSuite(TestSuite suite) { - super(suite); - } - - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTestSuite(FileUtilsTest.class); - suite.addTestSuite(TimeUtilsTest.class); - suite.addTestSuite(StringUtilsTest.class); - suite.addTestSuite(Base64Test.class); - suite.addTestSuite(JsonUtilsTest.class); - suite.addTestSuite(ByteFormatTest.class); - suite.addTestSuite(ObjectCacheTest.class); - suite.addTestSuite(UserServiceTest.class); - suite.addTestSuite(MarkdownUtilsTest.class); - suite.addTestSuite(JGitUtilsTest.class); - suite.addTestSuite(SyndicationUtilsTest.class); - suite.addTestSuite(DiffUtilsTest.class); - suite.addTestSuite(MetricUtilsTest.class); - suite.addTestSuite(TicgitUtilsTest.class); - suite.addTestSuite(GitBlitTest.class); - suite.addTestSuite(RpcTests.class); - return new GitBlitSuite(suite); - } + private static AtomicBoolean started = new AtomicBoolean(false); public static Repository getHelloworldRepository() throws Exception { return new FileRepository(new File(REPOSITORIES, "helloworld.git")); @@ -85,19 +82,34 @@ return new FileRepository(new File(REPOSITORIES, "test/bluez-gnome.git")); } - public static void startGitblit() throws Exception { + public static Repository getAmbitionRepository() throws Exception { + return new FileRepository(new File(REPOSITORIES, "test/ambition.git")); + } + + public static Repository getTheoreticalPhysicsRepository() throws Exception { + return new FileRepository(new File(REPOSITORIES, "test/theoretical-physics.git")); + } + + public static boolean startGitblit() throws Exception { + if (started.get()) { + // already started + return false; + } // Start a Gitblit instance Executors.newSingleThreadExecutor().execute(new Runnable() { public void run() { GitBlitServer.main("--httpPort", "" + port, "--httpsPort", "0", "--shutdownPort", "" + shutdownPort, "--repositoriesFolder", "\"" + GitBlitSuite.REPOSITORIES.getAbsolutePath() + "\"", "--userService", - "distrib/users.conf"); + "test-users.conf", "--settings", "test-gitblit.properties"); } }); // Wait a few seconds for it to be running Thread.sleep(2500); + + started.set(true); + return true; } public static void stopGitblit() throws Exception { @@ -108,12 +120,9 @@ Thread.sleep(2500); } - @Override - protected void setUp() throws Exception { - FileSettings settings = new FileSettings("distrib/gitblit.properties"); - GitBlit.self().configureContext(settings, true); - ConfigUserService loginService = new ConfigUserService(new File("distrib/users.conf")); - GitBlit.self().setUserService(loginService); + @BeforeClass + public static void setUp() throws Exception { + startGitblit(); if (REPOSITORIES.exists() || REPOSITORIES.mkdirs()) { cloneOrFetch("helloworld.git", "https://github.com/git/hello-world.git"); @@ -122,28 +131,28 @@ "https://git.kernel.org/pub/scm/bluetooth/bluez-gnome.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"); + cloneOrFetch("test/theoretical-physics.git", "https://github.com/certik/theoretical-physics.git"); + enableTickets("ticgit.git"); enableDocs("ticgit.git"); showRemoteBranches("ticgit.git"); showRemoteBranches("test/jgit.git"); } - - startGitblit(); } - @Override - protected void tearDown() throws Exception { + @AfterClass + public static void tearDown() throws Exception { stopGitblit(); } - private void cloneOrFetch(String name, String fromUrl) throws Exception { + private static void cloneOrFetch(String name, String fromUrl) throws Exception { System.out.print("Fetching " + name + "... "); JGitUtils.cloneRepository(REPOSITORIES, name, fromUrl); System.out.println("done."); } - private void enableTickets(String repositoryName) { + private static void enableTickets(String repositoryName) { try { RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName); model.useTickets = true; @@ -153,7 +162,7 @@ } } - private void enableDocs(String repositoryName) { + private static void enableDocs(String repositoryName) { try { RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName); model.useDocs = true; @@ -163,7 +172,7 @@ } } - private void showRemoteBranches(String repositoryName) { + private static void showRemoteBranches(String repositoryName) { try { RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName); model.showRemoteBranches = true; -- Gitblit v1.9.1