From: "Shawn O. Pearce" <spearce@spearce.org>
To: Brandon Casey <casey@nrlssc.navy.mil>,
Robin Rosenberg <robin.rosenberg@dewire.com>
Cc: git@vger.kernel.org
Subject: [JGIT PATCH v2 1/2] Add support for boolean config values "on", "off"
Date: Thu, 7 May 2009 11:01:47 -0700 [thread overview]
Message-ID: <20090507180147.GT30527@spearce.org> (raw)
In-Reply-To: <eOxTQ_L3wmawK8rFbXMLnksiI7lh8eiyptpquFGaI28e3RO7dN9GMw@cipher.nrlssc.navy.mil>
In 8f8c6fafd92f (shipped in 1.6.3) Linus taught C Git how to read
boolean configuration values set to "on" as true and "off" as false.
Add support for these values, and some test cases.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
Brandon Casey <casey@nrlssc.navy.mil> wrote:
> Shawn O. Pearce wrote:
> > In 8f8c6fafd92f (shipped in 1.6.3) Linus taught C Git how to read
> > boolean configuration values set to "yes" as true and "no" as false.
> > Add support for these values, and some test cases.
>
> Linus added support for "on" and "off" in that commit as it appears
> your commit is also doing. :)
Whoops, good catch, thanks.
> I was about to point out that you are not ignoring case for "on", but
> using equalsIgnoreCase() appears to be unnecessary since above that
> you are already doing n = n.toLowerCase().
I dropped the toLowerCase and used equalsIgnoreCase instead.
There is no reason to be allocating a copy of the string when
equalsIgnorCase is sufficient.
.../org/spearce/jgit/lib/RepositoryConfigTest.java | 70 ++++++++++++++++++--
.../src/org/spearce/jgit/lib/RepositoryConfig.java | 14 +++-
2 files changed, 74 insertions(+), 10 deletions(-)
diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryConfigTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryConfigTest.java
index 4b5314c..ed573e1 100644
--- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryConfigTest.java
+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/RepositoryConfigTest.java
@@ -57,9 +57,7 @@
* @throws IOException
*/
public void test001_ReadBareKey() throws IOException {
- final File path = writeTrashFile("config_001", "[foo]\nbar\n");
- RepositoryConfig repositoryConfig = new RepositoryConfig(null, path);
- System.out.println(repositoryConfig.getString("foo", null, "bar"));
+ final RepositoryConfig repositoryConfig = read("[foo]\nbar\n");
assertEquals(true, repositoryConfig.getBoolean("foo", null, "bar", false));
assertEquals("", repositoryConfig.getString("foo", null, "bar"));
}
@@ -70,8 +68,7 @@ public void test001_ReadBareKey() throws IOException {
* @throws IOException
*/
public void test002_ReadWithSubsection() throws IOException {
- final File path = writeTrashFile("config_002", "[foo \"zip\"]\nbar\n[foo \"zap\"]\nbar=false\nn=3\n");
- RepositoryConfig repositoryConfig = new RepositoryConfig(null, path);
+ final RepositoryConfig repositoryConfig = read("[foo \"zip\"]\nbar\n[foo \"zap\"]\nbar=false\nn=3\n");
assertEquals(true, repositoryConfig.getBoolean("foo", "zip", "bar", false));
assertEquals("", repositoryConfig.getString("foo","zip", "bar"));
assertEquals(false, repositoryConfig.getBoolean("foo", "zap", "bar", true));
@@ -113,8 +110,7 @@ assertTrue(Arrays.equals(values.toArray(), repositoryConfig
}
public void test006_readCaseInsensitive() throws IOException {
- final File path = writeTrashFile("config_001", "[Foo]\nBar\n");
- RepositoryConfig repositoryConfig = new RepositoryConfig(null, path);
+ final RepositoryConfig repositoryConfig = read("[Foo]\nBar\n");
assertEquals(true, repositoryConfig.getBoolean("foo", null, "bar", false));
assertEquals("", repositoryConfig.getString("foo", null, "bar"));
}
@@ -182,4 +178,64 @@ public void test007_readUserInfos() throws IOException {
assertEquals("local username", authorName);
assertEquals("author@localemail", authorEmail);
}
+
+ public void testReadBoolean_TrueFalse1() throws IOException {
+ final RepositoryConfig c = read("[s]\na = true\nb = false\n");
+ assertEquals("true", c.getString("s", null, "a"));
+ assertEquals("false", c.getString("s", null, "b"));
+
+ assertTrue(c.getBoolean("s", "a", false));
+ assertFalse(c.getBoolean("s", "b", true));
+ }
+
+ public void testReadBoolean_TrueFalse2() throws IOException {
+ final RepositoryConfig c = read("[s]\na = TrUe\nb = fAlSe\n");
+ assertEquals("TrUe", c.getString("s", null, "a"));
+ assertEquals("fAlSe", c.getString("s", null, "b"));
+
+ assertTrue(c.getBoolean("s", "a", false));
+ assertFalse(c.getBoolean("s", "b", true));
+ }
+
+ public void testReadBoolean_YesNo1() throws IOException {
+ final RepositoryConfig c = read("[s]\na = yes\nb = no\n");
+ assertEquals("yes", c.getString("s", null, "a"));
+ assertEquals("no", c.getString("s", null, "b"));
+
+ assertTrue(c.getBoolean("s", "a", false));
+ assertFalse(c.getBoolean("s", "b", true));
+ }
+
+ public void testReadBoolean_YesNo2() throws IOException {
+ final RepositoryConfig c = read("[s]\na = yEs\nb = NO\n");
+ assertEquals("yEs", c.getString("s", null, "a"));
+ assertEquals("NO", c.getString("s", null, "b"));
+
+ assertTrue(c.getBoolean("s", "a", false));
+ assertFalse(c.getBoolean("s", "b", true));
+ }
+
+ public void testReadBoolean_OnOff1() throws IOException {
+ final RepositoryConfig c = read("[s]\na = on\nb = off\n");
+ assertEquals("on", c.getString("s", null, "a"));
+ assertEquals("off", c.getString("s", null, "b"));
+
+ assertTrue(c.getBoolean("s", "a", false));
+ assertFalse(c.getBoolean("s", "b", true));
+ }
+
+ public void testReadBoolean_OnOff2() throws IOException {
+ final RepositoryConfig c = read("[s]\na = ON\nb = OFF\n");
+ assertEquals("ON", c.getString("s", null, "a"));
+ assertEquals("OFF", c.getString("s", null, "b"));
+
+ assertTrue(c.getBoolean("s", "a", false));
+ assertFalse(c.getBoolean("s", "b", true));
+ }
+
+ private RepositoryConfig read(final String content) throws IOException {
+ final File p = writeTrashFile(getName() + ".config", content);
+ final RepositoryConfig c = new RepositoryConfig(null, p);
+ return c;
+ }
}
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/RepositoryConfig.java b/org.spearce.jgit/src/org/spearce/jgit/lib/RepositoryConfig.java
index cb287ee..b816604 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/RepositoryConfig.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/RepositoryConfig.java
@@ -253,11 +253,19 @@ public boolean getBoolean(final String section, String subsection,
if (n == null)
return defaultValue;
- n = n.toLowerCase();
- if (MAGIC_EMPTY_VALUE.equals(n) || "yes".equalsIgnoreCase(n) || "true".equalsIgnoreCase(n) || "1".equals(n)) {
+ if (MAGIC_EMPTY_VALUE.equals(n)
+ || "yes".equalsIgnoreCase(n)
+ || "true".equalsIgnoreCase(n)
+ || "1".equals(n)
+ || "on".equalsIgnoreCase(n)) {
return true;
- } else if ("no".equalsIgnoreCase(n) || "false".equalsIgnoreCase(n) || "0".equalsIgnoreCase(n)) {
+
+ } else if ("no".equalsIgnoreCase(n)
+ || "false".equalsIgnoreCase(n)
+ || "0".equals(n)
+ || "off".equalsIgnoreCase(n)) {
return false;
+
} else {
throw new IllegalArgumentException("Invalid boolean value: "
+ section + "." + name + "=" + n);
--
1.6.3.195.gad81
prev parent reply other threads:[~2009-05-07 18:01 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-07 15:05 [JGIT PATCH 1/2] Add support for boolean config values "yes", "no" Shawn O. Pearce
2009-05-07 15:05 ` [JGIT PATCH 2/2] Make Repository.isValidRefName compatible with Git 1.6.3 Shawn O. Pearce
2009-05-07 23:02 ` Robin Rosenberg
2009-05-07 23:29 ` Linus Torvalds
2009-05-08 0:32 ` Junio C Hamano
2009-05-08 0:47 ` Shawn O. Pearce
2009-05-08 7:24 ` Alex Riesen
2009-05-08 8:04 ` Johannes Schindelin
2009-05-08 8:43 ` Junio C Hamano
2009-05-08 9:54 ` Johannes Schindelin
2009-05-08 11:45 ` Alex Riesen
2009-05-08 14:34 ` Shawn O. Pearce
[not found] ` <7viqkcbenb.fsf_-_@alter.siamese.dyndns.org>
2009-05-08 0:54 ` [PATCH] Allow branch names that end with ".lock" Shawn O. Pearce
2009-05-08 0:57 ` Junio C Hamano
2009-05-08 1:01 ` Shawn O. Pearce
2009-05-08 1:25 ` Junio C Hamano
2009-05-07 17:56 ` [JGIT PATCH 1/2] Add support for boolean config values "yes", "no" Brandon Casey
2009-05-07 18:01 ` Shawn O. Pearce [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090507180147.GT30527@spearce.org \
--to=spearce@spearce.org \
--cc=casey@nrlssc.navy.mil \
--cc=git@vger.kernel.org \
--cc=robin.rosenberg@dewire.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).