patch/tests/read-only-files
Andreas Gruenbacher 7297352e16 Test suite portability fixes
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.
2015-02-04 10:54:03 +01:00

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