summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A1.patch9
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A1_PostImage3
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A2.patch10
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A2_PostImage3
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/D.patch9
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/D_PreImage3
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F1.patch4
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F1_PreImage25
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F2.patch8
-rw-r--r--org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F2_PreImage25
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ApplyCommandTest.java191
11 files changed, 290 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A1.patch b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A1.patch
new file mode 100644
index 0000000000..7ddab882c7
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A1.patch
@@ -0,0 +1,9 @@
+diff --git a/A1 b/A1
+new file mode 100644
+index 0000000..de98044
+--- /dev/null
++++ b/A1
+@@ -0,0 +1,3 @@
++a
++b
++c \ No newline at end of file
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A1_PostImage b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A1_PostImage
new file mode 100644
index 0000000000..de980441c3
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A1_PostImage
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A2.patch b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A2.patch
new file mode 100644
index 0000000000..83869ce395
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A2.patch
@@ -0,0 +1,10 @@
+diff --git a/A2 b/A2
+new file mode 100644
+index 0000000..de98044
+--- /dev/null
++++ b/A2
+@@ -0,0 +1,3 @@
++a
++b
++c
+\ No newline at end of file \ No newline at end of file
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A2_PostImage b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A2_PostImage
new file mode 100644
index 0000000000..1c943a9888
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/A2_PostImage
@@ -0,0 +1,3 @@
+a
+b
+c \ No newline at end of file
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/D.patch b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/D.patch
new file mode 100644
index 0000000000..f7db127865
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/D.patch
@@ -0,0 +1,9 @@
+diff --git a/D b/D
+deleted file mode 100644
+index a3648a1..0000000
+--- a/D
++++ /dev/null
+@@ -1,3 +0,0 @@
+-a
+-b
+-c
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/D_PreImage b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/D_PreImage
new file mode 100644
index 0000000000..de980441c3
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/D_PreImage
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F1.patch b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F1.patch
new file mode 100644
index 0000000000..526d381dad
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F1.patch
@@ -0,0 +1,4 @@
+@@ -2,2 +2,3 @@ a
+ b
++c
+ d
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F1_PreImage b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F1_PreImage
new file mode 100644
index 0000000000..a3648a1eba
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F1_PreImage
@@ -0,0 +1,25 @@
+a
+b
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F2.patch b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F2.patch
new file mode 100644
index 0000000000..9930e5dbe0
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F2.patch
@@ -0,0 +1,8 @@
+diff --git a/F2 b/F2
+index a3648a1..2d44096 100644
+--- a/F2
++++ b/F2
+@@ -2,2 +2,3 @@ a
+ B
++c
+ d
diff --git a/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F2_PreImage b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F2_PreImage
new file mode 100644
index 0000000000..a3648a1eba
--- /dev/null
+++ b/org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/diff/F2_PreImage
@@ -0,0 +1,25 @@
+a
+b
+d
+e
+f
+g
+h
+i
+j
+k
+l
+m
+n
+o
+p
+q
+r
+s
+t
+u
+v
+w
+x
+y
+z
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
new file mode 100644
index 0000000000..dceb0ec697
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/ApplyCommandTest.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2011, 2012, Tomasz Zarna <Tomasz.Zarna@pl.ibm.com>
+ * and other copyright owners as documented in the project's IP log.
+ *
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Distribution License v1.0 which
+ * accompanies this distribution, is reproduced below, and is
+ * available at http://www.eclipse.org/org/documents/edl-v10.php
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * - Neither the name of the Eclipse Foundation, Inc. nor the
+ * names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.jgit.api;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.jgit.api.errors.PatchApplyException;
+import org.eclipse.jgit.api.errors.PatchFormatException;
+import org.eclipse.jgit.diff.DiffFormatterReflowTest;
+import org.eclipse.jgit.diff.RawText;
+import org.eclipse.jgit.lib.RepositoryTestCase;
+import org.junit.Test;
+
+public class ApplyCommandTest extends RepositoryTestCase {
+
+ private RawText a;
+
+ private RawText b;
+
+ private ApplyResult init(final String name) throws Exception {
+ return init(name, true, true);
+ }
+
+ private ApplyResult init(final String name, final boolean preExists,
+ final boolean postExists) throws Exception {
+ Git git = new Git(db);
+
+ if (preExists) {
+ a = new RawText(readFile(name + "_PreImage"));
+ write(new File(db.getDirectory().getParent(), name),
+ a.getString(0, a.size(), false));
+
+ git.add().addFilepattern(name).call();
+ git.commit().setMessage("PreImage").call();
+ }
+
+ if (postExists)
+ b = new RawText(readFile(name + "_PostImage"));
+
+ return git
+ .apply()
+ .setPatch(
+ DiffFormatterReflowTest.class.getResourceAsStream(name
+ + ".patch")).call();
+ }
+
+ @Test
+ public void testAddA1() throws Exception {
+ ApplyResult result = init("A1", false, true);
+ assertEquals(1, result.getUpdatedFiles().size());
+ assertEquals(new File(db.getWorkTree(), "A1"), result.getUpdatedFiles()
+ .get(0));
+ checkFile(new File(db.getWorkTree(), "A1"),
+ b.getString(0, b.size(), false));
+ }
+
+ @Test
+ public void testAddA2() throws Exception {
+ ApplyResult result = init("A2", false, true);
+ assertEquals(1, result.getUpdatedFiles().size());
+ assertEquals(new File(db.getWorkTree(), "A2"), result.getUpdatedFiles()
+ .get(0));
+ checkFile(new File(db.getWorkTree(), "A2"),
+ b.getString(0, b.size(), false));
+ }
+
+ @Test
+ public void testDeleteD() throws Exception {
+ ApplyResult result = init("D", true, false);
+ assertEquals(1, result.getUpdatedFiles().size());
+ assertEquals(new File(db.getWorkTree(), "D"), result.getUpdatedFiles()
+ .get(0));
+ assertFalse(new File(db.getWorkTree(), "D").exists());
+ }
+
+ @Test(expected = PatchFormatException.class)
+ public void testFailureF1() throws Exception {
+ init("F1", true, false);
+ }
+
+ @Test(expected = PatchApplyException.class)
+ public void testFailureF2() throws Exception {
+ init("F2", true, false);
+ }
+
+ @Test
+ public void testModifyE() throws Exception {
+ ApplyResult result = init("E");
+ assertEquals(1, result.getUpdatedFiles().size());
+ assertEquals(new File(db.getWorkTree(), "E"), result.getUpdatedFiles()
+ .get(0));
+ checkFile(new File(db.getWorkTree(), "E"),
+ b.getString(0, b.size(), false));
+ }
+
+ @Test
+ public void testModifyX() throws Exception {
+ ApplyResult result = init("X");
+ assertEquals(1, result.getUpdatedFiles().size());
+ assertEquals(new File(db.getWorkTree(), "X"), result.getUpdatedFiles()
+ .get(0));
+ checkFile(new File(db.getWorkTree(), "X"),
+ b.getString(0, b.size(), false));
+ }
+
+ @Test
+ public void testModifyY() throws Exception {
+ ApplyResult result = init("Y");
+ assertEquals(1, result.getUpdatedFiles().size());
+ assertEquals(new File(db.getWorkTree(), "Y"), result.getUpdatedFiles()
+ .get(0));
+ checkFile(new File(db.getWorkTree(), "Y"),
+ b.getString(0, b.size(), false));
+ }
+
+ @Test
+ public void testModifyZ() throws Exception {
+ ApplyResult result = init("Z");
+ assertEquals(1, result.getUpdatedFiles().size());
+ assertEquals(new File(db.getWorkTree(), "Z"), result.getUpdatedFiles()
+ .get(0));
+ checkFile(new File(db.getWorkTree(), "Z"),
+ b.getString(0, b.size(), false));
+ }
+
+ private byte[] readFile(final String patchFile) throws IOException {
+ final InputStream in = DiffFormatterReflowTest.class
+ .getResourceAsStream(patchFile);
+ if (in == null) {
+ fail("No " + patchFile + " test vector");
+ return null; // Never happens
+ }
+ try {
+ final byte[] buf = new byte[1024];
+ final ByteArrayOutputStream temp = new ByteArrayOutputStream();
+ int n;
+ while ((n = in.read(buf)) > 0)
+ temp.write(buf, 0, n);
+ return temp.toByteArray();
+ } finally {
+ in.close();
+ }
+ }
+}