summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.pgm.test
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.pgm.test')
-rw-r--r--org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/RepoTest.java96
1 files changed, 83 insertions, 13 deletions
diff --git a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/RepoTest.java b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/RepoTest.java
index 72e85fa641..bfff14d9dd 100644
--- a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/RepoTest.java
+++ b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/RepoTest.java
@@ -43,6 +43,7 @@
package org.eclipse.jgit.pgm;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.BufferedReader;
@@ -57,17 +58,47 @@ import org.junit.Before;
import org.junit.Test;
public class RepoTest extends CLIRepositoryTestCase {
- 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;
@Override
@Before
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
@@ -77,20 +108,59 @@ public class RepoTest extends CLIRepositoryTestCase {
.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("\" 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>");
writeTrashFile("manifest.xml", xmlContent.toString());
StringBuilder cmd = new StringBuilder("git repo --base-uri=\"")
- .append(remoteDb.getDirectory().toURI().toString())
- .append("\" \"")
+ .append(rootUri)
+ .append("\" --groups=\"all,-a\" \"")
.append(db.getWorkTree().getAbsolutePath())
.append("/manifest.xml\"");
execute(cmd.toString());
- File hello = new File(db.getWorkTree(), "foo/hello.txt");
- assertTrue("submodule was checked out.", hello.exists());
- BufferedReader reader = new BufferedReader(new FileReader(hello));
- String content = reader.readLine();
- reader.close();
- assertEquals("submodule content is as expected.", "world", content);
+
+ File file = new File(db.getWorkTree(), "foo/hello.txt");
+ assertFalse("\"all,-a\" doesn't have foo", file.exists());
+ file = new File(db.getWorkTree(), "bar/world.txt");
+ assertTrue("\"all,-a\" has bar", file.exists());
+ file = new File(db.getWorkTree(), "a/a.txt");
+ assertFalse("\"all,-a\" doesn't have a", file.exists());
+ file = new File(db.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;
+ }
}
}