aboutsummaryrefslogtreecommitdiffstats
path: root/file_cmds/tests/cp.sh
diff options
context:
space:
mode:
authorCameron Katri <me@cameronkatri.com>2021-05-21 09:21:42 -0400
committerCameron Katri <me@cameronkatri.com>2021-05-21 09:21:42 -0400
commitf06784df5a44c2aeb450ff88346a96f0bc9eb732 (patch)
tree49e9923a65f7cf572a6f0833737b72848299b1c8 /file_cmds/tests/cp.sh
parent0e3bb24ea8cde1573760b88ad56c1cc00be15cc8 (diff)
parent8d788054a62508f8d1b93067be16fb73f987ca8e (diff)
downloadapple_cmds-f06784df5a44c2aeb450ff88346a96f0bc9eb732.tar.gz
apple_cmds-f06784df5a44c2aeb450ff88346a96f0bc9eb732.tar.zst
apple_cmds-f06784df5a44c2aeb450ff88346a96f0bc9eb732.zip
Merge branch 'apple'
Diffstat (limited to 'file_cmds/tests/cp.sh')
-rw-r--r--file_cmds/tests/cp.sh23
1 files changed, 23 insertions, 0 deletions
diff --git a/file_cmds/tests/cp.sh b/file_cmds/tests/cp.sh
new file mode 100644
index 0000000..24afa56
--- /dev/null
+++ b/file_cmds/tests/cp.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# Regression test for 69452380
+function regression_69452380()
+{
+ echo "Verifying that cp -p preserves symlink's attributes, rather than the attributes of the symlink's target."
+ test_dir=`mktemp -d /tmp/69452380_src_XXXX`
+ touch ${test_dir}/target
+ mkdir ${test_dir}/link_dir
+ # Create symlink (must use relative path for the failure to occur)
+ cd ${test_dir}/link_dir
+ ln -s ../target link
+ # cp (with attribute preservation) the test dir containing both the
+ # target and the link (in a subdirectory) to a new dir.
+ # Prior to 69452380, this failed because we followed the symlink to
+ # try and preserve attributes for a non-existing file, instead of
+ # preserving the attributes of the symlink itself.
+ cp -R -P -p ${test_dir} /tmp/69452380_tgt_${RANDOM}
+}
+
+set -eu -o pipefail
+
+regression_69452380