# Copyright 2009-2025 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# in any medium, are permitted without royalty provided the copyright
# notice and this notice are preserved.

# Test the --reject-format=FORMAT option

. $srcdir/test-lib.sh

require cat
require sed
use_local_patch
use_tmpdir

preserve_trailing_blank=

# ==============================================================

cat > f.orig <<EOF
a() {
2
3

5
6
}
EOF

sed -e 's/5/5a/' f.orig > f

cat > f.diff <<EOF
*** f.orig
--- f
*************** a() {
*** 2,7 ****
  2
  3
  $preserve_trailing_blank
! 5
  6
  }
--- 2,7 ----
  2
  3
  $preserve_trailing_blank
! 5a
  6
  }
EOF

check 'patch -f -F0 --no-backup-if-mismatch --dry-run f < f.diff || echo "Status: $?"' <<EOF
checking file f
Hunk #1 FAILED at 2.
1 out of 1 hunk FAILED
Status: 1
EOF

check 'patch -f -F0 --no-backup-if-mismatch f < f.diff || echo "Status: $?"' <<EOF
patching file f
Hunk #1 FAILED at 2.
1 out of 1 hunk FAILED -- saving rejects to file f.rej
Status: 1
EOF

check 'cat f.rej' <<EOF
*** f.orig
--- f
*************** a() {
*** 2,7 ****
  2
  3
  $preserve_trailing_blank
! 5
  6
  }
--- 2,7 ----
  2
  3
  $preserve_trailing_blank
! 5a
  6
  }
EOF

# --------------------------------------------------------------

cat > f1.diff <<EOF
Index: f
--- f.orig
+++ f
@@ -2,6 +2,6 @@ a() {
 2
 3
 $preserve_trailing_blank
-5
+5a
 6
 }
EOF
check 'patch -f -F0 --no-backup-if-mismatch f < f1.diff || echo "Status: $?"' <<EOF
patching file f
Hunk #1 FAILED at 2.
1 out of 1 hunk FAILED -- saving rejects to file f.rej
Status: 1
EOF

check 'cat f.rej' <<EOF
Index: f
--- f.orig
+++ f
@@ -2,6 +2,6 @@ a() {
 2
 3
 $preserve_trailing_blank
-5
+5a
 6
 }
EOF

# --------------------------------------------------------------

check 'patch -f -F0 --no-backup-if-mismatch --reject-format=unified f < f.diff || echo "Status: $?"' <<EOF
patching file f
Hunk #1 FAILED at 2.
1 out of 1 hunk FAILED -- saving rejects to file f.rej
Status: 1
EOF

check 'cat f.rej' <<EOF
--- f.orig
+++ f
@@ -2,6 +2,6 @@ a() {
 2
 3
 $preserve_trailing_blank
-5
+5a
 6
 }
EOF

# --------------------------------------------------------------

check 'patch -f -F0 --no-backup-if-mismatch --reject-format=context f < f1.diff || echo "Status: $?"' <<EOF
patching file f
Hunk #1 FAILED at 2.
1 out of 1 hunk FAILED -- saving rejects to file f.rej
Status: 1
EOF

check 'cat f.rej' <<EOF
Index: f
*** f.orig
--- f
*************** a() {
*** 2,7 ****
  2
  3
  $preserve_trailing_blank
! 5
  6
  }
--- 2,7 ----
  2
  3
  $preserve_trailing_blank
! 5a
  6
  }
EOF

# ==============================================================

echo one > a
echo two > b
cat > ab.diff <<EOF
--- a	label of a
+++ b	label of b
@@ -1 +1 @@
-one
+two
EOF
mv b a

check 'patch -f < ab.diff || echo "Status: $?"' <<EOF
patching file a
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file a.rej
Status: 1
EOF

check 'cat a.rej' <<EOF
--- a	label of a
+++ b	label of b
@@ -1 +1 @@
-one
+two
EOF
