summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2006-10-25 00:01:33 +0200
committerJim Meyering <jim@meyering.net>2006-10-25 00:01:33 +0200
commit5e42576c017905627e209acc20bf6e6abd1db6ef (patch)
treedec84f1b293d51189d9ab440710d8ca16bc91c4c /tests
parentba6b1acefd8c9d9a4c506806d68e891879706a2c (diff)
downloadcoreutils-5e42576c017905627e209acc20bf6e6abd1db6ef.tar.xz
new feature: rm accepts new option: --one-file-system
Suggested by Steve McIntyre in <http://bugs.debian.org/392925>. * src/remove.h (struct rm_options) [one_file_system]: New member. * src/rm.c (rm_option_init): Initialize it. (usage): Document the option. * src/mv.c (rm_option_init): Likewise. * src/remove.c (remove_dir): With --one-file-system and --recursive, for each directory command line argument, do not affect a file system different from that of the starting directory. And give a diagnostic. * src/rm.c (ONE_FILE_SYSTEM): New enum. (main): Handle new option. * tests/rm/one-file-system: Test the above. * tests/rm/Makefile.am (TESTS): Add one-file-system. * tests/Makefile.am (check-root): Add the rm/one-file-system test to the list. (EXTRA_DIST): Add other-fs-tmpdir. * tests/mv/setup: Removed. Renamed to... * tests/other-fs-tmpdir: ...this new file. * tests/mv/Makefile.am (EXTRA_DIST): Remove setup. * tests/mv/acl: Reflect renaming: use ../other-fs-tmpdir. * tests/mv/backup-is-src: Likewise. * tests/mv/hard-link-1: Likewise. * tests/mv/leak-fd: Likewise. * tests/mv/mv-special-1: Likewise. * tests/mv/part-fail: Likewise. * tests/mv/part-hardlink: Likewise. * tests/mv/part-rename: Likewise. * tests/mv/part-symlink: Likewise. * tests/mv/partition-perm: Likewise. * tests/mv/to-symlink: Likewise. * tests/mv/into-self-2: Likewise. [doc/ChangeLog] * coreutils.texi (rm invocation): Describe --one-file-system.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am10
-rw-r--r--tests/mv/Makefile.am2
-rwxr-xr-xtests/mv/acl2
-rwxr-xr-xtests/mv/backup-is-src2
-rwxr-xr-xtests/mv/hard-link-12
-rwxr-xr-xtests/mv/into-self-22
-rwxr-xr-xtests/mv/leak-fd2
-rwxr-xr-xtests/mv/mv-special-12
-rwxr-xr-xtests/mv/part-fail2
-rwxr-xr-xtests/mv/part-hardlink2
-rwxr-xr-xtests/mv/part-rename2
-rwxr-xr-xtests/mv/part-symlink2
-rwxr-xr-xtests/mv/partition-perm2
-rwxr-xr-xtests/mv/to-symlink2
-rwxr-xr-xtests/other-fs-tmpdir (renamed from tests/mv/setup)0
-rw-r--r--tests/rm/Makefile.am1
-rwxr-xr-xtests/rm/one-file-system67
17 files changed, 88 insertions, 16 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b13294bf5..d173ecda9 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -15,7 +15,8 @@ TESTS_ENVIRONMENT = \
EXTRA_DIST = \
$(TESTS) Coreutils.pm Makefile.am.in README acl envvar-check \
- expensive group-names input-tty lang-default mk-script priv-check \
+ expensive group-names input-tty lang-default mk-script \
+ other-fs-tmpdir priv-check \
rwx-to-mode sample-test setgid-check sparse-file \
umask-check very-expensive
@@ -28,8 +29,9 @@ SUBDIRS = \
tsort unexpand uniq wc
## N O T E :: Please do not add new directories.
-.PHONY: check-root t1 t2 t3 t4 t5
-check-root: t1 t2 t3 t4 t5
+all_t = t1 t2 t3 t4 t5 t6
+.PHONY: check-root $(all_t)
+check-root: $(all_t)
t1:
cd chown && $(MAKE) check TESTS=basic
@@ -41,6 +43,8 @@ t4:
cd rm && $(MAKE) check TESTS=fail-2eperm
t5:
cd tail-2 && $(MAKE) check TESTS=append-only
+t6:
+ cd rm && $(MAKE) check TESTS=one-file-system
check-recursive: root-hint
diff --git a/tests/mv/Makefile.am b/tests/mv/Makefile.am
index d17151de0..927bac89b 100644
--- a/tests/mv/Makefile.am
+++ b/tests/mv/Makefile.am
@@ -43,7 +43,7 @@ TESTS = \
i-1 hard-link-1 force partition-perm to-symlink dir-file diag \
part-symlink part-rename trailing-slash
-EXTRA_DIST = $(TESTS) setup vfat
+EXTRA_DIST = $(TESTS) vfat
TESTS_ENVIRONMENT = \
PERL="$(PERL)" \
PATH="$(VG_PATH_PREFIX)`pwd`/../../src$(PATH_SEPARATOR)$$PATH" \
diff --git a/tests/mv/acl b/tests/mv/acl
index b29f0e8ea..f570656fa 100755
--- a/tests/mv/acl
+++ b/tests/mv/acl
@@ -20,7 +20,7 @@
# 02110-1301, USA.
. $srcdir/../acl
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
# Make sure we get English translations.
. $srcdir/../lang-default
diff --git a/tests/mv/backup-is-src b/tests/mv/backup-is-src
index 00ecc1033..8d5c69d6e 100755
--- a/tests/mv/backup-is-src
+++ b/tests/mv/backup-is-src
@@ -23,7 +23,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
if test -z "$other_partition_tmpdir"; then
diff --git a/tests/mv/hard-link-1 b/tests/mv/hard-link-1
index dc345f110..7ce9176e1 100755
--- a/tests/mv/hard-link-1
+++ b/tests/mv/hard-link-1
@@ -24,7 +24,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
# Make sure we get English translations.
. $srcdir/../lang-default
diff --git a/tests/mv/into-self-2 b/tests/mv/into-self-2
index f5b7f74f8..11fddf210 100755
--- a/tests/mv/into-self-2
+++ b/tests/mv/into-self-2
@@ -25,7 +25,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
if test -z "$other_partition_tmpdir"; then
diff --git a/tests/mv/leak-fd b/tests/mv/leak-fd
index 5e5bb1a83..1592e0c50 100755
--- a/tests/mv/leak-fd
+++ b/tests/mv/leak-fd
@@ -30,7 +30,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
diff --git a/tests/mv/mv-special-1 b/tests/mv/mv-special-1
index dadcd697d..4d7c6978c 100755
--- a/tests/mv/mv-special-1
+++ b/tests/mv/mv-special-1
@@ -29,7 +29,7 @@ tmp=mv-spec.$$
trap 'status=$?; cd "$pwd" && exec 1>&2; rm -rf $tmp $other_partition_tmpdir && exit $status' 0
trap '(exit $?); exit' 1 2 13 15
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
# Make sure we get English translations.
. $srcdir/../lang-default
diff --git a/tests/mv/part-fail b/tests/mv/part-fail
index 2bbd9d247..e4c5dc96e 100755
--- a/tests/mv/part-fail
+++ b/tests/mv/part-fail
@@ -26,7 +26,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
. $srcdir/../lang-default
PRIV_CHECK_ARG=require-non-root . $srcdir/../priv-check
diff --git a/tests/mv/part-hardlink b/tests/mv/part-hardlink
index 9a8eac770..66cfe0d4c 100755
--- a/tests/mv/part-hardlink
+++ b/tests/mv/part-hardlink
@@ -26,7 +26,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
pwd=`pwd`
diff --git a/tests/mv/part-rename b/tests/mv/part-rename
index a4b361010..b8c03e092 100755
--- a/tests/mv/part-rename
+++ b/tests/mv/part-rename
@@ -25,7 +25,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
pwd=`pwd`
diff --git a/tests/mv/part-symlink b/tests/mv/part-symlink
index eb66779c6..5cd198cad 100755
--- a/tests/mv/part-symlink
+++ b/tests/mv/part-symlink
@@ -32,7 +32,7 @@ trap '(exit $?); exit' 1 2 13 15
pwd_tmp=$pwd/$tmp
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
# Make sure the programs use C-locale formats/translations.
. $srcdir/../lang-default
diff --git a/tests/mv/partition-perm b/tests/mv/partition-perm
index f510edf08..969dc74cd 100755
--- a/tests/mv/partition-perm
+++ b/tests/mv/partition-perm
@@ -23,7 +23,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
. $srcdir/../lang-default
diff --git a/tests/mv/to-symlink b/tests/mv/to-symlink
index 864fef6c7..6473cfba3 100755
--- a/tests/mv/to-symlink
+++ b/tests/mv/to-symlink
@@ -24,7 +24,7 @@ if test "$VERBOSE" = yes; then
mv --version
fi
-. $srcdir/setup
+. $srcdir/../other-fs-tmpdir
. $srcdir/../envvar-check
if test -z "$other_partition_tmpdir"; then
diff --git a/tests/mv/setup b/tests/other-fs-tmpdir
index 0886437aa..0886437aa 100755
--- a/tests/mv/setup
+++ b/tests/other-fs-tmpdir
diff --git a/tests/rm/Makefile.am b/tests/rm/Makefile.am
index ada461bc3..6670307e8 100644
--- a/tests/rm/Makefile.am
+++ b/tests/rm/Makefile.am
@@ -21,6 +21,7 @@
AUTOMAKE_OPTIONS = 1.1 gnits
TESTS = \
+ one-file-system \
ignorable \
readdir-bug \
empty-inacc \
diff --git a/tests/rm/one-file-system b/tests/rm/one-file-system
new file mode 100755
index 000000000..bb7ffeb20
--- /dev/null
+++ b/tests/rm/one-file-system
@@ -0,0 +1,67 @@
+#!/bin/sh
+# Demonstrate rm's new --one-file-system option.
+
+# Copyright (C) 2006 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 2 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ rm --version
+fi
+
+PRIV_CHECK_ARG=require-root . $srcdir/../priv-check
+. $srcdir/../lang-default
+. $srcdir/../other-fs-tmpdir
+
+if test -z "$other_partition_tmpdir"; then
+ (exit 77); exit 77
+fi
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd $pwd; chmod -R u+rwx $t0; rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+t0="$t0 $other_partition_tmpdir"
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+t=$other_partition_tmpdir
+mkdir -p a/b $t/y
+mount --bind $t a/b || framework_failure=1
+
+cat <<\EOF > exp || framework_failure=1
+rm: skipping `a/b', since it's on a different device
+EOF
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+fail=0
+
+rm --one-file-system -rf a 2> out && fail=1
+test -d $t/y || fail=1
+umount $t
+
+cmp out exp || fail=1
+test $fail = 1 && diff out exp 2> /dev/null
+
+(exit $fail); exit $fail