mirror of
https://https.git.savannah.gnu.org/git/patch.git
synced 2026-01-28 18:35:03 +00:00
Reported and fixed (mostly) by Christian Weisgerber <naddy@mips.inka.de>: * tests/deep-directories: Avoid the bash >& redirection operator. * tests/no-mode-change-git-diff: Instead of "stat -c", use "ls -l sed". * tests/read-only-files: A redirection failure for a special built-in causes some shells (FreeBSD sh, OpenBSD sh (pdksh), some bash --posix) to exit, and the colon command is a special built-in. Perform the redirection in a subshell.
69 lines
1.4 KiB
Plaintext
69 lines
1.4 KiB
Plaintext
# 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.
|
|
|
|
# Patching read-only files
|
|
|
|
. $srcdir/test-lib.sh
|
|
|
|
require cat
|
|
use_local_patch
|
|
use_tmpdir
|
|
|
|
# --------------------------------------------------------------
|
|
|
|
: > read-only
|
|
chmod a-w read-only
|
|
if ( : 2> /dev/null > read-only ); then
|
|
echo "Files with read-only permissions are writable" \
|
|
"(probably running as superuser)" >&2
|
|
exit 77
|
|
fi
|
|
rm -f read-only
|
|
|
|
# ==============================================================
|
|
|
|
cat > f.diff <<EOF
|
|
--- f.orig
|
|
+++ f
|
|
@@ -1 +1 @@
|
|
-one
|
|
+two
|
|
--- f.orig
|
|
+++ f
|
|
@@ -1 +1 @@
|
|
-two
|
|
+three
|
|
EOF
|
|
|
|
echo one > f
|
|
chmod a=r f
|
|
|
|
check 'patch -p0 --read-only=fail < f.diff || echo "Status: $?"' <<EOF
|
|
File f is read-only; refusing to patch
|
|
1 out of 1 hunk ignored -- saving rejects to file f.rej
|
|
File f is read-only; refusing to patch
|
|
1 out of 1 hunk ignored -- saving rejects to file f.rej
|
|
Status: 1
|
|
EOF
|
|
|
|
rm -f f.rej
|
|
|
|
check 'patch -f -p0 --read-only=warn < f.diff || echo "Status: $?"' <<EOF
|
|
File f is read-only; trying to patch anyway
|
|
patching file f
|
|
File f is read-only; trying to patch anyway
|
|
patching file f
|
|
EOF
|
|
|
|
rm -f f
|
|
echo one > f
|
|
chmod a=r f
|
|
|
|
check 'patch -f -p0 --read-only=ignore < f.diff || echo "Status: $?"' <<EOF
|
|
patching file f
|
|
patching file f
|
|
EOF
|