summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse
diff options
context:
space:
mode:
authorDave Borowitz <dborowitz@google.com>2017-12-21 08:41:52 -0500
committerDave Borowitz <dborowitz@google.com>2017-12-21 09:30:52 -0500
commitfa24425c608e0983580fa81743de9cfda9faac2e (patch)
tree336d1cf0c652540d492806dee65abb2c8a827227 /org.eclipse.jgit.test/tst/org/eclipse
parent2464fa440f7585154c591d3a12f6778026da40ff (diff)
downloadjgit-fa24425c608e0983580fa81743de9cfda9faac2e.tar.gz
jgit-fa24425c608e0983580fa81743de9cfda9faac2e.zip
Config: Match C git behavior more closely in escaping values
So this happened: $ git config -f foo.config foo.a 'x"y' $ git config -f foo.config foo.b x\\y $ git config -f foo.config foo.c $'x\ny' $ git config -f foo.config foo.d $'x\ty' $ git config -f foo.config foo.e $'x\by' $ cat foo.config [foo] a = x\"y b = x\\y c = x\ny d = x\ty e = y That last line is my shell interpreting the backspace byte: $ python -c 'print repr(open("foo.config").read())' '[foo]\n\ta = x\\"y\n\tb = x\\\\y\n\tc = x\\ny\n\td = x\\ty\n\te = x\x08y\n' Change-Id: I1b059e1afb544c39ddb587c07bf79a06e99d0a09
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java23
2 files changed, 18 insertions, 7 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java
index ab86bc2e27..aa50697172 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java
@@ -368,7 +368,7 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase {
+ "[user]\n"
+ " email = A U Thor <thor@example.com> # Just an example...\n"
+ " name = \"A Thor \\\\ \\\"\\t \"\n"
- + " defaultCheckInComment = \"a many line\\ncomment\\n to test\"\n";
+ + " defaultCheckInComment = a many line\\ncomment\\n to test\n";
assertEquals(expectedStr, new String(IO.readFully(cfg), Constants.CHARSET));
}
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 44714faa70..a952db764f 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
@@ -977,14 +977,25 @@ public class ConfigTest {
}
@Test
- public void testEscapeSpecialCharacters() throws ConfigInvalidException {
+ public void testNoEscapeSpecialCharacters() throws ConfigInvalidException {
+ assertValueRoundTrip("x\\y", "x\\\\y");
+ assertValueRoundTrip("x\"y", "x\\\"y");
+ assertValueRoundTrip("x\ny", "x\\ny");
+ assertValueRoundTrip("x\ty", "x\\ty");
+ assertValueRoundTrip("x\by", "x\\by");
+ }
+
+ @Test
+ public void testParseLiteralBackspace() throws ConfigInvalidException {
+ // This is round-tripped with an escape sequence by JGit, but C git writes
+ // it out as a literal backslash.
+ assertEquals("x\by", parseEscapedValue("x\by"));
+ }
+
+ @Test
+ public void testEscapeCommentCharacters() throws ConfigInvalidException {
assertValueRoundTrip("x#y", "\"x#y\"");
assertValueRoundTrip("x;y", "\"x;y\"");
- assertValueRoundTrip("x\\y", "\"x\\\\y\"");
- assertValueRoundTrip("x\"y", "\"x\\\"y\"");
- assertValueRoundTrip("x\ny", "\"x\\ny\"");
- assertValueRoundTrip("x\ty", "\"x\\ty\"");
- assertValueRoundTrip("x\by", "\"x\\by\"");
}
@Test