summaryrefslogtreecommitdiff
path: root/tests/create-delete
diff options
context:
space:
mode:
Diffstat (limited to 'tests/create-delete')
-rw-r--r--tests/create-delete129
1 files changed, 125 insertions, 4 deletions
diff --git a/tests/create-delete b/tests/create-delete
index 82d8c52..7c46166 100644
--- a/tests/create-delete
+++ b/tests/create-delete
@@ -93,7 +93,7 @@ EOF
# Check the file mode of backups of new files
umask 022
-rm -f f
+rm -f f.orig f
check 'patch -f f < f.diff || echo "Status: $?"' <<EOF
The next patch would delete the file f,
@@ -104,9 +104,7 @@ Hunk #1 FAILED at 1.
Status: 1
EOF
-check 'ls -l f.orig | sed "s,\(..........\).*,\1,"' <<EOF
--rw-r--r--
-EOF
+ncheck '! test -s f.orig'
# ==============================================================
@@ -170,3 +168,126 @@ EOF
check 'cat f' <<EOF
f
EOF
+
+# ================================================================
+# File expected to become empty doesn't become empty
+
+seq 2 > target
+cat > p.diff <<EOF
+--- target
++++ /dev/null
+@@ -1 +0,0 @@
+-1
+EOF
+
+check 'patch -p0 < p.diff || echo status: $?' <<EOF
+patching file target
+File target is not empty after patch; not deleting
+status: 1
+EOF
+
+check 'cat target' <<EOF
+2
+EOF
+
+# --------------------------------------------------------------
+
+seq 2 > target
+cat > p.diff <<EOF
+--- target 2012-09-25 03:09:15
++++ target 1970-01-01 00:00:00
+@@ -1 +0,0 @@
+-1
+EOF
+
+check 'patch -p0 < p.diff || echo status: $?' <<EOF
+patching file target
+File target is not empty after patch; not deleting
+status: 1
+EOF
+
+check 'cat target' <<EOF
+2
+EOF
+
+# --------------------------------------------------------------
+printf '\0' > target
+cat > p.diff <<EOF
+diff --git a/target b/target
+deleted file mode 100644
+index f76dd23..0000000
+Binary files a/target and /dev/null differ
+EOF
+
+check 'patch -p1 -b < p.diff || echo status: $?' <<EOF
+patching file target
+File target is not empty after patch; not deleting
+status: 1
+EOF
+
+ncheck 'test -e target'
+
+# Patch creates a backup file even when the original file remains unchanged:
+ncheck 'test -e target.orig'
+
+# ================================================================
+# File not expected to become empty does become empty
+
+echo 1 > target
+cat > p.diff <<EOF
+--- target
++++ target
+@@ -1 +0,0 @@
+-1
+EOF
+
+check 'patch -p0 < p.diff || echo status: $?' <<EOF
+patching file target
+EOF
+
+check 'cat target' <<EOF
+EOF
+
+echo 1 > target
+check 'patch -p0 -E < p.diff || echo status: $?' <<EOF
+patching file target
+EOF
+
+ncheck 'test ! -e target'
+
+# ================================================================
+# File expected to become empty does become empty
+
+echo data > target
+cat > p.diff <<EOF
+diff --git a/target b/target
+deleted file mode 100644
+index 1269488..0000000
+--- a/target
++++ /dev/null
+@@ -1 +0,0 @@
+-data
+EOF
+
+check 'patch -p1 -b -f < p.diff || echo status: $?' <<EOF
+patching file target
+EOF
+
+ncheck 'test ! -e target'
+
+check 'cat target.orig' <<EOF
+data
+EOF
+
+echo data > target
+
+check 'patch -p1 -b --posix -f < p.diff || echo status: $?' <<EOF
+patching file target
+EOF
+
+check 'cat target' <<EOF
+EOF
+
+check 'cat target.orig' <<EOF
+data
+EOF