summaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
authorFlorian Zschocke <florian.zschocke@cycos.com>2013-08-17 18:37:41 +0200
committerFlorian Zschocke <florian.zschocke@cycos.com>2013-08-26 12:39:57 +0200
commit8a67d9dcdcc63fe48c97e83ffbc2a643eee2ed60 (patch)
tree8cf0d00752a912e0e13a8a93c0b68e1a5fbac5ee /src/test
parent69007029f122c3f77db044e879188cc12be3c2f6 (diff)
downloadgitblit-8a67d9dcdcc63fe48c97e83ffbc2a643eee2ed60.tar.gz
gitblit-8a67d9dcdcc63fe48c97e83ffbc2a643eee2ed60.zip
Add proper implementation of methods in JnaUtils.
Implement the methods getFilemode and setFilemode in JnaUtils. Not using the libc names as we don't necessarily use JNA and because it is not necessarily a one to one mapping.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/gitblit/tests/JGitUtilsTest.java21
-rw-r--r--src/test/java/com/gitblit/tests/JnaUtilsTest.java100
2 files changed, 121 insertions, 0 deletions
diff --git a/src/test/java/com/gitblit/tests/JGitUtilsTest.java b/src/test/java/com/gitblit/tests/JGitUtilsTest.java
index 375dbd5a..4affca2d 100644
--- a/src/test/java/com/gitblit/tests/JGitUtilsTest.java
+++ b/src/test/java/com/gitblit/tests/JGitUtilsTest.java
@@ -149,6 +149,27 @@ public class JGitUtilsTest {
}
@Test
+ public void testCreateRepositoryShared() throws Exception {
+ String[] repositories = { "NewTestRepository.git", "NewTestRepository" };
+ for (String repositoryName : repositories) {
+ Repository repository = JGitUtils.createRepository(GitBlitSuite.REPOSITORIES,
+ repositoryName, "group");
+ File folder = FileKey.resolve(new File(GitBlitSuite.REPOSITORIES, repositoryName),
+ FS.DETECTED);
+ assertNotNull(repository);
+ assertFalse(JGitUtils.hasCommits(repository));
+ assertNull(JGitUtils.getFirstCommit(repository, null));
+ assertEquals(folder.lastModified(), JGitUtils.getFirstChange(repository, null)
+ .getTime());
+ assertEquals(folder.lastModified(), JGitUtils.getLastChange(repository).when.getTime());
+ assertNull(JGitUtils.getCommit(repository, null));
+ repository.close();
+ RepositoryCache.close(repository);
+// FileUtils.delete(repository.getDirectory(), FileUtils.RECURSIVE);
+ }
+ }
+
+ @Test
public void testRefs() throws Exception {
Repository repository = GitBlitSuite.getJGitRepository();
Map<ObjectId, List<RefModel>> map = JGitUtils.getAllRefs(repository);
diff --git a/src/test/java/com/gitblit/tests/JnaUtilsTest.java b/src/test/java/com/gitblit/tests/JnaUtilsTest.java
new file mode 100644
index 00000000..574686ba
--- /dev/null
+++ b/src/test/java/com/gitblit/tests/JnaUtilsTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.tests;
+
+import com.gitblit.utils.JGitUtils;
+import com.gitblit.utils.JnaUtils;
+import java.io.File;
+import java.io.IOException;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.commons.io.FileUtils;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.lib.RepositoryCache;
+import org.eclipse.jgit.lib.RepositoryCache.FileKey;
+import org.eclipse.jgit.util.FS;
+import org.junit.Test;
+
+/**
+ *
+ * @author Florian Zschocke
+ */
+public class JnaUtilsTest {
+
+ @Test
+ public void testGetFilemode() throws IOException {
+ String repositoryName = "NewJnaTestRepository.git";
+ Repository repository = JGitUtils.createRepository(GitBlitSuite.REPOSITORIES, repositoryName);
+ File folder = FileKey.resolve(new File(GitBlitSuite.REPOSITORIES, repositoryName), FS.DETECTED);
+ assertTrue(folder.exists());
+
+ int mode = JnaUtils.getFilemode(folder);
+ assertTrue(mode > 0);
+ assertEquals(JnaUtils.S_IFDIR, (mode & JnaUtils.S_IFMT)); // directory
+ assertEquals(JnaUtils.S_IRUSR | JnaUtils.S_IWUSR | JnaUtils.S_IXUSR, (mode & JnaUtils.S_IRWXU)); // owner full access
+
+ mode = JnaUtils.getFilemode(folder.getAbsolutePath() + "/config");
+ assertTrue(mode > 0);
+ assertEquals(JnaUtils.S_IFREG, (mode & JnaUtils.S_IFMT)); // directory
+ assertEquals(JnaUtils.S_IRUSR | JnaUtils.S_IWUSR, (mode & JnaUtils.S_IRWXU)); // owner full access
+
+ repository.close();
+ RepositoryCache.close(repository);
+ FileUtils.deleteDirectory(repository.getDirectory());
+ }
+
+
+ @Test
+ public void testSetFilemode() throws IOException {
+ String repositoryName = "NewJnaTestRepository.git";
+ Repository repository = JGitUtils.createRepository(GitBlitSuite.REPOSITORIES, repositoryName);
+ File folder = FileKey.resolve(new File(GitBlitSuite.REPOSITORIES, repositoryName), FS.DETECTED);
+ assertTrue(folder.exists());
+
+ File path = new File(folder, "refs");
+ int mode = JnaUtils.getFilemode(path);
+ assertTrue(mode > 0);
+ assertEquals(JnaUtils.S_IFDIR, (mode & JnaUtils.S_IFMT)); // directory
+ assertEquals(JnaUtils.S_IRUSR | JnaUtils.S_IWUSR | JnaUtils.S_IXUSR, (mode & JnaUtils.S_IRWXU)); // owner full access
+
+ mode |= JnaUtils.S_ISGID;
+ mode |= JnaUtils.S_IRWXG;
+ int ret = JnaUtils.setFilemode(path, mode);
+ assertEquals(0, ret);
+ mode = JnaUtils.getFilemode(path);
+ assertTrue(mode > 0);
+ assertEquals(JnaUtils.S_ISGID, (mode & JnaUtils.S_ISGID)); // set-gid-bit set
+ assertEquals(JnaUtils.S_IRGRP | JnaUtils.S_IWGRP | JnaUtils.S_IXGRP, (mode & JnaUtils.S_IRWXG)); // group full access
+
+ path = new File(folder, "config");
+ mode = JnaUtils.getFilemode(path.getAbsolutePath());
+ assertTrue(mode > 0);
+ assertEquals(JnaUtils.S_IFREG, (mode & JnaUtils.S_IFMT)); // directory
+ assertEquals(JnaUtils.S_IRUSR | JnaUtils.S_IWUSR, (mode & JnaUtils.S_IRWXU)); // owner full access
+
+ mode |= (JnaUtils.S_IRGRP | JnaUtils.S_IWGRP);
+ ret = JnaUtils.setFilemode(path.getAbsolutePath(), mode);
+ assertEquals(0, ret);
+ mode = JnaUtils.getFilemode(path.getAbsolutePath());
+ assertTrue(mode > 0);
+ assertEquals(JnaUtils.S_IRGRP | JnaUtils.S_IWGRP, (mode & JnaUtils.S_IRWXG)); // group full access
+
+ repository.close();
+ RepositoryCache.close(repository);
+ FileUtils.deleteDirectory(repository.getDirectory());
+ }
+}