From f76fee63ed9cb3a30d3c0c092d860b1cb93a481b Mon Sep 17 00:00:00 2001 From: Gerard Smyth <gerard.smyth@gmail.com> Date: Thu, 08 May 2014 13:09:30 -0400 Subject: [PATCH] Updated the SyndicationServlet to provide an additional option to return details of the tags in the repository instead of the commits. This uses a new 'ot' request parameter to indicate the object type of the content to return, which can be ither TAG or COMMIT. If this is not provided, then COMMIT is assumed to maintain backwards compatability. If tags are returned, then the paging parameters, 'l' and 'pg' are still supported, but searching options are currently ignored. --- src/test/java/com/gitblit/tests/JGitUtilsTest.java | 115 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 93 insertions(+), 22 deletions(-) diff --git a/src/test/java/com/gitblit/tests/JGitUtilsTest.java b/src/test/java/com/gitblit/tests/JGitUtilsTest.java index cdf698d..68cb4f8 100644 --- a/src/test/java/com/gitblit/tests/JGitUtilsTest.java +++ b/src/test/java/com/gitblit/tests/JGitUtilsTest.java @@ -15,12 +15,6 @@ */ package com.gitblit.tests; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - import java.io.File; import java.io.FileOutputStream; import java.text.SimpleDateFormat; @@ -37,6 +31,10 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.RepositoryCache; import org.eclipse.jgit.lib.RepositoryCache.FileKey; +import org.eclipse.jgit.revplot.PlotCommit; +import org.eclipse.jgit.revplot.PlotCommitList; +import org.eclipse.jgit.revplot.PlotLane; +import org.eclipse.jgit.revplot.PlotWalk; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevTree; import org.eclipse.jgit.util.FS; @@ -44,8 +42,6 @@ import org.junit.Test; import com.gitblit.Constants.SearchType; -import com.gitblit.GitBlit; -import com.gitblit.Keys; import com.gitblit.models.GitNote; import com.gitblit.models.PathModel; import com.gitblit.models.PathModel.PathChangeModel; @@ -55,7 +51,7 @@ import com.gitblit.utils.JnaUtils; import com.gitblit.utils.StringUtils; -public class JGitUtilsTest { +public class JGitUtilsTest extends GitblitUnitTest { @Test public void testDisplayName() throws Exception { @@ -219,6 +215,70 @@ } @Test + public void testCreateRepositorySharedSgidParent() throws Exception { + if (! JnaUtils.isWindows()) { + String repositoryAll = "NewTestRepositoryAll.git"; + String repositoryUmask = "NewTestRepositoryUmask.git"; + String sgidParent = "sgid"; + + File parent = new File(GitBlitSuite.REPOSITORIES, sgidParent); + File folder = null; + boolean parentExisted = parent.exists(); + try { + if (!parentExisted) { + assertTrue("Could not create SGID parent folder.", parent.mkdir()); + } + int mode = JnaUtils.getFilemode(parent); + assertTrue(mode > 0); + assertEquals(0, JnaUtils.setFilemode(parent, mode | JnaUtils.S_ISGID | JnaUtils.S_IWGRP)); + + Repository repository = JGitUtils.createRepository(parent, repositoryAll, "all"); + folder = FileKey.resolve(new File(parent, repositoryAll), FS.DETECTED); + assertNotNull(repository); + + assertEquals("2", repository.getConfig().getString("core", null, "sharedRepository")); + + assertTrue(folder.exists()); + mode = JnaUtils.getFilemode(folder); + assertEquals(JnaUtils.S_ISGID, mode & JnaUtils.S_ISGID); + + mode = JnaUtils.getFilemode(folder.getAbsolutePath() + "/HEAD"); + assertEquals(JnaUtils.S_IRGRP | JnaUtils.S_IWGRP, mode & JnaUtils.S_IRWXG); + assertEquals(JnaUtils.S_IROTH, mode & JnaUtils.S_IRWXO); + + mode = JnaUtils.getFilemode(folder.getAbsolutePath() + "/config"); + assertEquals(JnaUtils.S_IRGRP | JnaUtils.S_IWGRP, mode & JnaUtils.S_IRWXG); + assertEquals(JnaUtils.S_IROTH, mode & JnaUtils.S_IRWXO); + + repository.close(); + RepositoryCache.close(repository); + + + + repository = JGitUtils.createRepository(parent, repositoryUmask, "umask"); + folder = FileKey.resolve(new File(parent, repositoryUmask), FS.DETECTED); + assertNotNull(repository); + + assertEquals(null, repository.getConfig().getString("core", null, "sharedRepository")); + + assertTrue(folder.exists()); + mode = JnaUtils.getFilemode(folder); + assertEquals(JnaUtils.S_ISGID, mode & JnaUtils.S_ISGID); + + repository.close(); + RepositoryCache.close(repository); + } + finally { + FileUtils.delete(new File(parent, repositoryAll), FileUtils.RECURSIVE | FileUtils.IGNORE_ERRORS); + FileUtils.delete(new File(parent, repositoryUmask), FileUtils.RECURSIVE | FileUtils.IGNORE_ERRORS); + if (!parentExisted) { + FileUtils.delete(parent, FileUtils.RECURSIVE | FileUtils.IGNORE_ERRORS); + } + } + } + } + + @Test public void testRefs() throws Exception { Repository repository = GitBlitSuite.getJGitRepository(); Map<ObjectId, List<RefModel>> map = JGitUtils.getAllRefs(repository); @@ -304,7 +364,7 @@ assertEquals("183474d554e6f68478a02d9d7888b67a9338cdff", list.get(0).notesRef .getReferencedObjectId().getName()); } - + @Test public void testRelinkHEAD() throws Exception { Repository repository = GitBlitSuite.getJGitRepository(); @@ -313,7 +373,7 @@ assertEquals("refs/heads/master", currentRef); List<String> availableHeads = JGitUtils.getAvailableHeadTargets(repository); assertTrue(availableHeads.size() > 0); - + // set HEAD to stable-1.2 JGitUtils.setHEADtoRef(repository, "refs/heads/stable-1.2"); currentRef = JGitUtils.getHEADRef(repository); @@ -323,19 +383,19 @@ JGitUtils.setHEADtoRef(repository, "refs/heads/master"); currentRef = JGitUtils.getHEADRef(repository); assertEquals("refs/heads/master", currentRef); - + repository.close(); } @Test public void testRelinkBranch() throws Exception { Repository repository = GitBlitSuite.getJGitRepository(); - + // create/set the branch JGitUtils.setBranchRef(repository, "refs/heads/reftest", "3b358ce514ec655d3ff67de1430994d8428cdb04"); assertEquals(1, JGitUtils.getAllRefs(repository).get(ObjectId.fromString("3b358ce514ec655d3ff67de1430994d8428cdb04")).size()); assertEquals(null, JGitUtils.getAllRefs(repository).get(ObjectId.fromString("755dfdb40948f5c1ec79e06bde3b0a78c352f27f"))); - + // reset the branch JGitUtils.setBranchRef(repository, "refs/heads/reftest", "755dfdb40948f5c1ec79e06bde3b0a78c352f27f"); assertEquals(null, JGitUtils.getAllRefs(repository).get(ObjectId.fromString("3b358ce514ec655d3ff67de1430994d8428cdb04"))); @@ -360,6 +420,11 @@ String contentA = JGitUtils.getStringContent(repository, (RevTree) null, "java.java"); RevCommit commit = JGitUtils.getCommit(repository, Constants.HEAD); String contentB = JGitUtils.getStringContent(repository, commit.getTree(), "java.java"); + + assertTrue("ContentA is null!", contentA != null && contentA.length() > 0); + assertTrue("ContentB is null!", contentB != null && contentB.length() > 0); + assertTrue(contentA.equals(contentB)); + String contentC = JGitUtils.getStringContent(repository, commit.getTree(), "missing.txt"); // manually construct a blob, calculate the hash, lookup the hash in git @@ -369,9 +434,6 @@ String sha1 = StringUtils.getSHA1(sb.toString()); String contentD = JGitUtils.getStringContent(repository, sha1); repository.close(); - assertTrue("ContentA is null!", contentA != null && contentA.length() > 0); - assertTrue("ContentB is null!", contentB != null && contentB.length() > 0); - assertTrue(contentA.equals(contentB)); assertNull(contentC); assertTrue(contentA.equals(contentD)); } @@ -416,14 +478,11 @@ @Test public void testDocuments() throws Exception { Repository repository = GitBlitSuite.getTicgitRepository(); - List<String> extensions = GitBlit.getStrings(Keys.web.markdownExtensions); + List<String> extensions = Arrays.asList(new String[] { ".mkd", ".md" }); List<PathModel> markdownDocs = JGitUtils.getDocuments(repository, extensions); - List<PathModel> markdownDocs2 = JGitUtils.getDocuments(repository, - Arrays.asList(new String[] { ".mkd", ".md" })); List<PathModel> allFiles = JGitUtils.getDocuments(repository, null); repository.close(); assertTrue(markdownDocs.size() > 0); - assertTrue(markdownDocs2.size() > 0); assertTrue(allFiles.size() > markdownDocs.size()); } @@ -461,7 +520,7 @@ // grab the commits since 2008-07-15 commits = JGitUtils.getRevLog(repository, null, new SimpleDateFormat("yyyy-MM-dd").parse("2008-07-15")); - assertEquals(12, commits.size()); + assertEquals(19, commits.size()); repository.close(); } @@ -539,4 +598,16 @@ zipFileB.delete(); } + @Test + public void testPlots() throws Exception { + Repository repository = GitBlitSuite.getTicgitRepository(); + PlotWalk pw = new PlotWalk(repository); + PlotCommitList<PlotLane> commits = new PlotCommitList<PlotLane>(); + commits.source(pw); + commits.fillTo(25); + for (PlotCommit<PlotLane> commit : commits) { + System.out.println(commit); + } + repository.close(); + } } \ No newline at end of file -- Gitblit v1.9.1