mirror of
https://https.git.savannah.gnu.org/git/patch.git
synced 2026-01-27 01:44:34 +00:00
Check for chmod, hardlink, symlink, and special character support to prevent test suite failures in feature constrained environments. Thanks to Bruno Haible and Nelson H. F. Beebe for their testing and analysis. * tests/test-lib.sh: Add new feature tests. * tests/hardlinks: Split this hardlinks related test off from tests/remember-backup-files. * tests/Makefile.am (TESTS): Add new hardlinks test here. * tests/file-create-modes, tests/file-modes, tests/read-only-files, tests/preserve-mode-and-timestamp, tests/no-mode-change-git-diff: These tests require chmod support. * tests/hardlinks, tests/unmodified-files: These tests require hardlink support. * tests/symlinks: This test requires symlink support. * tests/quoted-filenames: This test requires special character support in filenames.
70 lines
1.4 KiB
Plaintext
70 lines
1.4 KiB
Plaintext
# Copyright 2009-2024 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
|
|
require chmod
|
|
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
|