aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
authorThomas Wolf <thomas.wolf@paranor.ch>2021-03-10 19:26:39 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2021-05-26 00:38:00 +0200
commit1126f26d21b3aadf364af09c79d27d39de5e9bb9 (patch)
tree5e733d0115cc4ed604de370b917149ecd8a45e17 /org.eclipse.jgit.test
parent2a0295ccfd1cf8dcb1067575f38c86f430285cda (diff)
downloadjgit-1126f26d21b3aadf364af09c79d27d39de5e9bb9.tar.gz
jgit-1126f26d21b3aadf364af09c79d27d39de5e9bb9.zip
ApplyCommand: fix "no newline at end" detection
Check the last line of the last hunk of a file, not the last line of the whole patch. Note that C git only checks that this line starts with "\ " and is at least 12 characters long because of possible different texts when non- English messages are used. Change-Id: I0db81699eb3e99ed7b536a3e2b8dc97df1f58a89 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello.patch16
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello_PostImage1
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello_PreImage1
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ApplyCommandTest.java20
4 files changed, 37 insertions, 1 deletions
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello.patch b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello.patch
new file mode 100644
index 0000000000..f015a38062
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello.patch
@@ -0,0 +1,16 @@
+diff --git a/hello b/hello
+index b6fc4c6..0abaeaa 100644
+--- a/hello
++++ b/hello
+@@ -1 +1 @@
+-hello
+\ No newline at end of file
++bye
+\ No newline at end of file
+diff --git a/yello b/yello
+index 391a8cb..d1ed081 100644
+--- a/yello
++++ b/yello
+@@ -1 +1 @@
+-yello
++yellow
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello_PostImage b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello_PostImage
new file mode 100644
index 0000000000..0abaeaa993
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello_PostImage
@@ -0,0 +1 @@
+bye \ No newline at end of file
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello_PreImage b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello_PreImage
new file mode 100644
index 0000000000..b6fc4c620b
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/hello_PreImage
@@ -0,0 +1 @@
+hello \ No newline at end of file
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ApplyCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ApplyCommandTest.java
index 807b961300..867310b60c 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ApplyCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ApplyCommandTest.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import org.eclipse.jgit.api.errors.PatchApplyException;
@@ -251,6 +252,11 @@ public class ApplyCommandTest extends RepositoryTestCase {
private void checkBinary(String name, boolean hasPreImage)
throws Exception {
+ checkBinary(name, hasPreImage, 1);
+ }
+
+ private void checkBinary(String name, boolean hasPreImage,
+ int numberOfFiles) throws Exception {
try (Git git = new Git(db)) {
byte[] post = IO
.readWholeStream(getTestResource(name + "_PostImage"), 0)
@@ -266,7 +272,7 @@ public class ApplyCommandTest extends RepositoryTestCase {
}
ApplyResult result = git.apply()
.setPatch(getTestResource(name + ".patch")).call();
- assertEquals(1, result.getUpdatedFiles().size());
+ assertEquals(numberOfFiles, result.getUpdatedFiles().size());
assertEquals(f, result.getUpdatedFiles().get(0));
assertArrayEquals(post, Files.readAllBytes(f.toPath()));
}
@@ -304,6 +310,18 @@ public class ApplyCommandTest extends RepositoryTestCase {
}
@Test
+ public void testMultiFileNoNewline() throws Exception {
+ // This test needs two files. One is in the test resources.
+ try (Git git = new Git(db)) {
+ Files.write(db.getWorkTree().toPath().resolve("yello"),
+ "yello".getBytes(StandardCharsets.US_ASCII));
+ git.add().addFilepattern("yello").call();
+ git.commit().setMessage("yello").call();
+ }
+ checkBinary("hello", true, 2);
+ }
+
+ @Test
public void testAddA1() throws Exception {
ApplyResult result = init("A1", false, true);
assertEquals(1, result.getUpdatedFiles().size());