diff options
Diffstat (limited to 'tests/create-delete')
-rw-r--r-- | tests/create-delete | 129 |
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 |