From b9f850a79bee8dae7a53afc292ce7342e32f321e Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Thu, 4 Jun 2015 11:48:46 -0700 Subject: [PATCH] Config: Allow ending a file with "=" and no newline This is a perfectly valid construction according to C git: $ echo -en '[a]\nx =' > foo.config $ git config -f foo.config a.x; echo $? 0 Change-Id: Icfcf8304adb43c79e2b8b998f8d651b2a94f6acb --- .../tst/org/eclipse/jgit/lib/ConfigTest.java | 9 +++++++++ org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java | 2 -- 2 files changed, 9 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 73e8a041ba..b90a0c4671 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 @@ -726,6 +726,15 @@ public class ConfigTest { assertArrayEquals(new String[]{""}, c.getStringList("a", null, "x")); } + @Test + public void testEmptyValueAtEof() throws Exception { + String text = "[a]\nx ="; + Config c = parse(text); + assertEquals("", c.getString("a", null, "x")); + c = parse(text + "\n"); + assertEquals("", c.getString("a", null, "x")); + } + private static void assertReadLong(long exp) throws ConfigInvalidException { assertReadLong(exp, String.valueOf(exp)); } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java index fff82a32fa..16953bb340 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java @@ -1200,8 +1200,6 @@ public class Config { for (;;) { int c = in.read(); if (c < 0) { - if (value.length() == 0) - throw new ConfigInvalidException(JGitText.get().unexpectedEndOfConfigFile); break; } -- 2.39.5