1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-05-31 14:56:58 +02:00
Files
coreutils/tests/rm/interactive-always.sh
T
Rasmus Villemoes c490a6ff2b rm: output number of arguments at the interactive prompt
Include the number of arguments which rm received in the "Remove all
arguments?" prompt.  This is useful in the, presumably, common case
where the arguments were not provided by hand, but instead were the
result of various shell expansions.  A simple, if somewhat contrived,
example (assuming rm is aliased to rm -I) could be:

  rm * .o

where the prompt "Remove 120 arguments?" is more likely to make
the user catch the problem.

* src/rm.c (main): Include correctly pluralized n_files
in the output message.  Also remove the now redudant "all".
* tests/rm/interactive-always.sh: Adjust to the new prompt.
* tests/rm/interactive-once.sh: Likewise.
2013-07-19 12:27:09 +01:00

88 lines
2.6 KiB
Bash
Executable File

#!/bin/sh
# Test the --interactive[=WHEN] changes added to coreutils 6.0
# Copyright (C) 2006-2013 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_ rm
touch file1-1 file1-2 file2-1 file2-2 file3-1 file3-2 file4-1 file4-2 \
|| framework_failure_
# If asked, answer no to first question, then yes to second.
echo 'n
y' > in || framework_failure_
rm -f out err || framework_failure_
# The prompt has a trailing space, and no newline, so an extra
# 'echo .' is inserted after each rm to make it obvious what was asked.
echo 'no WHEN' > err || fail=1
rm -R --interactive file1-* < in >> out 2>> err || fail=1
echo . >> err || fail=1
test -f file1-1 || fail=1
test -f file1-2 && fail=1
echo 'WHEN=never' >> err || fail=1
rm -R --interactive=never file2-* < in >> out 2>> err || fail=1
echo . >> err || fail=1
test -f file2-1 && fail=1
test -f file2-2 && fail=1
echo 'WHEN=once' >> err || fail=1
rm -R --interactive=once file3-* < in >> out 2>> err || fail=1
echo . >> err || fail=1
test -f file3-1 || fail=1
test -f file3-2 || fail=1
echo 'WHEN=always' >> err || fail=1
rm -R --interactive=always file4-* < in >> out 2>> err || fail=1
echo . >> err || fail=1
test -f file4-1 || fail=1
test -f file4-2 && fail=1
echo '-f overrides --interactive' >> err || fail=1
rm -R --interactive=once -f file1-* < in >> out 2>> err || fail=1
echo . >> err || fail=1
test -f file1-1 && fail=1
echo '--interactive overrides -f' >> err || fail=1
rm -R -f --interactive=once file4-* < in >> out 2>> err || fail=1
echo . >> err || fail=1
test -f file4-1 || fail=1
cat <<\EOF > expout || fail=1
EOF
sed 's/@remove_empty/rm: remove regular empty file/g' <<\EOF > experr || fail=1
no WHEN
@remove_empty 'file1-1'? @remove_empty 'file1-2'? .
WHEN=never
.
WHEN=once
rm: remove 2 arguments recursively? .
WHEN=always
@remove_empty 'file4-1'? @remove_empty 'file4-2'? .
-f overrides --interactive
.
--interactive overrides -f
rm: remove 1 argument recursively? .
EOF
compare expout out || fail=1
compare experr err || fail=1
Exit $fail