forked from pool/patch
493 lines
6.9 KiB
Diff
493 lines
6.9 KiB
Diff
---
|
|
merge-tests/diff3-merge.test | 35 +++++++++
|
|
merge-tests/locate-rejects.test | 77 ++++++++++++++++++++
|
|
merge-tests/modes.test | 148 ++++++++++++++++++++++++++++++++++++++++
|
|
merge-tests/overlap-patch.test | 94 +++++++++++++++++++++++++
|
|
merge-tests/prefix-suffix.test | 105 ++++++++++++++++++++++++++++
|
|
5 files changed, 459 insertions(+)
|
|
|
|
Index: b/merge-tests/diff3-merge.test
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ b/merge-tests/diff3-merge.test
|
|
@@ -0,0 +1,35 @@
|
|
+$ tmpdir=$(mktemp -d)
|
|
+$ trap "cd /; rm -rf $tmpdir" EXIT
|
|
+$ cd $tmpdir
|
|
+
|
|
+ $ seq 1 4 > a
|
|
+ $ sed -e 's/2/2b/' a > b
|
|
+ $ sed -e 's/4/4d/' a > c
|
|
+
|
|
+Diff3 will merge changes if they are one line apart:
|
|
+
|
|
+ $ diff3 -m b a c
|
|
+ > 1
|
|
+ > 2b
|
|
+ > 3
|
|
+ > 4d
|
|
+
|
|
+But it will not merge adjacent changes:
|
|
+
|
|
+ $ sed -e 's/3/3c/' a > d
|
|
+
|
|
+ $ diff3 -m b a d
|
|
+ > 1
|
|
+ > <<<<<<< b
|
|
+ > 2b
|
|
+ > 3
|
|
+ > ||||||| a
|
|
+ > 2
|
|
+ > 3
|
|
+ > =======
|
|
+ > 2
|
|
+ > 3c
|
|
+ > >>>>>>> d
|
|
+ > 4
|
|
+
|
|
+Patch will merge the changes in either case.
|
|
Index: b/merge-tests/modes.test
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ b/merge-tests/modes.test
|
|
@@ -0,0 +1,148 @@
|
|
+$ tmpdir=$(mktemp -d)
|
|
+$ trap "cd /; rm -rf $tmpdir" EXIT
|
|
+$ cd $tmpdir
|
|
+
|
|
+$ cat > clean.diff
|
|
+< --- a
|
|
+< +++ b
|
|
+< @@ -2 +2 @@
|
|
+< -2
|
|
+< +2clean
|
|
+
|
|
+$ seq 1 3 > c ; patch c < clean.diff
|
|
+> patching file c
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2clean
|
|
+> 3
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=all c < clean.diff
|
|
+> patching file c
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> <<<<<<< a
|
|
+> 2
|
|
+> =======
|
|
+> 2clean
|
|
+> >>>>>>> b
|
|
+> 3
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=fuzz c < clean.diff
|
|
+> patching file c
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2clean
|
|
+> 3
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=rejects c < clean.diff
|
|
+> patching file c
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2clean
|
|
+> 3
|
|
+
|
|
+$ cat > fuzz.diff
|
|
+< --- a
|
|
+< +++ b
|
|
+< @@ -1,3 +1,3 @@
|
|
+< x
|
|
+< -2
|
|
+< +2fuzz
|
|
+< x
|
|
+
|
|
+$ seq 1 3 > c ; patch c < fuzz.diff
|
|
+> patching file c
|
|
+> Hunk #1 succeeded at 1 with fuzz 1.
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2fuzz
|
|
+> 3
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=all c < fuzz.diff
|
|
+> patching file c
|
|
+> Hunk #1 succeeded at 1 with fuzz 1.
|
|
+
|
|
+$ cat c
|
|
+> <<<<<<< a
|
|
+> x
|
|
+> 2
|
|
+> x
|
|
+> ||||||| b
|
|
+> x
|
|
+> 2fuzz
|
|
+> x
|
|
+> =======
|
|
+> 1
|
|
+> 2fuzz
|
|
+> 3
|
|
+> >>>>>>>
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=fuzz c < fuzz.diff
|
|
+> patching file c
|
|
+> Hunk #1 succeeded at 1 with fuzz 1.
|
|
+
|
|
+$ cat c
|
|
+> <<<<<<< a
|
|
+> x
|
|
+> 2
|
|
+> x
|
|
+> ||||||| b
|
|
+> x
|
|
+> 2fuzz
|
|
+> x
|
|
+> =======
|
|
+> 1
|
|
+> 2fuzz
|
|
+> 3
|
|
+> >>>>>>>
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=rejects c < fuzz.diff
|
|
+> patching file c
|
|
+> Hunk #1 succeeded at 1 with fuzz 1.
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2fuzz
|
|
+> 3
|
|
+
|
|
+$ cat > reject.diff
|
|
+< --- a
|
|
+< +++ b
|
|
+< @@ -2 +2 @@
|
|
+< -2reject
|
|
+< +2reject
|
|
+
|
|
+$ seq 1 3 > c ; patch c < reject.diff
|
|
+> patching file c
|
|
+> Hunk #1 FAILED at 2.
|
|
+> 1 out of 1 hunk FAILED -- saving rejects to file c.rej
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=all c < reject.diff
|
|
+> patching file c
|
|
+> Hunk #1 FAILED at 2.
|
|
+> 1 out of 1 hunk FAILED -- saving rejects to file c.rej
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=fuzz c < reject.diff
|
|
+> patching file c
|
|
+> Hunk #1 FAILED at 2.
|
|
+> 1 out of 1 hunk FAILED -- saving rejects to file c.rej
|
|
+
|
|
+$ seq 1 3 > c ; patch --merge=rejects c < reject.diff
|
|
+> patching file c
|
|
+> Hunk #1 merged at 2 with errors.
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> <<<<<<< a
|
|
+> 2reject
|
|
+> ||||||| b
|
|
+> 2reject
|
|
+> >>>>>>>
|
|
+> 2
|
|
+> 3
|
|
+
|
|
Index: b/merge-tests/prefix-suffix.test
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ b/merge-tests/prefix-suffix.test
|
|
@@ -0,0 +1,105 @@
|
|
+$ tmpdir=$(mktemp -d)
|
|
+$ trap "cd /; rm -rf $tmpdir" EXIT
|
|
+$ cd $tmpdir
|
|
+
|
|
+$ seq 1 7 > a
|
|
+$ seq 1 7 | sed -e '4d' > b
|
|
+$ diff -u -L a -L b a b > ab.diff
|
|
+$ diff -u -L b -L a b a > ba.diff
|
|
+
|
|
+$ cp a c
|
|
+$ patch --merge=all c < ab.diff
|
|
+> patching file c
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> <<<<<<< a
|
|
+> 4
|
|
+> =======
|
|
+> >>>>>>> b
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+
|
|
+$ cp b c
|
|
+$ patch --merge=all c < ba.diff
|
|
+> patching file c
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> <<<<<<< b
|
|
+> =======
|
|
+> 4
|
|
+> >>>>>>> a
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+
|
|
+$ diff -u /dev/null a > a.diff
|
|
+$ echo -n '' > c
|
|
+$ patch --merge=all c < a.diff
|
|
+> patching file c
|
|
+
|
|
+$ cat c
|
|
+> <<<<<<<
|
|
+> =======
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> 4
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+> >>>>>>> a
|
|
+
|
|
+$ diff -u a /dev/null > a-.diff
|
|
+$ cp a c
|
|
+$ patch --merge=all c < a-.diff
|
|
+> patching file c
|
|
+
|
|
+$ cat c
|
|
+#
|
|
+> <<<<<<< a
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> 4
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+> =======
|
|
+> >>>>>>>
|
|
+
|
|
+$ seq -f '%gc' 1 7 > c
|
|
+$ patch --merge=rejects c < ab.diff
|
|
+> patching file c
|
|
+> Hunk #1 merged at 1 with errors.
|
|
+
|
|
+$ cat c
|
|
+> <<<<<<< a
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> 4
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+> ||||||| b
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+> >>>>>>>
|
|
+> 1c
|
|
+> 2c
|
|
+> 3c
|
|
+> 4c
|
|
+> 5c
|
|
+> 6c
|
|
+> 7c
|
|
Index: b/merge-tests/overlap-patch.test
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ b/merge-tests/overlap-patch.test
|
|
@@ -0,0 +1,94 @@
|
|
+$ tmpdir=$(mktemp -d)
|
|
+$ trap "cd /; rm -rf $tmpdir" EXIT
|
|
+$ cd $tmpdir
|
|
+
|
|
+$ cat > patch
|
|
+< --- a
|
|
+< +++ b
|
|
+< @@ -2,3 +2,3 @@
|
|
+< x
|
|
+< -3
|
|
+< +3b
|
|
+< x
|
|
+
|
|
+$ seq 1 6 > file
|
|
+$ patch file < patch
|
|
+> patching file file
|
|
+> Hunk #1 succeeded at 2 with fuzz 1.
|
|
+
|
|
+$ seq 1 6 > file
|
|
+$ patch --merge=all file < patch
|
|
+> patching file file
|
|
+> Hunk #1 succeeded at 2 with fuzz 1.
|
|
+
|
|
+$ cat file
|
|
+> 1
|
|
+> <<<<<<< a
|
|
+> x
|
|
+> 3
|
|
+> x
|
|
+> ||||||| b
|
|
+> x
|
|
+> 3b
|
|
+> x
|
|
+> =======
|
|
+> 2
|
|
+> 3b
|
|
+> 4
|
|
+> >>>>>>>
|
|
+> 5
|
|
+> 6
|
|
+
|
|
+$ cat > patch
|
|
+< --- a
|
|
+< +++ b
|
|
+< @@ -2,3 +2,3 @@
|
|
+< x
|
|
+< -3
|
|
+< +3b
|
|
+< x
|
|
+< @@ -3,3 +3,3 @@
|
|
+< x
|
|
+< -4
|
|
+< +4b
|
|
+< x
|
|
+
|
|
+$ seq 1 6 > file
|
|
+$ patch file < patch
|
|
+> patching file file
|
|
+> Hunk #1 succeeded at 2 with fuzz 1.
|
|
+> Hunk #2 succeeded at 3 with fuzz 1.
|
|
+
|
|
+$ seq 1 6 > file
|
|
+$ patch --merge=all file < patch
|
|
+> patching file file
|
|
+> Hunk #1 succeeded at 2 with fuzz 1.
|
|
+> Hunk #2 succeeded at 3 with fuzz 1.
|
|
+
|
|
+$ cat file
|
|
+> 1
|
|
+> <<<<<<< a
|
|
+> x
|
|
+> 3
|
|
+> x
|
|
+> ||||||| b
|
|
+> x
|
|
+> 3b
|
|
+> x
|
|
+> =======
|
|
+> 2
|
|
+> 3b
|
|
+> >>>>>>>
|
|
+> <<<<<<< a
|
|
+> x
|
|
+> 4
|
|
+> x
|
|
+> ||||||| b
|
|
+> x
|
|
+> 4b
|
|
+> x
|
|
+> =======
|
|
+> 4b
|
|
+> 5
|
|
+> >>>>>>>
|
|
+> 6
|
|
Index: b/merge-tests/locate-rejects.test
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ b/merge-tests/locate-rejects.test
|
|
@@ -0,0 +1,77 @@
|
|
+$ tmpdir=$(mktemp -d)
|
|
+$ trap "cd /; rm -rf $tmpdir" EXIT
|
|
+$ cd $tmpdir
|
|
+
|
|
+$ seq 1 7 > a
|
|
+$ seq 1 7 | sed -e 's/4/4b/' > b
|
|
+$ seq 1 7 | sed -e 's/4/4c/' > c
|
|
+$ seq 1 7 | sed -e '4d' > d
|
|
+
|
|
+$ diff -u a b > ab.diff
|
|
+
|
|
+$ patch c < ab.diff
|
|
+> patching file c
|
|
+> Hunk #1 FAILED at 1.
|
|
+> 1 out of 1 hunk FAILED -- saving rejects to file c.rej
|
|
+
|
|
+$ patch --merge=rejects c < ab.diff
|
|
+> patching file c
|
|
+> Hunk #1 merged at 1 with errors.
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> <<<<<<< a
|
|
+> 4
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+> ||||||| b
|
|
+> 4b
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+> >>>>>>>
|
|
+> 4c
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+
|
|
+$ (seq 1 3; echo 7) > c
|
|
+$ patch --merge=rejects c < ab.diff
|
|
+> patching file c
|
|
+> Hunk #1 merged at 1 with errors.
|
|
+
|
|
+$ cat c
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> <<<<<<< a
|
|
+> 4
|
|
+> 5
|
|
+> 6
|
|
+> ||||||| b
|
|
+> 4b
|
|
+> 5
|
|
+> 6
|
|
+> >>>>>>>
|
|
+> 7
|
|
+
|
|
+$ patch --merge=rejects d < ab.diff
|
|
+> patching file d
|
|
+> Hunk #1 merged at 1 with errors.
|
|
+
|
|
+$ cat d
|
|
+> 1
|
|
+> 2
|
|
+> 3
|
|
+> <<<<<<< a
|
|
+> 4
|
|
+> ||||||| b
|
|
+> 4b
|
|
+> >>>>>>>
|
|
+> 5
|
|
+> 6
|
|
+> 7
|
|
+
|