tests: correct print_ver_ arguments and add a rule to enforce this
authorBernhard Voelker <mail@bernhard-voelker.de>
Wed, 22 Aug 2012 13:04:04 +0000 (15:04 +0200)
committerJim Meyering <meyering@redhat.com>
Wed, 22 Aug 2012 13:45:01 +0000 (15:45 +0200)
We use print_ver_ to run "PROG --version" for each program under
test.  Some tests have been derived from others, while the
argument(s) to print_ver_ have not been adapted.
Add a new cfg.mk rule to prohibit this.

* cfg.mk (sc_prohibit_test_calls_print_ver_with_irrelevant_argument):
New rule, to prohibit a test script from calling print_env_ for a
program not actually used by that test.
* tests/chown/basic: s/\(print_ver_\) chgrp/\1 chown/
* tests/cp/acl: s/\(print_ver_\) mv/\1 cp/
* tests/cp/capability: s/\(print_ver_\) ls/\1 cp/
* tests/cp/cp-parents: s/(print_ver_\) mv/\1 cp/
* tests/du/bind-mount-dir-cycle: s/(print_ver_\) rm/\1 du/
* tests/misc/wc-parallel: s/(print_ver_\) md5sum/\1 wc/

cfg.mk
tests/chown/basic
tests/cp/acl
tests/cp/capability
tests/cp/cp-parents
tests/du/bind-mount-dir-cycle
tests/misc/wc-parallel

diff --git a/cfg.mk b/cfg.mk
index 19a84fa..9db8022 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -329,6 +329,24 @@ sc_some_programs_must_avoid_exit_failure:
            && { echo '$(ME): do not use EXIT_FAILURE in the above'     \
                  1>&2; exit 1; } || :
 
+# Ensure that tests call the print_ver_ function for programs which are
+# actually used in that test.
+sc_prohibit_test_calls_print_ver_with_irrelevant_argument:
+       @git grep -w print_ver_ tests                                   \
+         | sed 's#:print_ver_##'                                       \
+         | { fail=0;                                                   \
+             while read file name; do                                  \
+               for i in $$name; do                                     \
+                 case "$$i" in install) i=ginstall;; esac;             \
+                 grep -w "$$i" $$file|grep -vw print_ver_|grep -q .    \
+                   || { fail=1;                                        \
+                        echo "*** Test: $$file, offending: $$i." 1>&2; };\
+               done;                                                   \
+             done;                                                     \
+             test $$fail = 0 || exit 1;                                \
+           } || { echo "$(ME): the above test(s) call print_ver_ for"  \
+                   "program(s) they don't use" 1>&2; exit 1; }
+
 # Exempt the contents of any usage function from the following.
 _continued_string_col_1 = \
 s/^usage .*?\n}//ms;/\\\n\w/ and print ("$$ARGV\n"),$$e=1;END{$$e||=0;exit $$e}
index 7c8951c..6225400 100755 (executable)
@@ -17,7 +17,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
-print_ver_ chgrp
+print_ver_ chown
 require_root_
 
 touch f || framework_failure_
index 26a7f42..4520fc9 100755 (executable)
@@ -18,7 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
-print_ver_ mv getfacl setfacl
+print_ver_ cp getfacl setfacl
 
 require_acl_
 
index 1338c94..94e5aea 100755 (executable)
@@ -17,7 +17,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
-print_ver_ ls
+print_ver_ cp
 require_root_
 working_umask_or_skip_
 
index b325c72..506e708 100755 (executable)
@@ -18,7 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
-print_ver_ mv
+print_ver_ cp
 
 working_umask_or_skip_
 
index 8f9e197..516ceae 100755 (executable)
@@ -17,7 +17,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
-print_ver_ rm
+print_ver_ du
 require_root_
 
 cleanup_()
index 074160f..6611b47 100755 (executable)
@@ -18,7 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
-print_ver_ md5sum
+print_ver_ wc
 
 (mkdir tmp && cd tmp && seq 2000 | xargs touch)