Accept '-' instead of space in enum config values

This is necessary because some versions of JGit containing
the flawed c98abc9c05 were
used in the wild and wrote bad configuration files. We now
must accept this value in addition to the preferred case.

Change-Id: I3ed5451735658df6381532499130e5186805024a
This commit is contained in:
Shawn Pearce 2013-01-11 14:42:35 -08:00
parent 50eab4aa48
commit 912ef3da19
2 changed files with 7 additions and 1 deletions

View File

@ -290,7 +290,7 @@ public void testGetEnum() throws ConfigInvalidException {
c = parse("[s \"b\"]\n\tc = one two\n");
assertSame(TestEnum.ONE_TWO, c.getEnum("s", "b", "c", TestEnum.ONE_TWO));
c = parse("[s \"b\"]\n\tc = one two\n");
c = parse("[s \"b\"]\n\tc = one-two\n");
assertSame(TestEnum.ONE_TWO, c.getEnum("s", "b", "c", TestEnum.ONE_TWO));
}

View File

@ -388,6 +388,12 @@ public <T extends Enum<?>> T getEnum(final T[] all, final String section,
return defaultValue;
String n = value.replace(' ', '_');
// Because of c98abc9c0586c73ef7df4172644b7dd21c979e9d being used in
// the real world before its breakage was fully understood, we must
// also accept '-' as though it were ' '.
n = n.replace('-', '_');
T trueState = null;
T falseState = null;
for (T e : all) {