diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/local.mk | 1 | ||||
-rwxr-xr-x | tests/mv/hardlink-case.sh | 37 | ||||
-rw-r--r-- | tests/mv/vfat | 64 |
3 files changed, 38 insertions, 64 deletions
diff --git a/tests/local.mk b/tests/local.mk index 22e8b866e..653c984d1 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -127,6 +127,7 @@ all_root_tests = \ tests/misc/truncate-owned-by-other.sh \ tests/mkdir/writable-under-readonly.sh \ tests/mkdir/smack-root.sh \ + tests/mv/hardlink-case.sh \ tests/mv/sticky-to-xpart.sh \ tests/rm/fail-2eperm.sh \ tests/rm/no-give-up.sh \ diff --git a/tests/mv/hardlink-case.sh b/tests/mv/hardlink-case.sh new file mode 100755 index 000000000..5ab8c9543 --- /dev/null +++ b/tests/mv/hardlink-case.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# Ensure multi-hardlinked files are not lost on case insensitive file systems + +# Copyright (C) 2014 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src +print_ver_ mv +require_root_ + +cwd=$(pwd) +cleanup_() { cd /; umount "$cwd/mnt"; } + +truncate -s100M hfs.img || framework_failure_ +mkfs -t hfsplus hfs.img || skip_ 'failed to create hfs file system' +mkdir mnt || framework_failure_ +mount hfs.img mnt || skip_ 'failed to mount hfs file system' + +cd mnt +touch foo +ln foo whatever +mv foo Foo && fail=1 +test -r foo || fail=1 + +Exit $fail diff --git a/tests/mv/vfat b/tests/mv/vfat deleted file mode 100644 index cd2f8b4d0..000000000 --- a/tests/mv/vfat +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/sh -# This is just for the record. -# This test is not run. - -# Copyright (C) 2003-2014 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -exit 0 - -cat <<\EOF - -Prior to 5.0.91, ... - -The problem: - On a VFAT file system with coreutils-5.0.90, 'mv FOO foo' removes the - sole copy of the file named by both the source and destination arguments. - -Demonstrate the problem, as root: - -cd /tmp \ - && dd if=/dev/zero of=1 bs=8192 count=50 \ - && mkdir mnt && mkfs -t vfat 1 \ - && mount -oloop 1 mnt && cd mnt \ - && printf something important > foo \ - && mv foo FOO -test -f FOO && echo PASS-1 || echo FAIL-1 -ln foo bar -mv foo FOO -test -f FOO && echo PASS-2 || echo FAIL-2 - -And in case you actually do the above, you can do this to clean up: - - cd /tmp && umount /tmp/mnt && rm -r 1 mnt - -Hey! Can't create hard links on vfat. -The above 'ln' evokes an 'operation not permitted' failure. - -This demonstrates the same thing with file system type 'umsdos' -No hard links: - -cd /tmp \ - && dd if=/dev/zero of=1 bs=8192 count=50 \ - && mkdir mnt && mkfs -t msdos 1 \ - && mount -t umsdos -oloop 1 mnt && cd mnt \ - && printf something important > foo \ - && mv foo FOO -test -f FOO && echo PASS-1 || echo FAIL-1 -ln foo bar -mv foo FOO -test -f FOO && echo PASS-2 || echo FAIL-2 - -EOF |