According to recent testing by Eric Blake, it seems that all non-museum rm(1) implementations don't complain if called without file operands, *if* the '-f' option is used. This behaviour will likely be mandated by future versions of the POSIX standard as well.
We'd like to start assuming this rm(1) behaviour in future Automake releases, in order to simplify some automake-provided cleanup rules. So, for the moment, we add a new "spy" test in our test suite, to try ensuring that all the rm(1) implementation we encounter "in the wild" truly behaves as expected in this regard. For more references, see this discussion on the bug-autoconf list: <http://lists.gnu.org/archive/html/bug-autoconf/2012-02/msg00002.html> which sprang from coreutils bug#10819: <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10819> and brought to the POSIX issue#542: <http://austingroupbugs.net/view.php?id=542> which has been accepted and will ensure that future version of the POSIX standards will mandate that 'rm' shouldn't complain if called without file operands, when the '-f' option is in use. * tests/spy-rm.test: New test. * tests/list-of-tests.mk: Add it. --- tests/list-of-tests.mk | 1 + tests/spy-rm.tap | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 0 deletions(-) create mode 100755 tests/spy-rm.tap diff --git a/tests/list-of-tests.mk b/tests/list-of-tests.mk index 04ade17..542e1db 100644 --- a/tests/list-of-tests.mk +++ b/tests/list-of-tests.mk @@ -946,6 +946,7 @@ spell2.test \ spell3.test \ spelling.test \ spy.test \ +spy-rm.tap \ stdinc.test \ stamph2.test \ stdlib.test \ diff --git a/tests/spy-rm.tap b/tests/spy-rm.tap new file mode 100755 index 0000000..af7ba2a --- /dev/null +++ b/tests/spy-rm.tap @@ -0,0 +1,48 @@ +#! /bin/sh +# Copyright (C) 2012 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, 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/>. + +# Check whether "rm -f" do not complain if called without file +# operands. We'd like to depend on this behaviour (which seems +# to hold on all non-museum systems, and will soon be mandated +# by POSIX as well) in future version of automake, to simplify +# automake-provided cleanup rules. +# References: +# <http://lists.gnu.org/archive/html/bug-autoconf/2012-02/msg00002.html> +# <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10819> +# <http://austingroupbugs.net/view.php?id=542> + +am_create_testdir=empty +. ./defs || Exit 1 + +plan_ 10 + +chk () +{ + if test -f /bin/rm; then + command_ok_ "/bin/rm $*" /bin/rm "$@" + else + skip_ -r "/bin/rm not found" + fi + command_ok_ "rm $*" rm "$@" +} + +chk -f +chk -rf +chk -fr +chk -f -r +chk -r -f + +: -- 1.7.9