aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2013-12-01 01:19:35 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2013-12-06 14:27:42 +0100
commit2e0d178855dd1485c3a9022243c50e8917a909ee (patch)
treed010e18f5aafd85c95f431af43e0119a72038d5f /org.eclipse.jgit.test
parent162a5c4c89b289af3755a2f26843cdf908e93c50 (diff)
downloadjgit-2e0d178855dd1485c3a9022243c50e8917a909ee.tar.gz
jgit-2e0d178855dd1485c3a9022243c50e8917a909ee.zip
Add recursive variant of Config.getNames() methods
These methods allow to find all configuration entry names for a given section or section/subsection searching recursively through all base configurations of the given configuration. These methods are needed to calculate the names for the effective configuration of a git repository which combines the configuration entry names found in the repository, global and system configuration files Bug: 396659 Change-Id: Ie3731b5e877f8686aadad3f1a46b2e583ad3b7c6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java56
1 files changed, 55 insertions, 1 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
index 6ebef6cbf9..630bd7dc0d 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
@@ -520,6 +520,31 @@ public class ConfigTest {
}
@Test
+ public void test_ReadNamesInSectionRecursive()
+ throws ConfigInvalidException {
+ String baseConfigString = "[core]\n" + "logAllRefUpdates = true\n";
+ String configString = "[core]\n" + "repositoryFormatVersion = 0\n"
+ + "filemode = false\n";
+ final Config c = parse(configString, parse(baseConfigString));
+ Set<String> names = c.getNames("core", true);
+ assertEquals("Core section size", 3, names.size());
+ assertTrue("Core section should contain \"filemode\"",
+ names.contains("filemode"));
+ assertTrue("Core section should contain \"repositoryFormatVersion\"",
+ names.contains("repositoryFormatVersion"));
+ assertTrue("Core section should contain \"logAllRefUpdates\"",
+ names.contains("logAllRefUpdates"));
+ assertTrue("Core section should contain \"logallrefupdates\"",
+ names.contains("logallrefupdates"));
+
+ Iterator<String> itr = names.iterator();
+ assertEquals("filemode", itr.next());
+ assertEquals("repositoryFormatVersion", itr.next());
+ assertEquals("logAllRefUpdates", itr.next());
+ assertFalse(itr.hasNext());
+ }
+
+ @Test
public void test010_readNamesInSubSection() throws ConfigInvalidException {
String configString = "[a \"sub1\"]\n"//
+ "x = 0\n" //
@@ -541,6 +566,30 @@ public class ConfigTest {
}
@Test
+ public void readNamesInSubSectionRecursive() throws ConfigInvalidException {
+ String baseConfigString = "[a \"sub1\"]\n"//
+ + "x = 0\n" //
+ + "y = false\n"//
+ + "[a \"sub2\"]\n"//
+ + "A=0\n";//
+ String configString = "[a \"sub1\"]\n"//
+ + "z = true\n"//
+ + "[a \"sub2\"]\n"//
+ + "B=1\n";
+ final Config c = parse(configString, parse(baseConfigString));
+ Set<String> names = c.getNames("a", "sub1", true);
+ assertEquals("Subsection size", 3, names.size());
+ assertTrue("Subsection should contain \"x\"", names.contains("x"));
+ assertTrue("Subsection should contain \"y\"", names.contains("y"));
+ assertTrue("Subsection should contain \"z\"", names.contains("z"));
+ names = c.getNames("a", "sub2", true);
+ assertEquals("Subsection size", 2, names.size());
+ assertTrue("Subsection should contain \"A\"", names.contains("A"));
+ assertTrue("Subsection should contain \"a\"", names.contains("a"));
+ assertTrue("Subsection should contain \"B\"", names.contains("B"));
+ }
+
+ @Test
public void testQuotingForSubSectionNames() {
String resultPattern = "[testsection \"{0}\"]\n\ttestname = testvalue\n";
String result;
@@ -584,7 +633,12 @@ public class ConfigTest {
private static Config parse(final String content)
throws ConfigInvalidException {
- final Config c = new Config(null);
+ return parse(content, null);
+ }
+
+ private static Config parse(final String content, Config baseConfig)
+ throws ConfigInvalidException {
+ final Config c = new Config(baseConfig);
c.fromText(content);
return c;
}