[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FYI] {master} spy: "rm -f" and "rm -rf" without args are portable

From: Stefano Lattarini
Subject: [FYI] {master} spy: "rm -f" and "rm -rf" without args are portable
Date: Wed, 22 Feb 2012 14:28:24 +0100

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

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:
which sprang from coreutils bug#10819:
and brought to the POSIX issue#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/ Add it.
 tests/ |    1 +
 tests/spy-rm.tap       |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 0 deletions(-)
 create mode 100755 tests/spy-rm.tap

diff --git a/tests/ b/tests/
index 04ade17..542e1db 100644
--- a/tests/
+++ b/tests/
@@ -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
+# 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 <>.
+# 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:
+#  <>
+#  <>
+#  <>
+. ./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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]