aboutsummaryrefslogtreecommitdiffstats
path: root/t/no-reduce
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2026-09-22 19:53:29 +0200
committerMattias Andrée <m@maandree.se>2026-09-22 19:53:29 +0200
commitd8de1b23e8ec896759424a2f146969783cdd89e3 (patch)
treeed1ea3e97add5116230fd2df34e42b829a70ab39 /t/no-reduce
parentfix doc text (diff)
downloadgit-rediff-1.1.tar.gz
git-rediff-1.1.tar.bz2
git-rediff-1.1.tar.xz
Add conflcit resultions strategies and interactive mode, and a lot of testsHEAD1.1master
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to '')
-rwxr-xr-xt/no-reduce17
-rwxr-xr-xt/no-reduce-111
-rwxr-xr-xt/no-reduce-2-files24
-rwxr-xr-xt/no-reduce-2-full19
-rwxr-xr-xt/no-reduce-2-head21
-rwxr-xr-xt/no-reduce-2-hunks21
-rwxr-xr-xt/no-reduce-2-middle25
-rwxr-xr-xt/no-reduce-2-multiple-partial33
-rwxr-xr-xt/no-reduce-2-non-aligned27
-rwxr-xr-xt/no-reduce-2-none17
-rwxr-xr-xt/no-reduce-2-tail21
-rwxr-xr-xt/no-reduce-3-full23
-rwxr-xr-xt/no-reduce-3-head26
-rwxr-xr-xt/no-reduce-3-middle32
-rwxr-xr-xt/no-reduce-3-multiple-partial44
-rwxr-xr-xt/no-reduce-3-none20
-rwxr-xr-xt/no-reduce-3-tail26
-rwxr-xr-xt/no-reduce-4-full27
-rwxr-xr-xt/no-reduce-4-head31
-rwxr-xr-xt/no-reduce-4-middle39
-rwxr-xr-xt/no-reduce-4-multiple-partial55
-rwxr-xr-xt/no-reduce-4-none23
-rwxr-xr-xt/no-reduce-4-tail31
-rwxr-xr-xt/no-reduce-5-full31
-rwxr-xr-xt/no-reduce-5-head36
-rwxr-xr-xt/no-reduce-5-middle46
-rwxr-xr-xt/no-reduce-5-multiple-partial66
-rwxr-xr-xt/no-reduce-5-none26
-rwxr-xr-xt/no-reduce-5-tail36
-rwxr-xr-xt/no-reduce-dashdash-dashprefix17
-rwxr-xr-xt/no-reduce-empty-base16
-rwxr-xr-xt/no-reduce-empty-head16
-rwxr-xr-xt/no-reduce-empty-tail16
-rwxr-xr-xt/no-reduce-no-conflicts11
34 files changed, 930 insertions, 0 deletions
diff --git a/t/no-reduce b/t/no-reduce
new file mode 100755
index 0000000..878eeea
--- /dev/null
+++ b/t/no-reduce
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} HEAD" \
+ same \
+ head \
+ "${TAIL}" \
+ same \
+ tail \
+ "${END} branch"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-1 b/t/no-reduce-1
new file mode 100755
index 0000000..8f549eb
--- /dev/null
+++ b/t/no-reduce-1
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ same \
+ "${END} 1"
+
+cp -- file file.expected
+
+error --no-reduce file
diff --git a/t/no-reduce-2-files b/t/no-reduce-2-files
new file mode 100755
index 0000000..29d7ea3
--- /dev/null
+++ b/t/no-reduce-2-files
@@ -0,0 +1,24 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} ours" \
+ first \
+ "${TAIL}" \
+ first \
+ "${END} theirs"
+
+cp -- file file.expected
+
+printf '%s\n' > file2 \
+ "${HEAD} ours" \
+ second \
+ "${TAIL}" \
+ second \
+ "${END} theirs"
+
+cp -- file2 file2.expected
+
+conflict --no-reduce file file2
+
+also_interactive ss
diff --git a/t/no-reduce-2-full b/t/no-reduce-2-full
new file mode 100755
index 0000000..20b4c19
--- /dev/null
+++ b/t/no-reduce-2-full
@@ -0,0 +1,19 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ common-first \
+ common-second \
+ common-third \
+ "${TAIL} 2" \
+ common-first \
+ common-second \
+ common-third \
+ "${END} 2"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-2-head b/t/no-reduce-2-head
new file mode 100755
index 0000000..34029cd
--- /dev/null
+++ b/t/no-reduce-2-head
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ head-common-first \
+ head-common-second \
+ branch-1-first \
+ branch-1-second \
+ "${TAIL} 2" \
+ head-common-first \
+ head-common-second \
+ branch-2-first \
+ branch-2-second \
+ "${END} 2"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-2-hunks b/t/no-reduce-2-hunks
new file mode 100755
index 0000000..bc9c550
--- /dev/null
+++ b/t/no-reduce-2-hunks
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} ours" \
+ first \
+ "${TAIL}" \
+ first \
+ "${END} theirs" \
+ between \
+ "${HEAD} ours" \
+ second \
+ "${TAIL}" \
+ second \
+ "${END} theirs"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive ss
diff --git a/t/no-reduce-2-middle b/t/no-reduce-2-middle
new file mode 100755
index 0000000..5409cbd
--- /dev/null
+++ b/t/no-reduce-2-middle
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-before-first \
+ branch-1-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-1-after-first \
+ branch-1-after-second \
+ "${TAIL} 2" \
+ branch-2-before-first \
+ branch-2-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-2-after-first \
+ branch-2-after-second \
+ "${END} 2"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-2-multiple-partial b/t/no-reduce-2-multiple-partial
new file mode 100755
index 0000000..bf25762
--- /dev/null
+++ b/t/no-reduce-2-multiple-partial
@@ -0,0 +1,33 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ head-common-first \
+ head-common-second \
+ branch-1-first-a \
+ branch-1-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-1-second-a \
+ branch-1-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${TAIL} 2" \
+ head-common-first \
+ head-common-second \
+ branch-2-first-a \
+ branch-2-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-2-second-a \
+ branch-2-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${END} 2"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-2-non-aligned b/t/no-reduce-2-non-aligned
new file mode 100755
index 0000000..542435f
--- /dev/null
+++ b/t/no-reduce-2-non-aligned
@@ -0,0 +1,27 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ before-common-first \
+ before-common-second \
+ head-only-first \
+ head-only-second \
+ middle-common-first \
+ middle-common-second \
+ head-last \
+ "${TAIL} 2" \
+ before-common-first \
+ before-common-second \
+ tail-only \
+ middle-common-first \
+ middle-common-second \
+ tail-last-first \
+ tail-last-second \
+ "${END} 2"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-2-none b/t/no-reduce-2-none
new file mode 100755
index 0000000..d09b857
--- /dev/null
+++ b/t/no-reduce-2-none
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-first \
+ branch-1-second \
+ "${TAIL} 2" \
+ branch-2-first \
+ branch-2-second \
+ "${END} 2"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-2-tail b/t/no-reduce-2-tail
new file mode 100755
index 0000000..4eb8bd8
--- /dev/null
+++ b/t/no-reduce-2-tail
@@ -0,0 +1,21 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-first \
+ branch-1-second \
+ tail-common-first \
+ tail-common-second \
+ "${TAIL} 2" \
+ branch-2-first \
+ branch-2-second \
+ tail-common-first \
+ tail-common-second \
+ "${END} 2"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-3-full b/t/no-reduce-3-full
new file mode 100755
index 0000000..8e36d3e
--- /dev/null
+++ b/t/no-reduce-3-full
@@ -0,0 +1,23 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ common-first \
+ common-second \
+ common-third \
+ "${PARENT} 2" \
+ common-first \
+ common-second \
+ common-third \
+ "${TAIL} 3" \
+ common-first \
+ common-second \
+ common-third \
+ "${END} 3"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-3-head b/t/no-reduce-3-head
new file mode 100755
index 0000000..3d2475c
--- /dev/null
+++ b/t/no-reduce-3-head
@@ -0,0 +1,26 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ head-common-first \
+ head-common-second \
+ branch-1-first \
+ branch-1-second \
+ "${PARENT} 2" \
+ head-common-first \
+ head-common-second \
+ branch-2-first \
+ branch-2-second \
+ "${TAIL} 3" \
+ head-common-first \
+ head-common-second \
+ branch-3-first \
+ branch-3-second \
+ "${END} 3"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-3-middle b/t/no-reduce-3-middle
new file mode 100755
index 0000000..da3eb25
--- /dev/null
+++ b/t/no-reduce-3-middle
@@ -0,0 +1,32 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-before-first \
+ branch-1-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-1-after-first \
+ branch-1-after-second \
+ "${PARENT} 2" \
+ branch-2-before-first \
+ branch-2-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-2-after-first \
+ branch-2-after-second \
+ "${TAIL} 3" \
+ branch-3-before-first \
+ branch-3-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-3-after-first \
+ branch-3-after-second \
+ "${END} 3"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-3-multiple-partial b/t/no-reduce-3-multiple-partial
new file mode 100755
index 0000000..232afd0
--- /dev/null
+++ b/t/no-reduce-3-multiple-partial
@@ -0,0 +1,44 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ head-common-first \
+ head-common-second \
+ branch-1-first-a \
+ branch-1-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-1-second-a \
+ branch-1-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 2" \
+ head-common-first \
+ head-common-second \
+ branch-2-first-a \
+ branch-2-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-2-second-a \
+ branch-2-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${TAIL} 3" \
+ head-common-first \
+ head-common-second \
+ branch-3-first-a \
+ branch-3-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-3-second-a \
+ branch-3-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${END} 3"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-3-none b/t/no-reduce-3-none
new file mode 100755
index 0000000..c5c05bf
--- /dev/null
+++ b/t/no-reduce-3-none
@@ -0,0 +1,20 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-first \
+ branch-1-second \
+ "${PARENT} 2" \
+ branch-2-first \
+ branch-2-second \
+ "${TAIL} 3" \
+ branch-3-first \
+ branch-3-second \
+ "${END} 3"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-3-tail b/t/no-reduce-3-tail
new file mode 100755
index 0000000..776eebd
--- /dev/null
+++ b/t/no-reduce-3-tail
@@ -0,0 +1,26 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-first \
+ branch-1-second \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 2" \
+ branch-2-first \
+ branch-2-second \
+ tail-common-first \
+ tail-common-second \
+ "${TAIL} 3" \
+ branch-3-first \
+ branch-3-second \
+ tail-common-first \
+ tail-common-second \
+ "${END} 3"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-4-full b/t/no-reduce-4-full
new file mode 100755
index 0000000..49f47c2
--- /dev/null
+++ b/t/no-reduce-4-full
@@ -0,0 +1,27 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ common-first \
+ common-second \
+ common-third \
+ "${PARENT} 2" \
+ common-first \
+ common-second \
+ common-third \
+ "${PARENT} 3" \
+ common-first \
+ common-second \
+ common-third \
+ "${TAIL} 4" \
+ common-first \
+ common-second \
+ common-third \
+ "${END} 4"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-4-head b/t/no-reduce-4-head
new file mode 100755
index 0000000..68425c6
--- /dev/null
+++ b/t/no-reduce-4-head
@@ -0,0 +1,31 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ head-common-first \
+ head-common-second \
+ branch-1-first \
+ branch-1-second \
+ "${PARENT} 2" \
+ head-common-first \
+ head-common-second \
+ branch-2-first \
+ branch-2-second \
+ "${PARENT} 3" \
+ head-common-first \
+ head-common-second \
+ branch-3-first \
+ branch-3-second \
+ "${TAIL} 4" \
+ head-common-first \
+ head-common-second \
+ branch-4-first \
+ branch-4-second \
+ "${END} 4"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-4-middle b/t/no-reduce-4-middle
new file mode 100755
index 0000000..b91f36e
--- /dev/null
+++ b/t/no-reduce-4-middle
@@ -0,0 +1,39 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-before-first \
+ branch-1-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-1-after-first \
+ branch-1-after-second \
+ "${PARENT} 2" \
+ branch-2-before-first \
+ branch-2-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-2-after-first \
+ branch-2-after-second \
+ "${PARENT} 3" \
+ branch-3-before-first \
+ branch-3-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-3-after-first \
+ branch-3-after-second \
+ "${TAIL} 4" \
+ branch-4-before-first \
+ branch-4-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-4-after-first \
+ branch-4-after-second \
+ "${END} 4"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-4-multiple-partial b/t/no-reduce-4-multiple-partial
new file mode 100755
index 0000000..3ae2034
--- /dev/null
+++ b/t/no-reduce-4-multiple-partial
@@ -0,0 +1,55 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ head-common-first \
+ head-common-second \
+ branch-1-first-a \
+ branch-1-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-1-second-a \
+ branch-1-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 2" \
+ head-common-first \
+ head-common-second \
+ branch-2-first-a \
+ branch-2-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-2-second-a \
+ branch-2-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 3" \
+ head-common-first \
+ head-common-second \
+ branch-3-first-a \
+ branch-3-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-3-second-a \
+ branch-3-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${TAIL} 4" \
+ head-common-first \
+ head-common-second \
+ branch-4-first-a \
+ branch-4-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-4-second-a \
+ branch-4-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${END} 4"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-4-none b/t/no-reduce-4-none
new file mode 100755
index 0000000..cdb5a0f
--- /dev/null
+++ b/t/no-reduce-4-none
@@ -0,0 +1,23 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-first \
+ branch-1-second \
+ "${PARENT} 2" \
+ branch-2-first \
+ branch-2-second \
+ "${PARENT} 3" \
+ branch-3-first \
+ branch-3-second \
+ "${TAIL} 4" \
+ branch-4-first \
+ branch-4-second \
+ "${END} 4"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-4-tail b/t/no-reduce-4-tail
new file mode 100755
index 0000000..a9edec7
--- /dev/null
+++ b/t/no-reduce-4-tail
@@ -0,0 +1,31 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-first \
+ branch-1-second \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 2" \
+ branch-2-first \
+ branch-2-second \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 3" \
+ branch-3-first \
+ branch-3-second \
+ tail-common-first \
+ tail-common-second \
+ "${TAIL} 4" \
+ branch-4-first \
+ branch-4-second \
+ tail-common-first \
+ tail-common-second \
+ "${END} 4"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-5-full b/t/no-reduce-5-full
new file mode 100755
index 0000000..d735484
--- /dev/null
+++ b/t/no-reduce-5-full
@@ -0,0 +1,31 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ common-first \
+ common-second \
+ common-third \
+ "${PARENT} 2" \
+ common-first \
+ common-second \
+ common-third \
+ "${PARENT} 3" \
+ common-first \
+ common-second \
+ common-third \
+ "${PARENT} 4" \
+ common-first \
+ common-second \
+ common-third \
+ "${TAIL} 5" \
+ common-first \
+ common-second \
+ common-third \
+ "${END} 5"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-5-head b/t/no-reduce-5-head
new file mode 100755
index 0000000..883240c
--- /dev/null
+++ b/t/no-reduce-5-head
@@ -0,0 +1,36 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ head-common-first \
+ head-common-second \
+ branch-1-first \
+ branch-1-second \
+ "${PARENT} 2" \
+ head-common-first \
+ head-common-second \
+ branch-2-first \
+ branch-2-second \
+ "${PARENT} 3" \
+ head-common-first \
+ head-common-second \
+ branch-3-first \
+ branch-3-second \
+ "${PARENT} 4" \
+ head-common-first \
+ head-common-second \
+ branch-4-first \
+ branch-4-second \
+ "${TAIL} 5" \
+ head-common-first \
+ head-common-second \
+ branch-5-first \
+ branch-5-second \
+ "${END} 5"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-5-middle b/t/no-reduce-5-middle
new file mode 100755
index 0000000..3826bc6
--- /dev/null
+++ b/t/no-reduce-5-middle
@@ -0,0 +1,46 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-before-first \
+ branch-1-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-1-after-first \
+ branch-1-after-second \
+ "${PARENT} 2" \
+ branch-2-before-first \
+ branch-2-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-2-after-first \
+ branch-2-after-second \
+ "${PARENT} 3" \
+ branch-3-before-first \
+ branch-3-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-3-after-first \
+ branch-3-after-second \
+ "${PARENT} 4" \
+ branch-4-before-first \
+ branch-4-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-4-after-first \
+ branch-4-after-second \
+ "${TAIL} 5" \
+ branch-5-before-first \
+ branch-5-before-second \
+ middle-common-first \
+ middle-common-second \
+ branch-5-after-first \
+ branch-5-after-second \
+ "${END} 5"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-5-multiple-partial b/t/no-reduce-5-multiple-partial
new file mode 100755
index 0000000..802b414
--- /dev/null
+++ b/t/no-reduce-5-multiple-partial
@@ -0,0 +1,66 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ head-common-first \
+ head-common-second \
+ branch-1-first-a \
+ branch-1-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-1-second-a \
+ branch-1-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 2" \
+ head-common-first \
+ head-common-second \
+ branch-2-first-a \
+ branch-2-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-2-second-a \
+ branch-2-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 3" \
+ head-common-first \
+ head-common-second \
+ branch-3-first-a \
+ branch-3-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-3-second-a \
+ branch-3-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 4" \
+ head-common-first \
+ head-common-second \
+ branch-4-first-a \
+ branch-4-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-4-second-a \
+ branch-4-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${TAIL} 5" \
+ head-common-first \
+ head-common-second \
+ branch-5-first-a \
+ branch-5-first-b \
+ middle-common-first \
+ middle-common-second \
+ branch-5-second-a \
+ branch-5-second-b \
+ tail-common-first \
+ tail-common-second \
+ "${END} 5"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-5-none b/t/no-reduce-5-none
new file mode 100755
index 0000000..fbd2808
--- /dev/null
+++ b/t/no-reduce-5-none
@@ -0,0 +1,26 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-first \
+ branch-1-second \
+ "${PARENT} 2" \
+ branch-2-first \
+ branch-2-second \
+ "${PARENT} 3" \
+ branch-3-first \
+ branch-3-second \
+ "${PARENT} 4" \
+ branch-4-first \
+ branch-4-second \
+ "${TAIL} 5" \
+ branch-5-first \
+ branch-5-second \
+ "${END} 5"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-5-tail b/t/no-reduce-5-tail
new file mode 100755
index 0000000..8799582
--- /dev/null
+++ b/t/no-reduce-5-tail
@@ -0,0 +1,36 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} 1" \
+ branch-1-first \
+ branch-1-second \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 2" \
+ branch-2-first \
+ branch-2-second \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 3" \
+ branch-3-first \
+ branch-3-second \
+ tail-common-first \
+ tail-common-second \
+ "${PARENT} 4" \
+ branch-4-first \
+ branch-4-second \
+ tail-common-first \
+ tail-common-second \
+ "${TAIL} 5" \
+ branch-5-first \
+ branch-5-second \
+ tail-common-first \
+ tail-common-second \
+ "${END} 5"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-dashdash-dashprefix b/t/no-reduce-dashdash-dashprefix
new file mode 100755
index 0000000..5ddaaed
--- /dev/null
+++ b/t/no-reduce-dashdash-dashprefix
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > -file \
+ "${HEAD} HEAD" \
+ same \
+ head \
+ "${TAIL}" \
+ same \
+ tail \
+ "${END} branch"
+
+cp -- -file -file.expected
+
+conflict --no-reduce -- -file
+
+also_interactive s
diff --git a/t/no-reduce-empty-base b/t/no-reduce-empty-base
new file mode 100755
index 0000000..2cc942f
--- /dev/null
+++ b/t/no-reduce-empty-base
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} ours" \
+ common \
+ "${PARENT} base" \
+ "${TAIL}" \
+ common \
+ "${END} theirs"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-empty-head b/t/no-reduce-empty-head
new file mode 100755
index 0000000..95c0338
--- /dev/null
+++ b/t/no-reduce-empty-head
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} ours" \
+ "${PARENT} base" \
+ common \
+ "${TAIL}" \
+ common \
+ "${END} theirs"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-empty-tail b/t/no-reduce-empty-tail
new file mode 100755
index 0000000..b8888ae
--- /dev/null
+++ b/t/no-reduce-empty-tail
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ "${HEAD} ours" \
+ common \
+ "${PARENT} base" \
+ common \
+ "${TAIL}" \
+ "${END} theirs"
+
+cp -- file file.expected
+
+conflict --no-reduce file
+
+also_interactive s
diff --git a/t/no-reduce-no-conflicts b/t/no-reduce-no-conflicts
new file mode 100755
index 0000000..ac818e6
--- /dev/null
+++ b/t/no-reduce-no-conflicts
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+. t/common.sh
+
+printf '%s\n' > file \
+ no conflicts
+
+cp -- file file.expected
+
+normal --no-reduce file
+
+also_interactive ''