aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit
diff options
context:
space:
mode:
authorRobin Rosenberg <robin.rosenberg@dewire.com>2014-04-26 10:55:42 +0200
committerRobin Rosenberg <robin.rosenberg@dewire.com>2014-04-27 10:35:21 +0200
commit6605255d9906c5277d215396ebcc395484b9f10c (patch)
tree76476317d92fcee58cd5b6b3f7d6ebc178169560 /org.eclipse.jgit.test/tst/org/eclipse/jgit
parent8923e67a1680d3a5fd7766cdce90d07bae1a407a (diff)
downloadjgit-6605255d9906c5277d215396ebcc395484b9f10c.tar.gz
jgit-6605255d9906c5277d215396ebcc395484b9f10c.zip
Add methods to Repository to handle remote names
Instead of requiring the caller to know how to list remote names or parse remote branch names, add a few utilities for that. Change-Id: Ib6b2403532f4abbce594a03c0b9da49d30b19f70 Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java
index 26c4d12cc0..f2ed684511 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RefTest.java
@@ -58,9 +58,11 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;
+import java.util.TreeSet;
import org.eclipse.jgit.lib.Ref.Storage;
import org.eclipse.jgit.lib.RefUpdate.Result;
+import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.test.resources.SampleDataRepositoryTestCase;
import org.junit.Test;
@@ -83,6 +85,50 @@ public class RefTest extends SampleDataRepositoryTestCase {
}
@Test
+ public void testRemoteNames() throws Exception {
+ FileBasedConfig config = db.getConfig();
+ config.setBoolean(ConfigConstants.CONFIG_REMOTE_SECTION,
+ "origin", "dummy", true);
+ config.setBoolean(ConfigConstants.CONFIG_REMOTE_SECTION,
+ "ab/c", "dummy", true);
+ config.save();
+ assertEquals("[ab/c, origin]",
+ new TreeSet<String>(db.getRemoteNames()).toString());
+
+ // one-level deep remote branch
+ assertEquals("master",
+ db.shortenRemoteBranchName("refs/remotes/origin/master"));
+ assertEquals("origin", db.getRemoteName("refs/remotes/origin/master"));
+
+ // two-level deep remote branch
+ assertEquals("masta/r",
+ db.shortenRemoteBranchName("refs/remotes/origin/masta/r"));
+ assertEquals("origin", db.getRemoteName("refs/remotes/origin/masta/r"));
+
+ // Remote with slash and one-level deep branch name
+ assertEquals("xmaster",
+ db.shortenRemoteBranchName("refs/remotes/ab/c/xmaster"));
+ assertEquals("ab/c", db.getRemoteName("refs/remotes/ab/c/xmaster"));
+
+ // Remote with slash and two-level deep branch name
+ assertEquals("xmasta/r",
+ db.shortenRemoteBranchName("refs/remotes/ab/c/xmasta/r"));
+ assertEquals("ab/c", db.getRemoteName("refs/remotes/ab/c/xmasta/r"));
+
+ // no such remote
+ assertNull(db.getRemoteName("refs/remotes/nosuchremote/x"));
+ assertNull(db.shortenRemoteBranchName("refs/remotes/nosuchremote/x"));
+
+ // no such remote too, no branch name either
+ assertNull(db.getRemoteName("refs/remotes/abranch"));
+ assertNull(db.shortenRemoteBranchName("refs/remotes/abranch"));
+
+ // // local branch
+ assertNull(db.getRemoteName("refs/heads/abranch"));
+ assertNull(db.shortenRemoteBranchName("refs/heads/abranch"));
+ }
+
+ @Test
public void testReadAllIncludingSymrefs() throws Exception {
ObjectId masterId = db.resolve("refs/heads/master");
RefUpdate updateRef = db.updateRef("refs/remotes/origin/master");