aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org
diff options
context:
space:
mode:
authorYuxuan 'fishy' Wang <fishywang@google.com>2014-03-24 12:40:04 -0700
committerYuxuan 'fishy' Wang <fishywang@google.com>2014-04-23 23:03:00 -0700
commita44a687fedbf1559277b8e6706819aa9be7bce39 (patch)
treeb4a58e15a30d58d09246a89aa3d8d9da433c381b /org.eclipse.jgit.test/tst/org
parent1f3b75c9ee5a0ae09ecba136a8048e67107f5d1b (diff)
downloadjgit-a44a687fedbf1559277b8e6706819aa9be7bce39.tar.gz
jgit-a44a687fedbf1559277b8e6706819aa9be7bce39.zip
Added groups support to repo subcommand.
Change-Id: Id0e7663b6ac4f6938fdcacaf2158107b6285fc25 Signed-off-by: Yuxuan 'fishy' Wang <fishywang@google.com>
Diffstat (limited to 'org.eclipse.jgit.test/tst/org')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/RepoCommandTest.java124
1 files changed, 118 insertions, 6 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/RepoCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/RepoCommandTest.java
index 66067fc9ab..9fc59c578e 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/RepoCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/RepoCommandTest.java
@@ -43,6 +43,7 @@
package org.eclipse.jgit.gitrepo;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.BufferedReader;
@@ -57,16 +58,45 @@ import org.junit.Test;
public class RepoCommandTest extends RepositoryTestCase {
- private Repository remoteDb;
+ private Repository defaultDb;
+ private Repository notDefaultDb;
+ private Repository groupADb;
+ private Repository groupBDb;
+
+ private String rootUri;
+ private String defaultUri;
+ private String notDefaultUri;
+ private String groupAUri;
+ private String groupBUri;
public void setUp() throws Exception {
super.setUp();
- remoteDb = createWorkRepository();
- Git git = new Git(remoteDb);
- JGitTestUtil.writeTrashFile(remoteDb, "hello.txt", "world");
+ defaultDb = createWorkRepository();
+ Git git = new Git(defaultDb);
+ JGitTestUtil.writeTrashFile(defaultDb, "hello.txt", "world");
git.add().addFilepattern("hello.txt").call();
git.commit().setMessage("Initial commit").call();
+
+ notDefaultDb = createWorkRepository();
+ git = new Git(notDefaultDb);
+ JGitTestUtil.writeTrashFile(notDefaultDb, "world.txt", "hello");
+ git.add().addFilepattern("world.txt").call();
+ git.commit().setMessage("Initial commit").call();
+
+ groupADb = createWorkRepository();
+ git = new Git(groupADb);
+ JGitTestUtil.writeTrashFile(groupADb, "a.txt", "world");
+ git.add().addFilepattern("a.txt").call();
+ git.commit().setMessage("Initial commit").call();
+
+ groupBDb = createWorkRepository();
+ git = new Git(groupBDb);
+ JGitTestUtil.writeTrashFile(groupBDb, "b.txt", "world");
+ git.add().addFilepattern("b.txt").call();
+ git.commit().setMessage("Initial commit").call();
+
+ resolveRelativeUris();
}
@Test
@@ -76,12 +106,14 @@ public class RepoCommandTest extends RepositoryTestCase {
.append("<manifest>")
.append("<remote name=\"remote1\" fetch=\".\" />")
.append("<default revision=\"master\" remote=\"remote1\" />")
- .append("<project path=\"foo\" name=\".\" />")
+ .append("<project path=\"foo\" name=\"")
+ .append(defaultUri)
+ .append("\" />")
.append("</manifest>");
writeTrashFile("manifest.xml", xmlContent.toString());
RepoCommand command = new RepoCommand(db);
command.setPath(db.getWorkTree().getAbsolutePath() + "/manifest.xml")
- .setURI(remoteDb.getDirectory().toURI().toString())
+ .setURI(rootUri)
.call();
File hello = new File(db.getWorkTree(), "foo/hello.txt");
assertTrue("submodule was checked out", hello.exists());
@@ -90,4 +122,84 @@ public class RepoCommandTest extends RepositoryTestCase {
reader.close();
assertEquals("submodule content is as expected.", "world", content);
}
+
+ @Test
+ public void testRepoManifestGroups() throws Exception {
+ StringBuilder xmlContent = new StringBuilder();
+ xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
+ .append("<manifest>")
+ .append("<remote name=\"remote1\" fetch=\".\" />")
+ .append("<default revision=\"master\" remote=\"remote1\" />")
+ .append("<project path=\"foo\" name=\"")
+ .append(defaultUri)
+ .append("\" groups=\"a,test\" />")
+ .append("<project path=\"bar\" name=\"")
+ .append(notDefaultUri)
+ .append("\" groups=\"notdefault\" />")
+ .append("<project path=\"a\" name=\"")
+ .append(groupAUri)
+ .append("\" groups=\"a\" />")
+ .append("<project path=\"b\" name=\"")
+ .append(groupBUri)
+ .append("\" groups=\"b\" />")
+ .append("</manifest>");
+
+ // default should have foo, a & b
+ Repository localDb = createWorkRepository();
+ JGitTestUtil.writeTrashFile(localDb, "manifest.xml", xmlContent.toString());
+ RepoCommand command = new RepoCommand(localDb);
+ command.setPath(localDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
+ .setURI(rootUri)
+ .call();
+ File file = new File(localDb.getWorkTree(), "foo/hello.txt");
+ assertTrue("default has foo", file.exists());
+ file = new File(localDb.getWorkTree(), "bar/world.txt");
+ assertFalse("default doesn't have bar", file.exists());
+ file = new File(localDb.getWorkTree(), "a/a.txt");
+ assertTrue("default has a", file.exists());
+ file = new File(localDb.getWorkTree(), "b/b.txt");
+ assertTrue("default has b", file.exists());
+
+ // all,-a should have bar & b
+ localDb = createWorkRepository();
+ JGitTestUtil.writeTrashFile(localDb, "manifest.xml", xmlContent.toString());
+ command = new RepoCommand(localDb);
+ command.setPath(localDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
+ .setURI(rootUri)
+ .setGroups("all,-a")
+ .call();
+ file = new File(localDb.getWorkTree(), "foo/hello.txt");
+ assertFalse("\"all,-a\" doesn't have foo", file.exists());
+ file = new File(localDb.getWorkTree(), "bar/world.txt");
+ assertTrue("\"all,-a\" has bar", file.exists());
+ file = new File(localDb.getWorkTree(), "a/a.txt");
+ assertFalse("\"all,-a\" doesn't have a", file.exists());
+ file = new File(localDb.getWorkTree(), "b/b.txt");
+ assertTrue("\"all,-a\" has have b", file.exists());
+ }
+
+ private void resolveRelativeUris() {
+ // Find the longest common prefix ends with "/" as rootUri.
+ defaultUri = defaultDb.getDirectory().toURI().toString();
+ notDefaultUri = notDefaultDb.getDirectory().toURI().toString();
+ groupAUri = groupADb.getDirectory().toURI().toString();
+ groupBUri = groupBDb.getDirectory().toURI().toString();
+ int start = 0;
+ while (start <= defaultUri.length()) {
+ int newStart = defaultUri.indexOf('/', start + 1);
+ String prefix = defaultUri.substring(0, newStart);
+ if (!notDefaultUri.startsWith(prefix) ||
+ !groupAUri.startsWith(prefix) ||
+ !groupBUri.startsWith(prefix)) {
+ start++;
+ rootUri = defaultUri.substring(0, start);
+ defaultUri = defaultUri.substring(start);
+ notDefaultUri = notDefaultUri.substring(start);
+ groupAUri = groupAUri.substring(start);
+ groupBUri = groupBUri.substring(start);
+ return;
+ }
+ start = newStart;
+ }
+ }
}