SHA256
3
0
forked from pool/patch
patch/diff3-style-merges-tests.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
+