# Copyright (C) 2009, 2011-2012 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.

# Patch must not overwrite backup files it has created itself.
# (Backup file tests for symlinks are in tests/symlinks.)

. $srcdir/test-lib.sh

require cat
use_local_patch
use_tmpdir

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

echo one > f

cat > f.diff <<EOF
--- f.orig
+++ f
@@ -2 +2 @@
-one
+two
--- f.orig
+++ f
@@ -2 +2 @@
-two
+three
--- f.orig
+++ f
@@ -2 +2 @@
-three
+four
EOF

check 'patch -p0 < f.diff' <<EOF
patching file f
Hunk #1 succeeded at 1 (offset -1 lines).
patching file f
Hunk #1 succeeded at 1 (offset -1 lines).
patching file f
Hunk #1 succeeded at 1 (offset -1 lines).
EOF

check 'cat f.orig' <<EOF
one
EOF

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

echo one > f

cat > f.diff <<EOF
--- f.dpkg-orig
+++ f
@@ -2 +2 @@
-one
+two
--- f.dpkg-orig
+++ f
@@ -2 +2 @@
-two
+three
EOF

check 'patch -p0 < f.diff' <<EOF
patching file f
Hunk #1 succeeded at 1 (offset -1 lines).
patching file f
Hunk #1 succeeded at 1 (offset -1 lines).
EOF

check 'cat f.dpkg-orig' <<EOF
one
EOF

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

rm -f f f.dpkg-orig

cat > f.diff <<EOF
--- f.dpkg-orig
+++ f
@@ -0,0 +1 @@
+one
EOF

check 'patch -p0 < f.diff' <<EOF
patching file f
EOF

ncheck 'test -f f.dpkg-orig && ! test -s f.dpkg-orig'

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

rm -f debian/kylin-ci-post debian/kylin-ci-post.dpkg-orig
mkdir -p debian

cat > f.diff <<EOF
--- debian/kylin-ci-post
+++ debian/kylin-ci-post
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 0
EOF

check 'patch --backup -z .dpkg-orig -p0 < f.diff' <<EOF
patching file debian/kylin-ci-post
EOF

ncheck 'test -f debian/kylin-ci-post.dpkg-orig && ! test -s debian/kylin-ci-post.dpkg-orig'

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

# Hardlinks between source files

echo one > f
ln f g

cat > fg.diff <<EOF
--- f.orig
+++ f
@@ -2 +2 @@
-one
+two
--- g.orig
+++ g
@@ -2 +2 @@
-one
+two
EOF

check 'patch -p0 < fg.diff' <<EOF
patching file f
Hunk #1 succeeded at 1 (offset -1 lines).
patching file g
Hunk #1 succeeded at 1 (offset -1 lines).
EOF

check 'cat f.orig' <<EOF
one
EOF

check 'cat g.orig' <<EOF
one
EOF

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

echo one > f

cat > f.diff <<EOF
--- f
+++ /dev/null
@@ -1 +0,0 @@
-one
--- /dev/null
+++ f
@@ -0,0 +1 @@
+two
EOF

check 'patch --backup -p0 < f.diff' <<EOF
patching file f
patching file f
EOF

check 'cat f.orig' <<EOF
one
EOF

check 'cat f' <<EOF
two
EOF
