Browse Source

Merge "Don't confuse empty configuration variables with booleans"

stable-0.7
Shawn Pearce 15 years ago committed by Code Review
parent
commit
6595ab1007
  1. 31
      org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryConfigTest.java
  2. 3
      org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java

31
org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/RepositoryConfigTest.java

@ -1,6 +1,6 @@
/* /*
* Copyright (C) 2007, Dave Watson <dwatson@mimvista.com> * Copyright (C) 2007, Dave Watson <dwatson@mimvista.com>
* Copyright (C) 2009, Google Inc. * Copyright (C) 2009-2010, Google Inc.
* Copyright (C) 2008, Marek Zawirski <marek.zawirski@gmail.com> * Copyright (C) 2008, Marek Zawirski <marek.zawirski@gmail.com>
* Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com> * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com>
* Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
@ -242,6 +242,35 @@ public class RepositoryConfigTest extends TestCase {
} }
} }
public void testBooleanWithNoValue() throws ConfigInvalidException {
Config c = parse("[my]\n\tempty\n");
assertEquals("", c.getString("my", null, "empty"));
assertEquals(1, c.getStringList("my", null, "empty").length);
assertEquals("", c.getStringList("my", null, "empty")[0]);
assertTrue(c.getBoolean("my", "empty", false));
assertEquals("[my]\n\tempty\n", c.toText());
}
public void testEmptyString() throws ConfigInvalidException {
Config c = parse("[my]\n\tempty =\n");
assertNull(c.getString("my", null, "empty"));
String[] values = c.getStringList("my", null, "empty");
assertNotNull(values);
assertEquals(1, values.length);
assertNull(values[0]);
// always matches the default, because its non-boolean
assertTrue(c.getBoolean("my", "empty", true));
assertFalse(c.getBoolean("my", "empty", false));
assertEquals("[my]\n\tempty =\n", c.toText());
c = new Config();
c.setStringList("my", null, "empty", Arrays.asList(values));
assertEquals("[my]\n\tempty =\n", c.toText());
}
private void assertReadLong(long exp) throws ConfigInvalidException { private void assertReadLong(long exp) throws ConfigInvalidException {
assertReadLong(exp, String.valueOf(exp)); assertReadLong(exp, String.valueOf(exp));
} }

3
org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java

@ -715,9 +715,10 @@ public class Config {
if (e.prefix == null || "".equals(e.prefix)) if (e.prefix == null || "".equals(e.prefix))
out.append('\t'); out.append('\t');
out.append(e.name); out.append(e.name);
if (e.value != null) {
if (MAGIC_EMPTY_VALUE != e.value) { if (MAGIC_EMPTY_VALUE != e.value) {
out.append(" ="); out.append(" =");
if (e.value != null) {
out.append(' ');
out.append(escapeValue(e.value)); out.append(escapeValue(e.value));
} }
} }

Loading…
Cancel
Save