summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2011-01-06 10:45:25 -0800
committerShawn O. Pearce <spearce@spearce.org>2011-01-06 11:13:45 -0800
commitb2d528887c087fd9c63eaa3ab291d19e81d24b36 (patch)
treedfd62df0979a704d37f4f56dbac6870a922e2443 /org.eclipse.jgit.test/tst/org/eclipse/jgit
parent7cd812940d25a78f71467ede0b2637211b2a12a1 (diff)
downloadjgit-b2d528887c087fd9c63eaa3ab291d19e81d24b36.tar.gz
jgit-b2d528887c087fd9c63eaa3ab291d19e81d24b36.zip
Config: Preserve existing case of names in sections
When an application asks for the names in a section, it may want to see the existing case that was stored by the user. For example, Gerrit Code Review wants to store a configuration block like: [access "refs/heads/master"] label-Code-Review = group Developers and although the name label-Code-Review is case-insensitive, it wants to display the case as it appeared in the configuration file. When enumerating section names or variable names (both of which are case-insensitive), Config now keeps track of the string that first appeared, and presents them in file order, permitting applications to use this information. To maintain case-insensitive behavior, the contains() method of the returned Set<String> still performs a case-insensitive compare. This is a behavior change if the caller enumerates the returned Set<String> and copies it to his own Set<String>, and then performs contains() tests against that, as the strings are now the original case from the configuration block. But I don't think anyone actually does this, as the returned sets are immutable and are cached. Change-Id: Ie4e060ef7772958b2062679e462c34c506371740 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java17
1 files changed, 15 insertions, 2 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 8737b697cc..d5da16ad80 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
@@ -58,6 +58,7 @@ import static org.junit.Assert.fail;
import java.text.MessageFormat;
import java.util.Arrays;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.Set;
@@ -386,13 +387,25 @@ public class ConfigTest {
@Test
public void test009_readNamesInSection() throws ConfigInvalidException {
- String configString = "[core]\n" + "repositoryformatversion = 0\n"
- + "filemode = false\n" + "logallrefupdates = true\n";
+ String configString = "[core]\n" + "repositoryFormatVersion = 0\n"
+ + "filemode = false\n" + "logAllRefUpdates = true\n";
final Config c = parse(configString);
Set<String> names = c.getNames("core");
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 \"repositoryformatversion\"",
+ names.contains("repositoryformatversion"));
+
+ Iterator<String> itr = names.iterator();
+ assertEquals("repositoryFormatVersion", itr.next());
+ assertEquals("filemode", itr.next());
+ assertEquals("logAllRefUpdates", itr.next());
+ assertFalse(itr.hasNext());
}
@Test