coreutils
[Top][All Lists]
Advanced

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

Re: [PATCH 3/7] build: require Automake >= 1.11.6


From: Jim Meyering
Subject: Re: [PATCH 3/7] build: require Automake >= 1.11.6
Date: Thu, 30 Aug 2012 19:13:21 +0200

Stefano Lattarini wrote:
> Now that we use AM_TESTS_ENVIRONMENT, we should require at least
> Automake >= 1.11.2; but since all the Automake version until 1.11.5
> are vulnerable to CVE-2012-3386:
>
>   <https://lists.gnu.org/archive/html/automake/2012-07/msg00023.html>
>
> it's even better to require 1.11.6.
>
> * configure.ac (AM_INIT_AUTOMAKE): Bump version requirement to 1.11.6.
> * bootstrap.conf ($buildreq): Likewise.

Thanks.
I'm about to push this series.
The only non-grammar/typo change has been to s/6/2/ to this c-set.
I prefer that because there is already a check in maint.mk
for that CVE, and besides, we don't want to preclude the use of
an automake that declares itself 1.11.2 yet that has the fix
for that bug.

Here's the modified series.
I'll wait for your ACK.

>From cddadbcd80991c0b7b91e2228510176e51a9ea1c Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Thu, 30 Aug 2012 14:13:07 +0200
Subject: [PATCH 1/7] tests: merge tests/check.mk into tests/Makefile.am

The separation has become unnecessary after all the ancient
'tests/*/Makefile.am' makefiles have been merged into the
"more-top-level" one 'tests/Makefile.am'.

* tests/check.mk: Merge ...
* tests/Makefile.am: ... in here.  Some comments tweaking while
at it.
---
 tests/Makefile.am | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 tests/check.mk    | 94 -----------------------------------------------------
 2 files changed, 95 insertions(+), 96 deletions(-)
 delete mode 100644 tests/check.mk

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 87d6cad..eed4e2e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,5 +1,100 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-.

+## Copyright (C) 2007-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 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/>.
+
+# Ensure that all version-controlled executable files are listed in TESTS.
+# Collect test names from the line matching /^TESTS = \\$$/ to the following
+# one that does not end in '\'.
+_v = TESTS
+_w = root_tests
+vc_exe_in_TESTS: Makefile
+       $(AM_V_GEN)if test -d $(top_srcdir)/.git && test $(srcdir) = .; then \
+        {                                                              \
+         for list in $(_v) $(_w); do                                   \
+           sed -n "/^$$list =[  ]*\\\\$$/,/[^\]$$/p" Makefile.am |     \
+           sed -n 's/^  *\([^$$         ]\{1,\}\).*/\1/p';             \
+         done;                                                         \
+         for f in `cd $(top_srcdir) &&                                 \
+          build-aux/vc-list-files $(subdir) | sed 's!^$(subdir)/!!'`; do \
+           test -f "$$f" && test -x "$$f" && echo "$$f";               \
+         done;                                                         \
+        } | sort | uniq -u | grep . && exit 1 ||:;                     \
+       else :; fi
+
+check: vc_exe_in_TESTS
+.PHONY: vc_exe_in_TESTS
+
+CLEANFILES =
+CLEANFILES += .built-programs
+check_DATA = .built-programs
+.built-programs: $(top_srcdir)/src/Makefile.am
+       $(AM_V_GEN)(cd $(top_builddir)/src                              \
+            && MAKEFLAGS= $(MAKE) -s built_programs.list)              \
+          > $@-t && mv $@-t $@
+
+# '$f' is set by the Automake-generated test harness to the path of the
+# current test script stripped of VPATH components, and is used by the
+# shell-or-perl script to determine the name of the temporary files to be
+# used.  Note that $f is a shell variable, not a make macro, so the use of
+# '$$f' below is correct, and not a typo.
+LOG_COMPILER = \
+  $(SHELL) $(srcdir)/shell-or-perl \
+  --test-name "$$f" --srcdir '$(srcdir)' \
+  --shell '$(SHELL)' --perl '$(PERL)' --
+
+# Note that the first lines are statements.  They ensure that environment
+# variables that can perturb tests are unset or set to expected values.
+# The rest are envvar settings that propagate build-related Makefile
+# variables to test scripts.
+TESTS_ENVIRONMENT =                            \
+  . $(srcdir)/lang-default;                    \
+  tmp__=$${TMPDIR-/tmp};                       \
+  test -d "$$tmp__" && test -w "$$tmp__" || tmp__=.;   \
+  . $(srcdir)/envvar-check;                    \
+  TMPDIR=$$tmp__; export TMPDIR;               \
+  export                                       \
+  VERSION='$(VERSION)'                         \
+  LOCALE_FR='$(LOCALE_FR)'                     \
+  LOCALE_FR_UTF8='$(LOCALE_FR_UTF8)'           \
+  abs_top_builddir='$(abs_top_builddir)'       \
+  abs_top_srcdir='$(abs_top_srcdir)'           \
+  abs_srcdir='$(abs_srcdir)'                   \
+  built_programs="`cat .built-programs`"       \
+  host_os=$(host_os)                           \
+  host_triplet='$(host_triplet)'               \
+  srcdir='$(srcdir)'                           \
+  top_srcdir='$(top_srcdir)'                   \
+  CONFIG_HEADER='$(abs_top_builddir)/$(CONFIG_INCLUDE)' \
+  CU_TEST_NAME=`basename '$(abs_srcdir)'`,`echo $$tst|sed 's,^\./,,;s,/,-,g'` \
+  CC='$(CC)'                                   \
+  AWK='$(AWK)'                                 \
+  EGREP='$(EGREP)'                             \
+  EXEEXT='$(EXEEXT)'                           \
+  MAKE=$(MAKE)                                 \
+  PACKAGE_BUGREPORT='$(PACKAGE_BUGREPORT)'     \
+  PACKAGE_VERSION=$(PACKAGE_VERSION)           \
+  PERL='$(PERL)'                               \
+  PREFERABLY_POSIX_SHELL='$(PREFERABLY_POSIX_SHELL)' \
+  ; test -d /usr/xpg4/bin && PATH='/usr/xpg4/bin$(PATH_SEPARATOR)'"$$PATH"; \
+  PATH='$(abs_top_builddir)/src$(PATH_SEPARATOR)'"$$PATH" \
+  ; 9>&2
+
+# On failure, display the global testsuite log on stdout.
+VERBOSE = yes
+
 # Sort in traditional ASCII order, regardless of the current locale;
 # otherwise we may get into trouble with distinct strings that the
 # current locale considers to be equal.
@@ -713,5 +808,3 @@ pr_data =                                   \
   pr/ttb3-0FF                                  \
   pr/ttb3-FF                                   \
   pr/w72l24f-ll
-
-include $(srcdir)/check.mk
diff --git a/tests/check.mk b/tests/check.mk
deleted file mode 100644
index 0e08f6d..0000000
--- a/tests/check.mk
+++ /dev/null
@@ -1,94 +0,0 @@
-# Include this file at the end of each tests/*/Makefile.am.
-# Copyright (C) 2007-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 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/>.
-
-# Ensure that all version-controlled executable files are listed in TESTS.
-# Collect test names from the line matching /^TESTS = \\$$/ to the following
-# one that does not end in '\'.
-_v = TESTS
-_w = root_tests
-vc_exe_in_TESTS: Makefile
-       $(AM_V_GEN)if test -d $(top_srcdir)/.git && test $(srcdir) = .; then \
-        {                                                              \
-         for list in $(_v) $(_w); do                                   \
-           sed -n "/^$$list =[  ]*\\\\$$/,/[^\]$$/p" Makefile.am |     \
-           sed -n 's/^  *\([^$$         ]\{1,\}\).*/\1/p';             \
-         done;                                                         \
-         for f in `cd $(top_srcdir) &&                                 \
-          build-aux/vc-list-files $(subdir) | sed 's!^$(subdir)/!!'`; do \
-           test -f "$$f" && test -x "$$f" && echo "$$f";               \
-         done;                                                         \
-        } | sort | uniq -u | grep . && exit 1 ||:;                     \
-       else :; fi
-
-check: vc_exe_in_TESTS
-.PHONY: vc_exe_in_TESTS
-
-CLEANFILES =
-CLEANFILES += .built-programs
-check_DATA = .built-programs
-.built-programs: $(top_srcdir)/src/Makefile.am
-       $(AM_V_GEN)(cd $(top_builddir)/src                              \
-            && MAKEFLAGS= $(MAKE) -s built_programs.list)              \
-          > $@-t && mv $@-t $@
-
-## '$f' is set by the Automake-generated test harness to the path of the
-## current test script stripped of VPATH components, and is used by the
-## shell-or-perl script to determine the name of the temporary files to be
-## used.  Note that $f is a shell variable, not a make macro, so the use of
-## '$$f' below is correct, and not a typo.
-LOG_COMPILER = \
-  $(SHELL) $(srcdir)/shell-or-perl \
-  --test-name "$$f" --srcdir '$(srcdir)' \
-  --shell '$(SHELL)' --perl '$(PERL)' --
-
-# Note that the first lines are statements.  They ensure that environment
-# variables that can perturb tests are unset or set to expected values.
-# The rest are envvar settings that propagate build-related Makefile
-# variables to test scripts.
-TESTS_ENVIRONMENT =                            \
-  . $(srcdir)/lang-default;                    \
-  tmp__=$${TMPDIR-/tmp};                       \
-  test -d "$$tmp__" && test -w "$$tmp__" || tmp__=.;   \
-  . $(srcdir)/envvar-check;                    \
-  TMPDIR=$$tmp__; export TMPDIR;               \
-  export                                       \
-  VERSION='$(VERSION)'                         \
-  LOCALE_FR='$(LOCALE_FR)'                     \
-  LOCALE_FR_UTF8='$(LOCALE_FR_UTF8)'           \
-  abs_top_builddir='$(abs_top_builddir)'       \
-  abs_top_srcdir='$(abs_top_srcdir)'           \
-  abs_srcdir='$(abs_srcdir)'                   \
-  built_programs="`cat .built-programs`"       \
-  host_os=$(host_os)                           \
-  host_triplet='$(host_triplet)'               \
-  srcdir='$(srcdir)'                           \
-  top_srcdir='$(top_srcdir)'                   \
-  CONFIG_HEADER='$(abs_top_builddir)/$(CONFIG_INCLUDE)' \
-  CU_TEST_NAME=`basename '$(abs_srcdir)'`,`echo $$tst|sed 's,^\./,,;s,/,-,g'` \
-  CC='$(CC)'                                   \
-  AWK='$(AWK)'                                 \
-  EGREP='$(EGREP)'                             \
-  EXEEXT='$(EXEEXT)'                           \
-  MAKE=$(MAKE)                                 \
-  PACKAGE_BUGREPORT='$(PACKAGE_BUGREPORT)'     \
-  PACKAGE_VERSION=$(PACKAGE_VERSION)           \
-  PERL='$(PERL)'                               \
-  PREFERABLY_POSIX_SHELL='$(PREFERABLY_POSIX_SHELL)' \
-  ; test -d /usr/xpg4/bin && PATH='/usr/xpg4/bin$(PATH_SEPARATOR)'"$$PATH"; \
-  PATH='$(abs_top_builddir)/src$(PATH_SEPARATOR)'"$$PATH" \
-  ; 9>&2
-
-VERBOSE = yes
--
1.7.12.146.g16d26b1


>From 34c9c8f70f485727fe26a9fff5dcfa3089f07186 Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Thu, 30 Aug 2012 14:13:08 +0200
Subject: [PATCH 2/7] tests: prefer AM_TESTS_ENVIRONMENT over
 TESTS_ENVIRONMENT

The latter should be reserved for user overrides.

* tests/Makefile.am (TESTS_ENVIRONMENT): Rename ...
(AM_TESTS_ENVIRONMENT): ... like this.
---
 tests/Makefile.am | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/Makefile.am b/tests/Makefile.am
index eed4e2e..9839030 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -59,7 +59,7 @@ LOG_COMPILER = \
 # variables that can perturb tests are unset or set to expected values.
 # The rest are envvar settings that propagate build-related Makefile
 # variables to test scripts.
-TESTS_ENVIRONMENT =                            \
+AM_TESTS_ENVIRONMENT =                         \
   . $(srcdir)/lang-default;                    \
   tmp__=$${TMPDIR-/tmp};                       \
   test -d "$$tmp__" && test -w "$$tmp__" || tmp__=.;   \
--
1.7.12.146.g16d26b1


>From 8381e35e240361dd7e0cd08edc6e619205d545a2 Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Thu, 30 Aug 2012 16:58:14 +0200
Subject: [PATCH 3/7] build: require Automake >= 1.11.2

Now that we use AM_TESTS_ENVIRONMENT, we must require
Automake >= 1.11.2.
* configure.ac (AM_INIT_AUTOMAKE): Bump version requirement to 1.11.2.
* bootstrap.conf ($buildreq): Likewise.
---
 bootstrap.conf | 2 +-
 configure.ac   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/bootstrap.conf b/bootstrap.conf
index eab6606..27b5302 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -309,7 +309,7 @@ gnulib_tool_option_extras="--tests-base=gnulib-tests 
--with-tests --symlink\
 # Build prerequisites
 buildreq="\
 autoconf   2.64
-automake   1.11.1
+automake   1.11.2
 autopoint  -
 bison      -
 gettext    0.17
diff --git a/configure.ac b/configure.ac
index 391b6bc..355dce3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,7 +32,7 @@ AC_CONFIG_SRCDIR([src/ls.c])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_HEADERS([lib/config.h:lib/config.hin])

-AM_INIT_AUTOMAKE([1.11.1 no-dist-gzip dist-xz color-tests parallel-tests
+AM_INIT_AUTOMAKE([1.11.2 no-dist-gzip dist-xz color-tests parallel-tests
                   subdir-objects])
 AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.

--
1.7.12.146.g16d26b1


>From e44178c59028e3c085a5c89014d44a4f647f3deb Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Thu, 30 Aug 2012 14:13:10 +0200
Subject: [PATCH 4/7] tests: avoid use of '-T' in shebang line to enable perl
 taint mode

* tests/rm/fail-eperm: Rename ...
* tests/rm/fail-eperm.xpl: ... like this
* tests/Makefile.am (TESTS): Adjust.
(TEST_EXTENSIONS): New, list '.xpl'.
(XPL_TEST_LOGS): New, run a perl test in tainted mode.
* tests/shell-or-perl: Simplify this script: we no longer need to
parse the shebang line and adjust the flags in the perl invocation
accordingly.
---
 tests/Makefile.am                       | 8 +++++++-
 tests/rm/{fail-eperm => fail-eperm.xpl} | 0
 tests/shell-or-perl                     | 9 ++-------
 3 files changed, 9 insertions(+), 8 deletions(-)
 rename tests/rm/{fail-eperm => fail-eperm.xpl} (100%)

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 9839030..581f803 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -45,6 +45,8 @@ check_DATA = .built-programs
             && MAKEFLAGS= $(MAKE) -s built_programs.list)              \
           > $@-t && mv $@-t $@

+TEST_EXTENSIONS = .xpl
+
 # '$f' is set by the Automake-generated test harness to the path of the
 # current test script stripped of VPATH components, and is used by the
 # shell-or-perl script to determine the name of the temporary files to be
@@ -55,6 +57,10 @@ LOG_COMPILER = \
   --test-name "$$f" --srcdir '$(srcdir)' \
   --shell '$(SHELL)' --perl '$(PERL)' --

+# Perl scripts that must be run in tainted mode.
+XPL_LOG_COMPILER = \
+  $(PERL) -wT -I$(srcdir) -MCoreutils -MCuSkip -M"CuTmpdir qw($$f)"
+
 # Note that the first lines are statements.  They ensure that environment
 # variables that can perturb tests are unset or set to expected values.
 # The rest are envvar settings that propagate build-related Makefile
@@ -207,7 +213,7 @@ TESTS =                                             \
   rm/empty-name                                        \
   rm/f-1                                       \
   rm/fail-eacces                               \
-  rm/fail-eperm                                        \
+  rm/fail-eperm.xpl                            \
   tail-2/assert                                        \
   rm/hash                                      \
   rm/i-1                                       \
diff --git a/tests/rm/fail-eperm b/tests/rm/fail-eperm.xpl
similarity index 100%
rename from tests/rm/fail-eperm
rename to tests/rm/fail-eperm.xpl
diff --git a/tests/shell-or-perl b/tests/shell-or-perl
index 58c80e3..cb80edf 100644
--- a/tests/shell-or-perl
+++ b/tests/shell-or-perl
@@ -1,7 +1,6 @@
 #! /bin/sh
 # Run a test script of the coreutils test scripts, picking up the right
-# interpreter (i.e., perl or the shell) and the right flags for it (e.g.,
-# perl '-T' flag for perl scripts that must run in tainted mode).
+# interpreter (i.e., perl or the shell) and the right flags for it.
 #
 # Copyright (C) 2011-2012 Free Software Foundation, Inc.
 #
@@ -96,11 +95,7 @@ case $shebang_line in
 '#!/usr/bin/perl'*)
   # The test is a perl script.
   if $cu_PERL -e 'use warnings' > /dev/null 2>&1; then
-    # Perl is available, see if we must run the test with taint
-    # mode on or not.
-    case $shebang_line in *\ -T*) T_=T;; *) T_=;; esac
-    # Now run it.
-    exec $cu_PERL -w$T_ -I"$srcdir" -MCoreutils -MCuSkip \
+    exec $cu_PERL -w -I"$srcdir" -MCoreutils -MCuSkip \
                   -M"CuTmpdir qw($test_name)" \
                   -- "$test_script" ${1+"$@"}
   else
--
1.7.12.146.g16d26b1


>From 00f5ba15dd91a3d9780fe1fbd06a4df436ae6714 Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Thu, 30 Aug 2012 14:13:11 +0200
Subject: [PATCH 5/7] tests: detect missing perl at configure runtime

* configure.ac (AM_CONDITIONAL): Set the conditional 'HAVE_PERL' to
true if the configure-time checks (as run by gl_PERL) have been able
to find a working perl.
* tests/no-perl: New script, report a diagnostic about "missing perl"
and exit with status 77.
* tests/Makefile.am (EXTRA_DIST): Distribute it.
(TESTSUITE_PERL): New, define to '$(PERL)' if a perl interpreter has
been found at configure time (i.e., if the 'HAVE_PERL' automake
conditional is true), and to '$(srcdir)/no-perl' otherwise.
(LOG_COMPILER): Use $(TESTSUITE_PERL) instead of $(PERL).
(XPL_LOG_COMPILER): Likewise.
* tests/shell-or-perl: Simplify: no need to actually check whether
perl is working.
---
 configure.ac        |  7 +++++++
 tests/Makefile.am   | 11 +++++++++--
 tests/no-perl       |  6 ++++++
 tests/shell-or-perl | 11 ++---------
 4 files changed, 24 insertions(+), 11 deletions(-)
 create mode 100644 tests/no-perl

diff --git a/configure.ac b/configure.ac
index 355dce3..083fd34 100644
--- a/configure.ac
+++ b/configure.ac
@@ -60,6 +60,13 @@ gl_EARLY
 gl_INIT
 coreutils_MACROS

+# The test suite needs to know if we have a working perl.
+# FIXME: this is suboptimal.  Ideally, we would be able to call gl_PERL
+# with an ACTION-IF-NOT-FOUND argument ...
+cu_have_perl=yes
+case $PERL in *"/missing ") cu_have_perl=no;; esac
+AM_CONDITIONAL([HAVE_PERL], [test $cu_have_perl = yes])
+
 AC_ARG_ENABLE([gcc-warnings],
   [AS_HELP_STRING([--enable-gcc-warnings],
                   [turn on lots of GCC warnings (for developers)])],
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 581f803..ff0af84 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -47,6 +47,12 @@ check_DATA = .built-programs

 TEST_EXTENSIONS = .xpl

+if HAVE_PERL
+TESTSUITE_PERL = $(PERL)
+else
+TESTSUITE_PERL = $(SHELL) $(srcdir)/no-perl
+endif
+
 # '$f' is set by the Automake-generated test harness to the path of the
 # current test script stripped of VPATH components, and is used by the
 # shell-or-perl script to determine the name of the temporary files to be
@@ -55,11 +61,11 @@ TEST_EXTENSIONS = .xpl
 LOG_COMPILER = \
   $(SHELL) $(srcdir)/shell-or-perl \
   --test-name "$$f" --srcdir '$(srcdir)' \
-  --shell '$(SHELL)' --perl '$(PERL)' --
+  --shell '$(SHELL)' --perl '$(TESTSUITE_PERL)' --

 # Perl scripts that must be run in tainted mode.
 XPL_LOG_COMPILER = \
-  $(PERL) -wT -I$(srcdir) -MCoreutils -MCuSkip -M"CuTmpdir qw($$f)"
+  $(TESTSUITE_PERL) -wT -I$(srcdir) -MCoreutils -MCuSkip -M"CuTmpdir qw($$f)"

 # Note that the first lines are statements.  They ensure that environment
 # variables that can perturb tests are unset or set to expected values.
@@ -118,6 +124,7 @@ EXTRA_DIST =                \
   init.cfg             \
   init.sh              \
   lang-default         \
+  no-perl              \
   other-fs-tmpdir      \
   sample-test          \
   shell-or-perl                \
diff --git a/tests/no-perl b/tests/no-perl
new file mode 100644
index 0000000..956a826
--- /dev/null
+++ b/tests/no-perl
@@ -0,0 +1,6 @@
+#! /bin/sh
+# Perl is not available, the test should be considered skipped.
+# FD 9 should have been opened by the test suite harness, pointing
+# to the original stderr (usually, the user's terminal).
+echo "test skipped: no usable version of Perl found" >&9
+exit 77
diff --git a/tests/shell-or-perl b/tests/shell-or-perl
index cb80edf..409db0e 100644
--- a/tests/shell-or-perl
+++ b/tests/shell-or-perl
@@ -94,15 +94,8 @@ read shebang_line < "$test_script" \
 case $shebang_line in
 '#!/usr/bin/perl'*)
   # The test is a perl script.
-  if $cu_PERL -e 'use warnings' > /dev/null 2>&1; then
-    exec $cu_PERL -w -I"$srcdir" -MCoreutils -MCuSkip \
-                  -M"CuTmpdir qw($test_name)" \
-                  -- "$test_script" ${1+"$@"}
-  else
-    # Perl is not available, skip the test.
-    echo "$test_name: skip: no usable version of Perl found"
-    exit 77
-  fi
+  exec $cu_PERL -w -I"$srcdir" -MCoreutils -MCuSkip \
+                -M"CuTmpdir qw($test_name)" -- "$test_script" ${1+"$@"}
   ;;
 *)
   # Assume the test is a shell script.
--
1.7.12.146.g16d26b1


>From 9eb4c31eb78c28dd9f72d1cbb940270311be343c Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Thu, 30 Aug 2012 14:13:12 +0200
Subject: [PATCH 6/7] tests: add .sh and .pl suffixes to shell and perl tests,
 respectively

Not only this shrinks the size of the generated Makefile (from > 6300
lines to ~3000), but will allow further simplifications in future
changes.

* tests/Makefile.am (TEST_EXTENSIONS): Add '.sh' and '.pl'.
(PL_LOG_COMPILER, SH_LOG_COMPILER): New, still defined simply to
$(LOG_COMPILER) for the time being.
(TESTS, root_tests): Adjust as described.
* All tests: Rename as described.
---
 tests/Makefile.am                                  | 989 +++++++++++----------
 tests/chgrp/{basic => basic.sh}                    |   0
 .../{default-no-deref => default-no-deref.sh}      |   0
 tests/chgrp/{deref => deref.sh}                    |   0
 tests/chgrp/{no-x => no-x.sh}                      |   0
 tests/chgrp/{posix-H => posix-H.sh}                |   0
 tests/chgrp/{recurse => recurse.sh}                |   0
 tests/chmod/{c-option => c-option.sh}              |   0
 tests/chmod/{equal-x => equal-x.sh}                |   0
 tests/chmod/{equals => equals.sh}                  |   0
 tests/chmod/{inaccessible => inaccessible.sh}      |   0
 tests/chmod/{no-x => no-x.sh}                      |   0
 tests/chmod/{octal => octal.sh}                    |   0
 tests/chmod/{setgid => setgid.sh}                  |   0
 tests/chmod/{silent => silent.sh}                  |   0
 tests/chmod/{thru-dangling => thru-dangling.sh}    |   0
 tests/chmod/{umask-x => umask-x.sh}                |   0
 tests/chmod/{usage => usage.sh}                    |   0
 tests/chown/{basic => basic.sh}                    |   0
 tests/chown/{deref => deref.sh}                    |   0
 tests/chown/{preserve-root => preserve-root.sh}    |   0
 tests/chown/{separator => separator.sh}            |   0
 tests/cp/{abuse => abuse.sh}                       |   0
 tests/cp/{acl => acl.sh}                           |   0
 tests/cp/{attr-existing => attr-existing.sh}       |   0
 tests/cp/{backup-1 => backup-1.sh}                 |   0
 tests/cp/{backup-dir => backup-dir.sh}             |   0
 tests/cp/{backup-is-src => backup-is-src.sh}       |   0
 tests/cp/{capability => capability.sh}             |   0
 tests/cp/{cp-HL => cp-HL.sh}                       |   0
 tests/cp/{cp-a-selinux => cp-a-selinux.sh}         |   0
 tests/cp/{cp-deref => cp-deref.sh}                 |   0
 tests/cp/{cp-i => cp-i.sh}                         |   0
 tests/cp/{cp-mv-backup => cp-mv-backup.sh}         |   0
 ...{cp-mv-enotsup-xattr => cp-mv-enotsup-xattr.sh} |   0
 tests/cp/{cp-parents => cp-parents.sh}             |   0
 tests/cp/{deref-slink => deref-slink.sh}           |   0
 tests/cp/{dir-rm-dest => dir-rm-dest.sh}           |   0
 tests/cp/{dir-slash => dir-slash.sh}               |   0
 tests/cp/{dir-vs-file => dir-vs-file.sh}           |   0
 .../cp/{existing-perm-dir => existing-perm-dir.sh} |   0
 .../{existing-perm-race => existing-perm-race.sh}  |   0
 tests/cp/{fail-perm => fail-perm.sh}               |   0
 tests/cp/{fiemap-2 => fiemap-2.sh}                 |   0
 tests/cp/{fiemap-empty => fiemap-empty.sh}         |   0
 tests/cp/{fiemap-perf => fiemap-perf.sh}           |   0
 tests/cp/{file-perm-race => file-perm-race.sh}     |   0
 tests/cp/{into-self => into-self.sh}               |   0
 tests/cp/{link-heap => link-heap.sh}               |   0
 tests/cp/{link-no-deref => link-no-deref.sh}       |   0
 tests/cp/{link-preserve => link-preserve.sh}       |   0
 tests/cp/{link-symlink => link-symlink.sh}         |   0
 tests/cp/{link => link.sh}                         |   0
 tests/cp/{nfs-removal-race => nfs-removal-race.sh} |   0
 tests/cp/{no-deref-link1 => no-deref-link1.sh}     |   0
 tests/cp/{no-deref-link2 => no-deref-link2.sh}     |   0
 tests/cp/{no-deref-link3 => no-deref-link3.sh}     |   0
 tests/cp/{parent-perm-race => parent-perm-race.sh} |   0
 tests/cp/{parent-perm => parent-perm.sh}           |   0
 tests/cp/{perm => perm.sh}                         |   0
 tests/cp/{preserve-2 => preserve-2.sh}             |   0
 tests/cp/{preserve-gid => preserve-gid.sh}         |   0
 tests/cp/{preserve-link => preserve-link.sh}       |   0
 ...{preserve-slink-time => preserve-slink-time.sh} |   0
 tests/cp/{proc-short-read => proc-short-read.sh}   |   0
 tests/cp/{proc-zero-len => proc-zero-len.sh}       |   0
 tests/cp/{r-vs-symlink => r-vs-symlink.sh}         |   0
 tests/cp/{reflink-auto => reflink-auto.sh}         |   0
 tests/cp/{reflink-perm => reflink-perm.sh}         |   0
 tests/cp/{same-file => same-file.sh}               |   0
 tests/cp/{slink-2-slink => slink-2-slink.sh}       |   0
 tests/cp/{sparse-fiemap => sparse-fiemap.sh}       |   0
 tests/cp/{sparse-to-pipe => sparse-to-pipe.sh}     |   0
 tests/cp/{sparse => sparse.sh}                     |   0
 tests/cp/{special-bits => special-bits.sh}         |   0
 tests/cp/{special-f => special-f.sh}               |   0
 tests/cp/{src-base-dot => src-base-dot.sh}         |   0
 tests/cp/{symlink-slash => symlink-slash.sh}       |   0
 tests/cp/{thru-dangling => thru-dangling.sh}       |   0
 tests/dd/{bytes => bytes.sh}                       |   0
 tests/dd/{direct => direct.sh}                     |   0
 tests/dd/{misc => misc.sh}                         |   0
 tests/dd/{nocache => nocache.sh}                   |   0
 tests/dd/{not-rewound => not-rewound.sh}           |   0
 tests/dd/{reblock => reblock.sh}                   |   0
 .../{skip-seek-past-dev => skip-seek-past-dev.sh}  |   0
 ...{skip-seek-past-file => skip-seek-past-file.sh} |   0
 tests/dd/{skip-seek => skip-seek.pl}               |   0
 tests/dd/{skip-seek2 => skip-seek2.sh}             |   0
 tests/dd/{sparse => sparse.sh}                     |   0
 tests/dd/{stderr => stderr.sh}                     |   0
 tests/dd/{unblock-sync => unblock-sync.sh}         |   0
 tests/dd/{unblock => unblock.pl}                   |   0
 tests/df/{df-P => df-P.sh}                         |   0
 tests/df/{header => header.sh}                     |   0
 tests/df/{no-mtab-status => no-mtab-status.sh}     |   0
 .../df/{problematic-chars => problematic-chars.sh} |   0
 .../df/{total-unprocessed => total-unprocessed.sh} |   0
 tests/df/{total-verify => total-verify.sh}         |   0
 tests/df/{unreadable => unreadable.sh}             |   0
 tests/du/{2g => 2g.sh}                             |   0
 tests/du/{8gb => 8gb.sh}                           |   0
 tests/du/{basic => basic.sh}                       |   0
 tests/du/{bigtime => bigtime.sh}                   |   0
 ...ind-mount-dir-cycle => bind-mount-dir-cycle.sh} |   0
 tests/du/{deref-args => deref-args.sh}             |   0
 tests/du/{deref => deref.sh}                       |   0
 tests/du/{exclude => exclude.sh}                   |   0
 tests/du/{fd-leak => fd-leak.sh}                   |   0
 tests/du/{files0-from-dir => files0-from-dir.sh}   |   0
 tests/du/{files0-from => files0-from.pl}           |   0
 tests/du/{hard-link => hard-link.sh}               |   0
 tests/du/{inacc-dest => inacc-dest.sh}             |   0
 tests/du/{inacc-dir => inacc-dir.sh}               |   0
 tests/du/{inaccessible-cwd => inaccessible-cwd.sh} |   0
 ...ong-from-unreadable => long-from-unreadable.sh} |   0
 tests/du/{long-sloop => long-sloop.sh}             |   0
 tests/du/{max-depth => max-depth.sh}               |   0
 ...ile-traversing => move-dir-while-traversing.sh} |   0
 tests/du/{no-deref => no-deref.sh}                 |   0
 tests/du/{no-x => no-x.sh}                         |   0
 tests/du/{one-file-system => one-file-system.sh}   |   0
 tests/du/{restore-wd => restore-wd.sh}             |   0
 tests/du/{slash => slash.sh}                       |   0
 tests/du/{slink => slink.sh}                       |   0
 tests/du/{trailing-slash => trailing-slash.sh}     |   0
 tests/du/{two-args => two-args.sh}                 |   0
 tests/fmt/{base => base.pl}                        |   0
 tests/fmt/{goal-option => goal-option.sh}          |   0
 tests/fmt/{long-line => long-line.sh}              |   0
 tests/id/{gnu-zero-uids => gnu-zero-uids.sh}       |   0
 tests/id/{no-context => no-context.sh}             |   0
 tests/install/{basic-1 => basic-1.sh}              |   0
 .../install/{create-leading => create-leading.sh}  |   0
 tests/install/{d-slashdot => d-slashdot.sh}        |   0
 .../install/{install-C-root => install-C-root.sh}  |   0
 .../{install-C-selinux => install-C-selinux.sh}    |   0
 tests/install/{install-C => install-C.sh}          |   0
 tests/install/{strip-program => strip-program.sh}  |   0
 tests/install/{trap => trap.sh}                    |   0
 tests/ln/{backup-1 => backup-1.sh}                 |   0
 tests/ln/{hard-backup => hard-backup.sh}           |   0
 tests/ln/{hard-to-sym => hard-to-sym.sh}           |   0
 tests/ln/{misc => misc.sh}                         |   0
 tests/ln/{relative => relative.sh}                 |   0
 tests/ln/{sf-1 => sf-1.sh}                         |   0
 ...nt-dest => slash-decorated-nonexistent-dest.sh} |   0
 tests/ln/{target-1 => target-1.sh}                 |   0
 tests/ls/{abmon-align => abmon-align.sh}           |   0
 tests/ls/{block-size => block-size.sh}             |   0
 tests/ls/{capability => capability.sh}             |   0
 .../{color-clear-to-eol => color-clear-to-eol.sh}  |   0
 tests/ls/{color-dtype-dir => color-dtype-dir.sh}   |   0
 tests/ls/{color-norm => color-norm.sh}             |   0
 tests/ls/{dangle => dangle.sh}                     |   0
 tests/ls/{dired => dired.sh}                       |   0
 tests/ls/{file-type => file-type.sh}               |   0
 tests/ls/{follow-slink => follow-slink.sh}         |   0
 tests/ls/{getxattr-speedup => getxattr-speedup.sh} |   0
 tests/ls/{infloop => infloop.sh}                   |   0
 tests/ls/{inode => inode.sh}                       |   0
 tests/ls/{m-option => m-option.sh}                 |   0
 tests/ls/{multihardlink => multihardlink.sh}       |   0
 tests/ls/{nameless-uid => nameless-uid.sh}         |   0
 tests/ls/{no-arg => no-arg.sh}                     |   0
 tests/ls/{no-cap => no-cap.sh}                     |   0
 ...c-selinux-segfault => proc-selinux-segfault.sh} |   0
 ...ountpoint-inode => readdir-mountpoint-inode.sh} |   0
 tests/ls/{recursive => recursive.sh}               |   0
 ...rel-symlink-color => root-rel-symlink-color.sh} |   0
 tests/ls/{rt-1 => rt-1.sh}                         |   0
 tests/ls/{slink-acl => slink-acl.sh}               |   0
 tests/ls/{stat-dtype => stat-dtype.sh}             |   0
 tests/ls/{stat-failed => stat-failed.sh}           |   0
 tests/ls/{stat-free-color => stat-free-color.sh}   |   0
 .../{stat-free-symlinks => stat-free-symlinks.sh}  |   0
 tests/ls/{stat-vs-dirent => stat-vs-dirent.sh}     |   0
 tests/ls/{symlink-slash => symlink-slash.sh}       |   0
 tests/ls/{time-style-diag => time-style-diag.sh}   |   0
 tests/ls/{x-option => x-option.sh}                 |   0
 tests/misc/{arch => arch.sh}                       |   0
 tests/misc/{base64 => base64.pl}                   |   0
 tests/misc/{basename => basename.pl}               |   0
 tests/misc/{cat-buf => cat-buf.sh}                 |   0
 tests/misc/{cat-proc => cat-proc.sh}               |   0
 tests/misc/{chcon-fail => chcon-fail.sh}           |   0
 tests/misc/{chcon => chcon.sh}                     |   0
 .../{chroot-credentials => chroot-credentials.sh}  |   0
 tests/misc/{chroot-fail => chroot-fail.sh}         |   0
 tests/misc/{close-stdout => close-stdout.sh}       |   0
 tests/misc/{comm => comm.pl}                       |   0
 tests/misc/{csplit-1000 => csplit-1000.sh}         |   0
 tests/misc/{csplit-heap => csplit-heap.sh}         |   0
 tests/misc/{csplit => csplit.sh}                   |   0
 tests/misc/{cut => cut.pl}                         |   0
 tests/misc/{date-next-dow => date-next-dow.pl}     |   0
 tests/misc/{date-sec => date-sec.sh}               |   0
 tests/misc/{date => date.pl}                       |   0
 tests/misc/{dircolors => dircolors.pl}             |   0
 tests/misc/{dirname => dirname.pl}                 |   0
 tests/misc/{env-null => env-null.sh}               |   0
 tests/misc/{env => env.sh}                         |   0
 tests/misc/{expand => expand.pl}                   |   0
 tests/misc/{expr => expr.pl}                       |   0
 tests/misc/{factor => factor.pl}                   |   0
 tests/misc/{false-status => false-status.sh}       |   0
 tests/misc/{fold => fold.pl}                       |   0
 tests/misc/{groups-dash => groups-dash.sh}         |   0
 tests/misc/{groups-version => groups-version.sh}   |   0
 tests/misc/{head-c => head-c.sh}                   |   0
 tests/misc/{head-elide-tail => head-elide-tail.pl} |   0
 tests/misc/{head-pos => head-pos.sh}               |   0
 tests/misc/{head => head.pl}                       |   0
 tests/misc/{help-version => help-version.sh}       |   0
 tests/misc/{id-context => id-context.sh}           |   0
 tests/misc/{id-groups => id-groups.sh}             |   0
 tests/misc/{id-setgid => id-setgid.sh}             |   0
 tests/misc/{invalid-opt => invalid-opt.pl}         |   0
 tests/misc/{join => join.pl}                       |   0
 tests/misc/{ls-misc => ls-misc.pl}                 |   0
 tests/misc/{ls-time => ls-time.sh}                 |   0
 tests/misc/{md5sum-bsd => md5sum-bsd.sh}           |   0
 tests/misc/{md5sum-newline => md5sum-newline.pl}   |   0
 tests/misc/{md5sum-parallel => md5sum-parallel.sh} |   0
 tests/misc/{md5sum => md5sum.pl}                   |   0
 tests/misc/{mknod => mknod.sh}                     |   0
 tests/misc/{mktemp => mktemp.pl}                   |   0
 tests/misc/{nice-fail => nice-fail.sh}             |   0
 tests/misc/{nice => nice.sh}                       |   0
 tests/misc/{nl => nl.sh}                           |   0
 tests/misc/{nohup => nohup.sh}                     |   0
 tests/misc/{nproc-avail => nproc-avail.sh}         |   0
 tests/misc/{nproc-positive => nproc-positive.sh}   |   0
 tests/misc/{od-N => od-N.sh}                       |   0
 tests/misc/{od-float => od-float.sh}               |   0
 tests/misc/{od-multiple-t => od-multiple-t.sh}     |   0
 tests/misc/{od-x8 => od-x8.sh}                     |   0
 tests/misc/{od => od.pl}                           |   0
 tests/misc/{paste => paste.pl}                     |   0
 tests/misc/{pathchk1 => pathchk1.sh}               |   0
 tests/misc/{pr => pr.pl}                           |   0
 tests/misc/{printenv => printenv.sh}               |   0
 tests/misc/{printf-cov => printf-cov.pl}           |   0
 tests/misc/{printf-hex => printf-hex.sh}           |   0
 tests/misc/{printf-surprise => printf-surprise.sh} |   0
 tests/misc/{printf => printf.sh}                   |   0
 tests/misc/{ptx-overrun => ptx-overrun.sh}         |   0
 tests/misc/{ptx => ptx.pl}                         |   0
 tests/misc/{pwd-long => pwd-long.sh}               |   0
 tests/misc/{pwd-option => pwd-option.sh}           |   0
 .../misc/{readlink-fp-loop => readlink-fp-loop.sh} |   0
 tests/misc/{readlink-root => readlink-root.sh}     |   0
 tests/misc/{realpath => realpath.sh}               |   0
 .../{runcon-no-reorder => runcon-no-reorder.sh}    |   0
 tests/misc/{selinux => selinux.sh}                 |   0
 tests/misc/{seq-long-double => seq-long-double.sh} |   0
 tests/misc/{seq => seq.pl}                         |   0
 tests/misc/{sha1sum-vec => sha1sum-vec.pl}         |   0
 tests/misc/{sha1sum => sha1sum.pl}                 |   0
 tests/misc/{sha224sum => sha224sum.pl}             |   0
 tests/misc/{sha256sum => sha256sum.pl}             |   0
 tests/misc/{sha384sum => sha384sum.pl}             |   0
 tests/misc/{sha512sum => sha512sum.pl}             |   0
 tests/misc/{shred-exact => shred-exact.sh}         |   0
 tests/misc/{shred-passes => shred-passes.sh}       |   0
 tests/misc/{shred-remove => shred-remove.sh}       |   0
 tests/misc/{shuf => shuf.sh}                       |   0
 .../misc/{sort-NaN-infloop => sort-NaN-infloop.sh} |   0
 ...t-benchmark-random => sort-benchmark-random.sh} |   0
 .../{sort-compress-hang => sort-compress-hang.sh}  |   0
 .../{sort-compress-proc => sort-compress-proc.sh}  |   0
 tests/misc/{sort-compress => sort-compress.sh}     |   0
 tests/misc/{sort-continue => sort-continue.sh}     |   0
 tests/misc/{sort-debug-keys => sort-debug-keys.sh} |   0
 tests/misc/{sort-debug-warn => sort-debug-warn.sh} |   0
 tests/misc/{sort-discrim => sort-discrim.sh}       |   0
 tests/misc/{sort-exit-early => sort-exit-early.sh} |   0
 .../misc/{sort-files0-from => sort-files0-from.pl} |   0
 tests/misc/{sort-float => sort-float.sh}           |   0
 .../{sort-merge-fdlimit => sort-merge-fdlimit.sh}  |   0
 tests/misc/{sort-merge => sort-merge.pl}           |   0
 tests/misc/{sort-month => sort-month.sh}           |   0
 tests/misc/{sort-rand => sort-rand.sh}             |   0
 ...{sort-spinlock-abuse => sort-spinlock-abuse.sh} |   0
 ...t-stale-thread-mem => sort-stale-thread-mem.sh} |   0
 tests/misc/{sort-u-FMR => sort-u-FMR.sh}           |   0
 .../misc/{sort-unique-segv => sort-unique-segv.sh} |   0
 tests/misc/{sort-unique => sort-unique.sh}         |   0
 tests/misc/{sort-version => sort-version.sh}       |   0
 tests/misc/{sort => sort.pl}                       |   0
 tests/misc/{stat-birthtime => stat-birthtime.sh}   |   0
 tests/misc/{stat-fmt => stat-fmt.sh}               |   0
 tests/misc/{stat-hyphen => stat-hyphen.sh}         |   0
 tests/misc/{stat-mount => stat-mount.sh}           |   0
 .../misc/{stat-nanoseconds => stat-nanoseconds.sh} |   0
 tests/misc/{stat-printf => stat-printf.pl}         |   0
 tests/misc/{stat-slash => stat-slash.sh}           |   0
 tests/misc/{stdbuf => stdbuf.sh}                   |   0
 tests/misc/{stty-invalid => stty-invalid.sh}       |   0
 tests/misc/{stty-pairs => stty-pairs.sh}           |   0
 tests/misc/{stty-row-col => stty-row-col.sh}       |   0
 tests/misc/{stty => stty.sh}                       |   0
 tests/misc/{sum-sysv => sum-sysv.sh}               |   0
 tests/misc/{sum => sum.pl}                         |   0
 .../{tac-2-nonseekable => tac-2-nonseekable.sh}    |   0
 tests/misc/{tac-continue => tac-continue.sh}       |   0
 tests/misc/{tac => tac.pl}                         |   0
 tests/misc/{tail => tail.pl}                       |   0
 tests/misc/{tee-dash => tee-dash.sh}               |   0
 tests/misc/{tee => tee.sh}                         |   0
 tests/misc/{test-diag => test-diag.pl}             |   0
 tests/misc/{test => test.pl}                       |   0
 tests/misc/{timeout-group => timeout-group.sh}     |   0
 .../{timeout-parameters => timeout-parameters.sh}  |   0
 tests/misc/{timeout => timeout.sh}                 |   0
 tests/misc/{tr-case-class => tr-case-class.sh}     |   0
 tests/misc/{tr => tr.pl}                           |   0
 ...ngling-symlink => truncate-dangling-symlink.sh} |   0
 .../{truncate-dir-fail => truncate-dir-fail.sh}    |   0
 .../{truncate-fail-diag => truncate-fail-diag.sh}  |   0
 tests/misc/{truncate-fifo => truncate-fifo.sh}     |   0
 ...reate-missing => truncate-no-create-missing.sh} |   0
 .../{truncate-overflow => truncate-overflow.sh}    |   0
 ...e-owned-by-other => truncate-owned-by-other.sh} |   0
 ...{truncate-parameters => truncate-parameters.sh} |   0
 .../{truncate-relative => truncate-relative.sh}    |   0
 tests/misc/{tsort => tsort.pl}                     |   0
 tests/misc/{tty-eof => tty-eof.pl}                 |   0
 tests/misc/{unexpand => unexpand.pl}               |   0
 tests/misc/{uniq-perf => uniq-perf.sh}             |   0
 tests/misc/{uniq => uniq.pl}                       |   0
 tests/misc/{wc-files0-from => wc-files0-from.pl}   |   0
 tests/misc/{wc-files0 => wc-files0.sh}             |   0
 tests/misc/{wc-parallel => wc-parallel.sh}         |   0
 tests/misc/{wc => wc.pl}                           |   0
 tests/misc/{xattr => xattr.sh}                     |   0
 tests/misc/{xstrtol => xstrtol.pl}                 |   0
 tests/mkdir/{p-1 => p-1.sh}                        |   0
 tests/mkdir/{p-2 => p-2.sh}                        |   0
 tests/mkdir/{p-3 => p-3.sh}                        |   0
 tests/mkdir/{p-slashdot => p-slashdot.sh}          |   0
 tests/mkdir/{p-thru-slink => p-thru-slink.sh}      |   0
 tests/mkdir/{p-v => p-v.sh}                        |   0
 tests/mkdir/{parents => parents.sh}                |   0
 tests/mkdir/{perm => perm.sh}                      |   0
 tests/mkdir/{selinux => selinux.sh}                |   0
 tests/mkdir/{special-1 => special-1.sh}            |   0
 tests/mkdir/{t-slash => t-slash.sh}                |   0
 ...e-under-readonly => writable-under-readonly.sh} |   0
 tests/mv/{acl => acl.sh}                           |   0
 tests/mv/{atomic => atomic.sh}                     |   0
 tests/mv/{atomic2 => atomic2.sh}                   |   0
 tests/mv/{backup-dir => backup-dir.sh}             |   0
 tests/mv/{backup-is-src => backup-is-src.sh}       |   0
 tests/mv/{childproof => childproof.sh}             |   0
 tests/mv/{diag => diag.sh}                         |   0
 tests/mv/{dir-file => dir-file.sh}                 |   0
 tests/mv/{dir2dir => dir2dir.sh}                   |   0
 tests/mv/{dup-source => dup-source.sh}             |   0
 tests/mv/{force => force.sh}                       |   0
 tests/mv/{hard-2 => hard-2.sh}                     |   0
 tests/mv/{hard-3 => hard-3.sh}                     |   0
 tests/mv/{hard-4 => hard-4.sh}                     |   0
 tests/mv/{hard-link-1 => hard-link-1.sh}           |   0
 tests/mv/{hard-verbose => hard-verbose.sh}         |   0
 tests/mv/{i-1 => i-1.pl}                           |   0
 tests/mv/{i-2 => i-2.sh}                           |   0
 tests/mv/{i-3 => i-3.sh}                           |   0
 tests/mv/{i-4 => i-4.sh}                           |   0
 tests/mv/{i-5 => i-5.sh}                           |   0
 tests/mv/{i-link-no => i-link-no.sh}               |   0
 tests/mv/{into-self-2 => into-self-2.sh}           |   0
 tests/mv/{into-self-3 => into-self-3.sh}           |   0
 tests/mv/{into-self-4 => into-self-4.sh}           |   0
 tests/mv/{into-self => into-self.sh}               |   0
 tests/mv/{leak-fd => leak-fd.sh}                   |   0
 tests/mv/{mv-n => mv-n.sh}                         |   0
 tests/mv/{mv-special-1 => mv-special-1.sh}         |   0
 tests/mv/{no-target-dir => no-target-dir.sh}       |   0
 tests/mv/{part-fail => part-fail.sh}               |   0
 tests/mv/{part-hardlink => part-hardlink.sh}       |   0
 tests/mv/{part-rename => part-rename.sh}           |   0
 tests/mv/{part-symlink => part-symlink.sh}         |   0
 tests/mv/{partition-perm => partition-perm.sh}     |   0
 tests/mv/{perm-1 => perm-1.sh}                     |   0
 tests/mv/{sticky-to-xpart => sticky-to-xpart.sh}   |   0
 ...nk-to-self => symlink-onto-hardlink-to-self.sh} |   0
 ...link-onto-hardlink => symlink-onto-hardlink.sh} |   0
 tests/mv/{to-symlink => to-symlink.sh}             |   0
 tests/mv/{trailing-slash => trailing-slash.sh}     |   0
 tests/mv/{update => update.sh}                     |   0
 tests/pr/{pr-tests => pr-tests.pl}                 |   0
 tests/readlink/{can-e => can-e.sh}                 |   0
 tests/readlink/{can-f => can-f.sh}                 |   0
 tests/readlink/{can-m => can-m.sh}                 |   0
 tests/readlink/{rl-1 => rl-1.sh}                   |   0
 tests/rm/{cycle => cycle.sh}                       |   0
 tests/rm/{d-1 => d-1.sh}                           |   0
 tests/rm/{d-2 => d-2.sh}                           |   0
 tests/rm/{d-3 => d-3.sh}                           |   0
 tests/rm/{dangling-symlink => dangling-symlink.sh} |   0
 tests/rm/{deep-1 => deep-1.sh}                     |   0
 tests/rm/{deep-2 => deep-2.sh}                     |   0
 tests/rm/{dir-no-w => dir-no-w.sh}                 |   0
 tests/rm/{dir-nonrecur => dir-nonrecur.sh}         |   0
 tests/rm/{dot-rel => dot-rel.sh}                   |   0
 tests/rm/{empty-inacc => empty-inacc.sh}           |   0
 tests/rm/{empty-name => empty-name.pl}             |   0
 tests/rm/{ext3-perf => ext3-perf.sh}               |   0
 tests/rm/{f-1 => f-1.sh}                           |   0
 tests/rm/{fail-2eperm => fail-2eperm.sh}           |   0
 tests/rm/{fail-eacces => fail-eacces.sh}           |   0
 tests/rm/{hash => hash.sh}                         |   0
 tests/rm/{i-1 => i-1.sh}                           |   0
 tests/rm/{i-never => i-never.sh}                   |   0
 tests/rm/{i-no-r => i-no-r.sh}                     |   0
 tests/rm/{ignorable => ignorable.sh}               |   0
 tests/rm/{inaccessible => inaccessible.sh}         |   0
 .../{interactive-always => interactive-always.sh}  |   0
 tests/rm/{interactive-once => interactive-once.sh} |   0
 tests/rm/{ir-1 => ir-1.sh}                         |   0
 tests/rm/{isatty => isatty.sh}                     |   0
 ...r-entries-vs-OOM => many-dir-entries-vs-OOM.sh} |   0
 tests/rm/{no-give-up => no-give-up.sh}             |   0
 tests/rm/{one-file-system => one-file-system.sh}   |   0
 tests/rm/{one-file-system2 => one-file-system2.sh} |   0
 tests/rm/{r-1 => r-1.sh}                           |   0
 tests/rm/{r-2 => r-2.sh}                           |   0
 tests/rm/{r-3 => r-3.sh}                           |   0
 tests/rm/{r-4 => r-4.sh}                           |   0
 tests/rm/{read-only => read-only.sh}               |   0
 tests/rm/{readdir-bug => readdir-bug.sh}           |   0
 tests/rm/{rm1 => rm1.sh}                           |   0
 tests/rm/{rm2 => rm2.sh}                           |   0
 tests/rm/{rm3 => rm3.sh}                           |   0
 tests/rm/{rm4 => rm4.sh}                           |   0
 tests/rm/{rm5 => rm5.sh}                           |   0
 tests/rm/{sunos-1 => sunos-1.sh}                   |   0
 tests/rm/{unread2 => unread2.sh}                   |   0
 tests/rm/{unread3 => unread3.sh}                   |   0
 tests/rm/{unreadable => unreadable.pl}             |   0
 tests/rm/{v-slash => v-slash.sh}                   |   0
 tests/rmdir/{fail-perm => fail-perm.sh}            |   0
 tests/rmdir/{ignore => ignore.sh}                  |   0
 tests/rmdir/{t-slash => t-slash.sh}                |   0
 .../{additional-suffix => additional-suffix.sh}    |   0
 tests/split/{b-chunk => b-chunk.sh}                |   0
 tests/split/{fail => fail.sh}                      |   0
 tests/split/{filter => filter.sh}                  |   0
 tests/split/{guard-input => guard-input.sh}        |   0
 tests/split/{l-chunk => l-chunk.sh}                |   0
 tests/split/{lines => lines.sh}                    |   0
 tests/split/{numeric => numeric.sh}                |   0
 tests/split/{r-chunk => r-chunk.sh}                |   0
 .../{suffix-auto-length => suffix-auto-length.sh}  |   0
 tests/split/{suffix-length => suffix-length.sh}    |   0
 tests/tail-2/{F-vs-missing => F-vs-missing.sh}     |   0
 tests/tail-2/{F-vs-rename => F-vs-rename.sh}       |   0
 tests/tail-2/{append-only => append-only.sh}       |   0
 tests/tail-2/{assert-2 => assert-2.sh}             |   0
 tests/tail-2/{assert => assert.sh}                 |   0
 tests/tail-2/{big-4gb => big-4gb.sh}               |   0
 tests/tail-2/{flush-initial => flush-initial.sh}   |   0
 tests/tail-2/{follow-name => follow-name.sh}       |   0
 tests/tail-2/{follow-stdin => follow-stdin.sh}     |   0
 tests/tail-2/{infloop-1 => infloop-1.sh}           |   0
 .../{inotify-hash-abuse => inotify-hash-abuse.sh}  |   0
 ...{inotify-hash-abuse2 => inotify-hash-abuse2.sh} |   0
 tests/tail-2/{inotify-race => inotify-race.sh}     |   0
 tests/tail-2/{inotify-rotate => inotify-rotate.sh} |   0
 tests/tail-2/{pid => pid.sh}                       |   0
 tests/tail-2/{pipe-f => pipe-f.sh}                 |   0
 tests/tail-2/{pipe-f2 => pipe-f2.sh}               |   0
 tests/tail-2/{proc-ksyms => proc-ksyms.sh}         |   0
 tests/tail-2/{start-middle => start-middle.sh}     |   0
 tests/tail-2/{tail-n0f => tail-n0f.sh}             |   0
 tests/tail-2/{wait => wait.sh}                     |   0
 tests/touch/{60-seconds => 60-seconds.sh}          |   0
 .../{dangling-symlink => dangling-symlink.sh}      |   0
 tests/touch/{dir-1 => dir-1.sh}                    |   0
 tests/touch/{empty-file => empty-file.sh}          |   0
 tests/touch/{fail-diag => fail-diag.sh}            |   0
 tests/touch/{fifo => fifo.sh}                      |   0
 .../{no-create-missing => no-create-missing.sh}    |   0
 tests/touch/{no-dereference => no-dereference.sh}  |   0
 tests/touch/{no-rights => no-rights.sh}            |   0
 tests/touch/{not-owner => not-owner.sh}            |   0
 .../{now-owned-by-other => now-owned-by-other.sh}  |   0
 tests/touch/{obsolescent => obsolescent.sh}        |   0
 tests/touch/{read-only => read-only.sh}            |   0
 tests/touch/{relative => relative.sh}              |   0
 tests/touch/{trailing-slash => trailing-slash.sh}  |   0
 492 files changed, 496 insertions(+), 493 deletions(-)
 rename tests/chgrp/{basic => basic.sh} (100%)
 rename tests/chgrp/{default-no-deref => default-no-deref.sh} (100%)
 rename tests/chgrp/{deref => deref.sh} (100%)
 rename tests/chgrp/{no-x => no-x.sh} (100%)
 rename tests/chgrp/{posix-H => posix-H.sh} (100%)
 rename tests/chgrp/{recurse => recurse.sh} (100%)
 rename tests/chmod/{c-option => c-option.sh} (100%)
 rename tests/chmod/{equal-x => equal-x.sh} (100%)
 rename tests/chmod/{equals => equals.sh} (100%)
 rename tests/chmod/{inaccessible => inaccessible.sh} (100%)
 rename tests/chmod/{no-x => no-x.sh} (100%)
 rename tests/chmod/{octal => octal.sh} (100%)
 rename tests/chmod/{setgid => setgid.sh} (100%)
 rename tests/chmod/{silent => silent.sh} (100%)
 rename tests/chmod/{thru-dangling => thru-dangling.sh} (100%)
 rename tests/chmod/{umask-x => umask-x.sh} (100%)
 rename tests/chmod/{usage => usage.sh} (100%)
 rename tests/chown/{basic => basic.sh} (100%)
 rename tests/chown/{deref => deref.sh} (100%)
 rename tests/chown/{preserve-root => preserve-root.sh} (100%)
 rename tests/chown/{separator => separator.sh} (100%)
 rename tests/cp/{abuse => abuse.sh} (100%)
 rename tests/cp/{acl => acl.sh} (100%)
 rename tests/cp/{attr-existing => attr-existing.sh} (100%)
 rename tests/cp/{backup-1 => backup-1.sh} (100%)
 rename tests/cp/{backup-dir => backup-dir.sh} (100%)
 rename tests/cp/{backup-is-src => backup-is-src.sh} (100%)
 rename tests/cp/{capability => capability.sh} (100%)
 rename tests/cp/{cp-HL => cp-HL.sh} (100%)
 rename tests/cp/{cp-a-selinux => cp-a-selinux.sh} (100%)
 rename tests/cp/{cp-deref => cp-deref.sh} (100%)
 rename tests/cp/{cp-i => cp-i.sh} (100%)
 rename tests/cp/{cp-mv-backup => cp-mv-backup.sh} (100%)
 rename tests/cp/{cp-mv-enotsup-xattr => cp-mv-enotsup-xattr.sh} (100%)
 rename tests/cp/{cp-parents => cp-parents.sh} (100%)
 rename tests/cp/{deref-slink => deref-slink.sh} (100%)
 rename tests/cp/{dir-rm-dest => dir-rm-dest.sh} (100%)
 rename tests/cp/{dir-slash => dir-slash.sh} (100%)
 rename tests/cp/{dir-vs-file => dir-vs-file.sh} (100%)
 rename tests/cp/{existing-perm-dir => existing-perm-dir.sh} (100%)
 rename tests/cp/{existing-perm-race => existing-perm-race.sh} (100%)
 rename tests/cp/{fail-perm => fail-perm.sh} (100%)
 rename tests/cp/{fiemap-2 => fiemap-2.sh} (100%)
 rename tests/cp/{fiemap-empty => fiemap-empty.sh} (100%)
 rename tests/cp/{fiemap-perf => fiemap-perf.sh} (100%)
 rename tests/cp/{file-perm-race => file-perm-race.sh} (100%)
 rename tests/cp/{into-self => into-self.sh} (100%)
 rename tests/cp/{link-heap => link-heap.sh} (100%)
 rename tests/cp/{link-no-deref => link-no-deref.sh} (100%)
 rename tests/cp/{link-preserve => link-preserve.sh} (100%)
 rename tests/cp/{link-symlink => link-symlink.sh} (100%)
 rename tests/cp/{link => link.sh} (100%)
 rename tests/cp/{nfs-removal-race => nfs-removal-race.sh} (100%)
 rename tests/cp/{no-deref-link1 => no-deref-link1.sh} (100%)
 rename tests/cp/{no-deref-link2 => no-deref-link2.sh} (100%)
 rename tests/cp/{no-deref-link3 => no-deref-link3.sh} (100%)
 rename tests/cp/{parent-perm-race => parent-perm-race.sh} (100%)
 rename tests/cp/{parent-perm => parent-perm.sh} (100%)
 rename tests/cp/{perm => perm.sh} (100%)
 rename tests/cp/{preserve-2 => preserve-2.sh} (100%)
 rename tests/cp/{preserve-gid => preserve-gid.sh} (100%)
 rename tests/cp/{preserve-link => preserve-link.sh} (100%)
 rename tests/cp/{preserve-slink-time => preserve-slink-time.sh} (100%)
 rename tests/cp/{proc-short-read => proc-short-read.sh} (100%)
 rename tests/cp/{proc-zero-len => proc-zero-len.sh} (100%)
 rename tests/cp/{r-vs-symlink => r-vs-symlink.sh} (100%)
 rename tests/cp/{reflink-auto => reflink-auto.sh} (100%)
 rename tests/cp/{reflink-perm => reflink-perm.sh} (100%)
 rename tests/cp/{same-file => same-file.sh} (100%)
 rename tests/cp/{slink-2-slink => slink-2-slink.sh} (100%)
 rename tests/cp/{sparse-fiemap => sparse-fiemap.sh} (100%)
 rename tests/cp/{sparse-to-pipe => sparse-to-pipe.sh} (100%)
 rename tests/cp/{sparse => sparse.sh} (100%)
 rename tests/cp/{special-bits => special-bits.sh} (100%)
 rename tests/cp/{special-f => special-f.sh} (100%)
 rename tests/cp/{src-base-dot => src-base-dot.sh} (100%)
 rename tests/cp/{symlink-slash => symlink-slash.sh} (100%)
 rename tests/cp/{thru-dangling => thru-dangling.sh} (100%)
 rename tests/dd/{bytes => bytes.sh} (100%)
 rename tests/dd/{direct => direct.sh} (100%)
 rename tests/dd/{misc => misc.sh} (100%)
 rename tests/dd/{nocache => nocache.sh} (100%)
 rename tests/dd/{not-rewound => not-rewound.sh} (100%)
 rename tests/dd/{reblock => reblock.sh} (100%)
 rename tests/dd/{skip-seek-past-dev => skip-seek-past-dev.sh} (100%)
 rename tests/dd/{skip-seek-past-file => skip-seek-past-file.sh} (100%)
 rename tests/dd/{skip-seek => skip-seek.pl} (100%)
 rename tests/dd/{skip-seek2 => skip-seek2.sh} (100%)
 rename tests/dd/{sparse => sparse.sh} (100%)
 rename tests/dd/{stderr => stderr.sh} (100%)
 rename tests/dd/{unblock-sync => unblock-sync.sh} (100%)
 rename tests/dd/{unblock => unblock.pl} (100%)
 rename tests/df/{df-P => df-P.sh} (100%)
 rename tests/df/{header => header.sh} (100%)
 rename tests/df/{no-mtab-status => no-mtab-status.sh} (100%)
 rename tests/df/{problematic-chars => problematic-chars.sh} (100%)
 rename tests/df/{total-unprocessed => total-unprocessed.sh} (100%)
 rename tests/df/{total-verify => total-verify.sh} (100%)
 rename tests/df/{unreadable => unreadable.sh} (100%)
 rename tests/du/{2g => 2g.sh} (100%)
 rename tests/du/{8gb => 8gb.sh} (100%)
 rename tests/du/{basic => basic.sh} (100%)
 rename tests/du/{bigtime => bigtime.sh} (100%)
 rename tests/du/{bind-mount-dir-cycle => bind-mount-dir-cycle.sh} (100%)
 rename tests/du/{deref-args => deref-args.sh} (100%)
 rename tests/du/{deref => deref.sh} (100%)
 rename tests/du/{exclude => exclude.sh} (100%)
 rename tests/du/{fd-leak => fd-leak.sh} (100%)
 rename tests/du/{files0-from-dir => files0-from-dir.sh} (100%)
 rename tests/du/{files0-from => files0-from.pl} (100%)
 rename tests/du/{hard-link => hard-link.sh} (100%)
 rename tests/du/{inacc-dest => inacc-dest.sh} (100%)
 rename tests/du/{inacc-dir => inacc-dir.sh} (100%)
 rename tests/du/{inaccessible-cwd => inaccessible-cwd.sh} (100%)
 rename tests/du/{long-from-unreadable => long-from-unreadable.sh} (100%)
 rename tests/du/{long-sloop => long-sloop.sh} (100%)
 rename tests/du/{max-depth => max-depth.sh} (100%)
 rename tests/du/{move-dir-while-traversing => move-dir-while-traversing.sh} 
(100%)
 rename tests/du/{no-deref => no-deref.sh} (100%)
 rename tests/du/{no-x => no-x.sh} (100%)
 rename tests/du/{one-file-system => one-file-system.sh} (100%)
 rename tests/du/{restore-wd => restore-wd.sh} (100%)
 rename tests/du/{slash => slash.sh} (100%)
 rename tests/du/{slink => slink.sh} (100%)
 rename tests/du/{trailing-slash => trailing-slash.sh} (100%)
 rename tests/du/{two-args => two-args.sh} (100%)
 rename tests/fmt/{base => base.pl} (100%)
 rename tests/fmt/{goal-option => goal-option.sh} (100%)
 rename tests/fmt/{long-line => long-line.sh} (100%)
 rename tests/id/{gnu-zero-uids => gnu-zero-uids.sh} (100%)
 rename tests/id/{no-context => no-context.sh} (100%)
 rename tests/install/{basic-1 => basic-1.sh} (100%)
 rename tests/install/{create-leading => create-leading.sh} (100%)
 rename tests/install/{d-slashdot => d-slashdot.sh} (100%)
 rename tests/install/{install-C-root => install-C-root.sh} (100%)
 rename tests/install/{install-C-selinux => install-C-selinux.sh} (100%)
 rename tests/install/{install-C => install-C.sh} (100%)
 rename tests/install/{strip-program => strip-program.sh} (100%)
 rename tests/install/{trap => trap.sh} (100%)
 rename tests/ln/{backup-1 => backup-1.sh} (100%)
 rename tests/ln/{hard-backup => hard-backup.sh} (100%)
 rename tests/ln/{hard-to-sym => hard-to-sym.sh} (100%)
 rename tests/ln/{misc => misc.sh} (100%)
 rename tests/ln/{relative => relative.sh} (100%)
 rename tests/ln/{sf-1 => sf-1.sh} (100%)
 rename tests/ln/{slash-decorated-nonexistent-dest => 
slash-decorated-nonexistent-dest.sh} (100%)
 rename tests/ln/{target-1 => target-1.sh} (100%)
 rename tests/ls/{abmon-align => abmon-align.sh} (100%)
 rename tests/ls/{block-size => block-size.sh} (100%)
 rename tests/ls/{capability => capability.sh} (100%)
 rename tests/ls/{color-clear-to-eol => color-clear-to-eol.sh} (100%)
 rename tests/ls/{color-dtype-dir => color-dtype-dir.sh} (100%)
 rename tests/ls/{color-norm => color-norm.sh} (100%)
 rename tests/ls/{dangle => dangle.sh} (100%)
 rename tests/ls/{dired => dired.sh} (100%)
 rename tests/ls/{file-type => file-type.sh} (100%)
 rename tests/ls/{follow-slink => follow-slink.sh} (100%)
 rename tests/ls/{getxattr-speedup => getxattr-speedup.sh} (100%)
 rename tests/ls/{infloop => infloop.sh} (100%)
 rename tests/ls/{inode => inode.sh} (100%)
 rename tests/ls/{m-option => m-option.sh} (100%)
 rename tests/ls/{multihardlink => multihardlink.sh} (100%)
 rename tests/ls/{nameless-uid => nameless-uid.sh} (100%)
 rename tests/ls/{no-arg => no-arg.sh} (100%)
 rename tests/ls/{no-cap => no-cap.sh} (100%)
 rename tests/ls/{proc-selinux-segfault => proc-selinux-segfault.sh} (100%)
 rename tests/ls/{readdir-mountpoint-inode => readdir-mountpoint-inode.sh} 
(100%)
 rename tests/ls/{recursive => recursive.sh} (100%)
 rename tests/ls/{root-rel-symlink-color => root-rel-symlink-color.sh} (100%)
 rename tests/ls/{rt-1 => rt-1.sh} (100%)
 rename tests/ls/{slink-acl => slink-acl.sh} (100%)
 rename tests/ls/{stat-dtype => stat-dtype.sh} (100%)
 rename tests/ls/{stat-failed => stat-failed.sh} (100%)
 rename tests/ls/{stat-free-color => stat-free-color.sh} (100%)
 rename tests/ls/{stat-free-symlinks => stat-free-symlinks.sh} (100%)
 rename tests/ls/{stat-vs-dirent => stat-vs-dirent.sh} (100%)
 rename tests/ls/{symlink-slash => symlink-slash.sh} (100%)
 rename tests/ls/{time-style-diag => time-style-diag.sh} (100%)
 rename tests/ls/{x-option => x-option.sh} (100%)
 rename tests/misc/{arch => arch.sh} (100%)
 rename tests/misc/{base64 => base64.pl} (100%)
 rename tests/misc/{basename => basename.pl} (100%)
 rename tests/misc/{cat-buf => cat-buf.sh} (100%)
 rename tests/misc/{cat-proc => cat-proc.sh} (100%)
 rename tests/misc/{chcon-fail => chcon-fail.sh} (100%)
 rename tests/misc/{chcon => chcon.sh} (100%)
 rename tests/misc/{chroot-credentials => chroot-credentials.sh} (100%)
 rename tests/misc/{chroot-fail => chroot-fail.sh} (100%)
 rename tests/misc/{close-stdout => close-stdout.sh} (100%)
 rename tests/misc/{comm => comm.pl} (100%)
 rename tests/misc/{csplit-1000 => csplit-1000.sh} (100%)
 rename tests/misc/{csplit-heap => csplit-heap.sh} (100%)
 rename tests/misc/{csplit => csplit.sh} (100%)
 rename tests/misc/{cut => cut.pl} (100%)
 rename tests/misc/{date-next-dow => date-next-dow.pl} (100%)
 rename tests/misc/{date-sec => date-sec.sh} (100%)
 rename tests/misc/{date => date.pl} (100%)
 rename tests/misc/{dircolors => dircolors.pl} (100%)
 rename tests/misc/{dirname => dirname.pl} (100%)
 rename tests/misc/{env-null => env-null.sh} (100%)
 rename tests/misc/{env => env.sh} (100%)
 rename tests/misc/{expand => expand.pl} (100%)
 rename tests/misc/{expr => expr.pl} (100%)
 rename tests/misc/{factor => factor.pl} (100%)
 rename tests/misc/{false-status => false-status.sh} (100%)
 rename tests/misc/{fold => fold.pl} (100%)
 rename tests/misc/{groups-dash => groups-dash.sh} (100%)
 rename tests/misc/{groups-version => groups-version.sh} (100%)
 rename tests/misc/{head-c => head-c.sh} (100%)
 rename tests/misc/{head-elide-tail => head-elide-tail.pl} (100%)
 rename tests/misc/{head-pos => head-pos.sh} (100%)
 rename tests/misc/{head => head.pl} (100%)
 rename tests/misc/{help-version => help-version.sh} (100%)
 rename tests/misc/{id-context => id-context.sh} (100%)
 rename tests/misc/{id-groups => id-groups.sh} (100%)
 rename tests/misc/{id-setgid => id-setgid.sh} (100%)
 rename tests/misc/{invalid-opt => invalid-opt.pl} (100%)
 rename tests/misc/{join => join.pl} (100%)
 rename tests/misc/{ls-misc => ls-misc.pl} (100%)
 rename tests/misc/{ls-time => ls-time.sh} (100%)
 rename tests/misc/{md5sum-bsd => md5sum-bsd.sh} (100%)
 rename tests/misc/{md5sum-newline => md5sum-newline.pl} (100%)
 rename tests/misc/{md5sum-parallel => md5sum-parallel.sh} (100%)
 rename tests/misc/{md5sum => md5sum.pl} (100%)
 rename tests/misc/{mknod => mknod.sh} (100%)
 rename tests/misc/{mktemp => mktemp.pl} (100%)
 rename tests/misc/{nice-fail => nice-fail.sh} (100%)
 rename tests/misc/{nice => nice.sh} (100%)
 rename tests/misc/{nl => nl.sh} (100%)
 rename tests/misc/{nohup => nohup.sh} (100%)
 rename tests/misc/{nproc-avail => nproc-avail.sh} (100%)
 rename tests/misc/{nproc-positive => nproc-positive.sh} (100%)
 rename tests/misc/{od-N => od-N.sh} (100%)
 rename tests/misc/{od-float => od-float.sh} (100%)
 rename tests/misc/{od-multiple-t => od-multiple-t.sh} (100%)
 rename tests/misc/{od-x8 => od-x8.sh} (100%)
 rename tests/misc/{od => od.pl} (100%)
 rename tests/misc/{paste => paste.pl} (100%)
 rename tests/misc/{pathchk1 => pathchk1.sh} (100%)
 rename tests/misc/{pr => pr.pl} (100%)
 rename tests/misc/{printenv => printenv.sh} (100%)
 rename tests/misc/{printf-cov => printf-cov.pl} (100%)
 rename tests/misc/{printf-hex => printf-hex.sh} (100%)
 rename tests/misc/{printf-surprise => printf-surprise.sh} (100%)
 rename tests/misc/{printf => printf.sh} (100%)
 rename tests/misc/{ptx-overrun => ptx-overrun.sh} (100%)
 rename tests/misc/{ptx => ptx.pl} (100%)
 rename tests/misc/{pwd-long => pwd-long.sh} (100%)
 rename tests/misc/{pwd-option => pwd-option.sh} (100%)
 rename tests/misc/{readlink-fp-loop => readlink-fp-loop.sh} (100%)
 rename tests/misc/{readlink-root => readlink-root.sh} (100%)
 rename tests/misc/{realpath => realpath.sh} (100%)
 rename tests/misc/{runcon-no-reorder => runcon-no-reorder.sh} (100%)
 rename tests/misc/{selinux => selinux.sh} (100%)
 rename tests/misc/{seq-long-double => seq-long-double.sh} (100%)
 rename tests/misc/{seq => seq.pl} (100%)
 rename tests/misc/{sha1sum-vec => sha1sum-vec.pl} (100%)
 rename tests/misc/{sha1sum => sha1sum.pl} (100%)
 rename tests/misc/{sha224sum => sha224sum.pl} (100%)
 rename tests/misc/{sha256sum => sha256sum.pl} (100%)
 rename tests/misc/{sha384sum => sha384sum.pl} (100%)
 rename tests/misc/{sha512sum => sha512sum.pl} (100%)
 rename tests/misc/{shred-exact => shred-exact.sh} (100%)
 rename tests/misc/{shred-passes => shred-passes.sh} (100%)
 rename tests/misc/{shred-remove => shred-remove.sh} (100%)
 rename tests/misc/{shuf => shuf.sh} (100%)
 rename tests/misc/{sort-NaN-infloop => sort-NaN-infloop.sh} (100%)
 rename tests/misc/{sort-benchmark-random => sort-benchmark-random.sh} (100%)
 rename tests/misc/{sort-compress-hang => sort-compress-hang.sh} (100%)
 rename tests/misc/{sort-compress-proc => sort-compress-proc.sh} (100%)
 rename tests/misc/{sort-compress => sort-compress.sh} (100%)
 rename tests/misc/{sort-continue => sort-continue.sh} (100%)
 rename tests/misc/{sort-debug-keys => sort-debug-keys.sh} (100%)
 rename tests/misc/{sort-debug-warn => sort-debug-warn.sh} (100%)
 rename tests/misc/{sort-discrim => sort-discrim.sh} (100%)
 rename tests/misc/{sort-exit-early => sort-exit-early.sh} (100%)
 rename tests/misc/{sort-files0-from => sort-files0-from.pl} (100%)
 rename tests/misc/{sort-float => sort-float.sh} (100%)
 rename tests/misc/{sort-merge-fdlimit => sort-merge-fdlimit.sh} (100%)
 rename tests/misc/{sort-merge => sort-merge.pl} (100%)
 rename tests/misc/{sort-month => sort-month.sh} (100%)
 rename tests/misc/{sort-rand => sort-rand.sh} (100%)
 rename tests/misc/{sort-spinlock-abuse => sort-spinlock-abuse.sh} (100%)
 rename tests/misc/{sort-stale-thread-mem => sort-stale-thread-mem.sh} (100%)
 rename tests/misc/{sort-u-FMR => sort-u-FMR.sh} (100%)
 rename tests/misc/{sort-unique-segv => sort-unique-segv.sh} (100%)
 rename tests/misc/{sort-unique => sort-unique.sh} (100%)
 rename tests/misc/{sort-version => sort-version.sh} (100%)
 rename tests/misc/{sort => sort.pl} (100%)
 rename tests/misc/{stat-birthtime => stat-birthtime.sh} (100%)
 rename tests/misc/{stat-fmt => stat-fmt.sh} (100%)
 rename tests/misc/{stat-hyphen => stat-hyphen.sh} (100%)
 rename tests/misc/{stat-mount => stat-mount.sh} (100%)
 rename tests/misc/{stat-nanoseconds => stat-nanoseconds.sh} (100%)
 rename tests/misc/{stat-printf => stat-printf.pl} (100%)
 rename tests/misc/{stat-slash => stat-slash.sh} (100%)
 rename tests/misc/{stdbuf => stdbuf.sh} (100%)
 rename tests/misc/{stty-invalid => stty-invalid.sh} (100%)
 rename tests/misc/{stty-pairs => stty-pairs.sh} (100%)
 rename tests/misc/{stty-row-col => stty-row-col.sh} (100%)
 rename tests/misc/{stty => stty.sh} (100%)
 rename tests/misc/{sum-sysv => sum-sysv.sh} (100%)
 rename tests/misc/{sum => sum.pl} (100%)
 rename tests/misc/{tac-2-nonseekable => tac-2-nonseekable.sh} (100%)
 rename tests/misc/{tac-continue => tac-continue.sh} (100%)
 rename tests/misc/{tac => tac.pl} (100%)
 rename tests/misc/{tail => tail.pl} (100%)
 rename tests/misc/{tee-dash => tee-dash.sh} (100%)
 rename tests/misc/{tee => tee.sh} (100%)
 rename tests/misc/{test-diag => test-diag.pl} (100%)
 rename tests/misc/{test => test.pl} (100%)
 rename tests/misc/{timeout-group => timeout-group.sh} (100%)
 rename tests/misc/{timeout-parameters => timeout-parameters.sh} (100%)
 rename tests/misc/{timeout => timeout.sh} (100%)
 rename tests/misc/{tr-case-class => tr-case-class.sh} (100%)
 rename tests/misc/{tr => tr.pl} (100%)
 rename tests/misc/{truncate-dangling-symlink => truncate-dangling-symlink.sh} 
(100%)
 rename tests/misc/{truncate-dir-fail => truncate-dir-fail.sh} (100%)
 rename tests/misc/{truncate-fail-diag => truncate-fail-diag.sh} (100%)
 rename tests/misc/{truncate-fifo => truncate-fifo.sh} (100%)
 rename tests/misc/{truncate-no-create-missing => 
truncate-no-create-missing.sh} (100%)
 rename tests/misc/{truncate-overflow => truncate-overflow.sh} (100%)
 rename tests/misc/{truncate-owned-by-other => truncate-owned-by-other.sh} 
(100%)
 rename tests/misc/{truncate-parameters => truncate-parameters.sh} (100%)
 rename tests/misc/{truncate-relative => truncate-relative.sh} (100%)
 rename tests/misc/{tsort => tsort.pl} (100%)
 rename tests/misc/{tty-eof => tty-eof.pl} (100%)
 rename tests/misc/{unexpand => unexpand.pl} (100%)
 rename tests/misc/{uniq-perf => uniq-perf.sh} (100%)
 rename tests/misc/{uniq => uniq.pl} (100%)
 rename tests/misc/{wc-files0-from => wc-files0-from.pl} (100%)
 rename tests/misc/{wc-files0 => wc-files0.sh} (100%)
 rename tests/misc/{wc-parallel => wc-parallel.sh} (100%)
 rename tests/misc/{wc => wc.pl} (100%)
 rename tests/misc/{xattr => xattr.sh} (100%)
 rename tests/misc/{xstrtol => xstrtol.pl} (100%)
 rename tests/mkdir/{p-1 => p-1.sh} (100%)
 rename tests/mkdir/{p-2 => p-2.sh} (100%)
 rename tests/mkdir/{p-3 => p-3.sh} (100%)
 rename tests/mkdir/{p-slashdot => p-slashdot.sh} (100%)
 rename tests/mkdir/{p-thru-slink => p-thru-slink.sh} (100%)
 rename tests/mkdir/{p-v => p-v.sh} (100%)
 rename tests/mkdir/{parents => parents.sh} (100%)
 rename tests/mkdir/{perm => perm.sh} (100%)
 rename tests/mkdir/{selinux => selinux.sh} (100%)
 rename tests/mkdir/{special-1 => special-1.sh} (100%)
 rename tests/mkdir/{t-slash => t-slash.sh} (100%)
 rename tests/mkdir/{writable-under-readonly => writable-under-readonly.sh} 
(100%)
 rename tests/mv/{acl => acl.sh} (100%)
 rename tests/mv/{atomic => atomic.sh} (100%)
 rename tests/mv/{atomic2 => atomic2.sh} (100%)
 rename tests/mv/{backup-dir => backup-dir.sh} (100%)
 rename tests/mv/{backup-is-src => backup-is-src.sh} (100%)
 rename tests/mv/{childproof => childproof.sh} (100%)
 rename tests/mv/{diag => diag.sh} (100%)
 rename tests/mv/{dir-file => dir-file.sh} (100%)
 rename tests/mv/{dir2dir => dir2dir.sh} (100%)
 rename tests/mv/{dup-source => dup-source.sh} (100%)
 rename tests/mv/{force => force.sh} (100%)
 rename tests/mv/{hard-2 => hard-2.sh} (100%)
 rename tests/mv/{hard-3 => hard-3.sh} (100%)
 rename tests/mv/{hard-4 => hard-4.sh} (100%)
 rename tests/mv/{hard-link-1 => hard-link-1.sh} (100%)
 rename tests/mv/{hard-verbose => hard-verbose.sh} (100%)
 rename tests/mv/{i-1 => i-1.pl} (100%)
 rename tests/mv/{i-2 => i-2.sh} (100%)
 rename tests/mv/{i-3 => i-3.sh} (100%)
 rename tests/mv/{i-4 => i-4.sh} (100%)
 rename tests/mv/{i-5 => i-5.sh} (100%)
 rename tests/mv/{i-link-no => i-link-no.sh} (100%)
 rename tests/mv/{into-self-2 => into-self-2.sh} (100%)
 rename tests/mv/{into-self-3 => into-self-3.sh} (100%)
 rename tests/mv/{into-self-4 => into-self-4.sh} (100%)
 rename tests/mv/{into-self => into-self.sh} (100%)
 rename tests/mv/{leak-fd => leak-fd.sh} (100%)
 rename tests/mv/{mv-n => mv-n.sh} (100%)
 rename tests/mv/{mv-special-1 => mv-special-1.sh} (100%)
 rename tests/mv/{no-target-dir => no-target-dir.sh} (100%)
 rename tests/mv/{part-fail => part-fail.sh} (100%)
 rename tests/mv/{part-hardlink => part-hardlink.sh} (100%)
 rename tests/mv/{part-rename => part-rename.sh} (100%)
 rename tests/mv/{part-symlink => part-symlink.sh} (100%)
 rename tests/mv/{partition-perm => partition-perm.sh} (100%)
 rename tests/mv/{perm-1 => perm-1.sh} (100%)
 rename tests/mv/{sticky-to-xpart => sticky-to-xpart.sh} (100%)
 rename tests/mv/{symlink-onto-hardlink-to-self => 
symlink-onto-hardlink-to-self.sh} (100%)
 rename tests/mv/{symlink-onto-hardlink => symlink-onto-hardlink.sh} (100%)
 rename tests/mv/{to-symlink => to-symlink.sh} (100%)
 rename tests/mv/{trailing-slash => trailing-slash.sh} (100%)
 rename tests/mv/{update => update.sh} (100%)
 rename tests/pr/{pr-tests => pr-tests.pl} (100%)
 rename tests/readlink/{can-e => can-e.sh} (100%)
 rename tests/readlink/{can-f => can-f.sh} (100%)
 rename tests/readlink/{can-m => can-m.sh} (100%)
 rename tests/readlink/{rl-1 => rl-1.sh} (100%)
 rename tests/rm/{cycle => cycle.sh} (100%)
 rename tests/rm/{d-1 => d-1.sh} (100%)
 rename tests/rm/{d-2 => d-2.sh} (100%)
 rename tests/rm/{d-3 => d-3.sh} (100%)
 rename tests/rm/{dangling-symlink => dangling-symlink.sh} (100%)
 rename tests/rm/{deep-1 => deep-1.sh} (100%)
 rename tests/rm/{deep-2 => deep-2.sh} (100%)
 rename tests/rm/{dir-no-w => dir-no-w.sh} (100%)
 rename tests/rm/{dir-nonrecur => dir-nonrecur.sh} (100%)
 rename tests/rm/{dot-rel => dot-rel.sh} (100%)
 rename tests/rm/{empty-inacc => empty-inacc.sh} (100%)
 rename tests/rm/{empty-name => empty-name.pl} (100%)
 rename tests/rm/{ext3-perf => ext3-perf.sh} (100%)
 rename tests/rm/{f-1 => f-1.sh} (100%)
 rename tests/rm/{fail-2eperm => fail-2eperm.sh} (100%)
 rename tests/rm/{fail-eacces => fail-eacces.sh} (100%)
 rename tests/rm/{hash => hash.sh} (100%)
 rename tests/rm/{i-1 => i-1.sh} (100%)
 rename tests/rm/{i-never => i-never.sh} (100%)
 rename tests/rm/{i-no-r => i-no-r.sh} (100%)
 rename tests/rm/{ignorable => ignorable.sh} (100%)
 rename tests/rm/{inaccessible => inaccessible.sh} (100%)
 rename tests/rm/{interactive-always => interactive-always.sh} (100%)
 rename tests/rm/{interactive-once => interactive-once.sh} (100%)
 rename tests/rm/{ir-1 => ir-1.sh} (100%)
 rename tests/rm/{isatty => isatty.sh} (100%)
 rename tests/rm/{many-dir-entries-vs-OOM => many-dir-entries-vs-OOM.sh} (100%)
 rename tests/rm/{no-give-up => no-give-up.sh} (100%)
 rename tests/rm/{one-file-system => one-file-system.sh} (100%)
 rename tests/rm/{one-file-system2 => one-file-system2.sh} (100%)
 rename tests/rm/{r-1 => r-1.sh} (100%)
 rename tests/rm/{r-2 => r-2.sh} (100%)
 rename tests/rm/{r-3 => r-3.sh} (100%)
 rename tests/rm/{r-4 => r-4.sh} (100%)
 rename tests/rm/{read-only => read-only.sh} (100%)
 rename tests/rm/{readdir-bug => readdir-bug.sh} (100%)
 rename tests/rm/{rm1 => rm1.sh} (100%)
 rename tests/rm/{rm2 => rm2.sh} (100%)
 rename tests/rm/{rm3 => rm3.sh} (100%)
 rename tests/rm/{rm4 => rm4.sh} (100%)
 rename tests/rm/{rm5 => rm5.sh} (100%)
 rename tests/rm/{sunos-1 => sunos-1.sh} (100%)
 rename tests/rm/{unread2 => unread2.sh} (100%)
 rename tests/rm/{unread3 => unread3.sh} (100%)
 rename tests/rm/{unreadable => unreadable.pl} (100%)
 rename tests/rm/{v-slash => v-slash.sh} (100%)
 rename tests/rmdir/{fail-perm => fail-perm.sh} (100%)
 rename tests/rmdir/{ignore => ignore.sh} (100%)
 rename tests/rmdir/{t-slash => t-slash.sh} (100%)
 rename tests/split/{additional-suffix => additional-suffix.sh} (100%)
 rename tests/split/{b-chunk => b-chunk.sh} (100%)
 rename tests/split/{fail => fail.sh} (100%)
 rename tests/split/{filter => filter.sh} (100%)
 rename tests/split/{guard-input => guard-input.sh} (100%)
 rename tests/split/{l-chunk => l-chunk.sh} (100%)
 rename tests/split/{lines => lines.sh} (100%)
 rename tests/split/{numeric => numeric.sh} (100%)
 rename tests/split/{r-chunk => r-chunk.sh} (100%)
 rename tests/split/{suffix-auto-length => suffix-auto-length.sh} (100%)
 rename tests/split/{suffix-length => suffix-length.sh} (100%)
 rename tests/tail-2/{F-vs-missing => F-vs-missing.sh} (100%)
 rename tests/tail-2/{F-vs-rename => F-vs-rename.sh} (100%)
 rename tests/tail-2/{append-only => append-only.sh} (100%)
 rename tests/tail-2/{assert-2 => assert-2.sh} (100%)
 rename tests/tail-2/{assert => assert.sh} (100%)
 rename tests/tail-2/{big-4gb => big-4gb.sh} (100%)
 rename tests/tail-2/{flush-initial => flush-initial.sh} (100%)
 rename tests/tail-2/{follow-name => follow-name.sh} (100%)
 rename tests/tail-2/{follow-stdin => follow-stdin.sh} (100%)
 rename tests/tail-2/{infloop-1 => infloop-1.sh} (100%)
 rename tests/tail-2/{inotify-hash-abuse => inotify-hash-abuse.sh} (100%)
 rename tests/tail-2/{inotify-hash-abuse2 => inotify-hash-abuse2.sh} (100%)
 rename tests/tail-2/{inotify-race => inotify-race.sh} (100%)
 rename tests/tail-2/{inotify-rotate => inotify-rotate.sh} (100%)
 rename tests/tail-2/{pid => pid.sh} (100%)
 rename tests/tail-2/{pipe-f => pipe-f.sh} (100%)
 rename tests/tail-2/{pipe-f2 => pipe-f2.sh} (100%)
 rename tests/tail-2/{proc-ksyms => proc-ksyms.sh} (100%)
 rename tests/tail-2/{start-middle => start-middle.sh} (100%)
 rename tests/tail-2/{tail-n0f => tail-n0f.sh} (100%)
 rename tests/tail-2/{wait => wait.sh} (100%)
 rename tests/touch/{60-seconds => 60-seconds.sh} (100%)
 rename tests/touch/{dangling-symlink => dangling-symlink.sh} (100%)
 rename tests/touch/{dir-1 => dir-1.sh} (100%)
 rename tests/touch/{empty-file => empty-file.sh} (100%)
 rename tests/touch/{fail-diag => fail-diag.sh} (100%)
 rename tests/touch/{fifo => fifo.sh} (100%)
 rename tests/touch/{no-create-missing => no-create-missing.sh} (100%)
 rename tests/touch/{no-dereference => no-dereference.sh} (100%)
 rename tests/touch/{no-rights => no-rights.sh} (100%)
 rename tests/touch/{not-owner => not-owner.sh} (100%)
 rename tests/touch/{now-owned-by-other => now-owned-by-other.sh} (100%)
 rename tests/touch/{obsolescent => obsolescent.sh} (100%)
 rename tests/touch/{read-only => read-only.sh} (100%)
 rename tests/touch/{relative => relative.sh} (100%)
 rename tests/touch/{trailing-slash => trailing-slash.sh} (100%)

diff --git a/tests/Makefile.am b/tests/Makefile.am
index ff0af84..a547b11 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -45,7 +45,7 @@ check_DATA = .built-programs
             && MAKEFLAGS= $(MAKE) -s built_programs.list)              \
           > $@-t && mv $@-t $@

-TEST_EXTENSIONS = .xpl
+TEST_EXTENSIONS = .sh .pl .xpl

 if HAVE_PERL
 TESTSUITE_PERL = $(PERL)
@@ -63,6 +63,9 @@ LOG_COMPILER = \
   --test-name "$$f" --srcdir '$(srcdir)' \
   --shell '$(SHELL)' --perl '$(TESTSUITE_PERL)' --

+PL_LOG_COMPILER = $(LOG_COMPILER)
+SH_LOG_COMPILER = $(LOG_COMPILER)
+
 # Perl scripts that must be run in tainted mode.
 XPL_LOG_COMPILER = \
   $(TESTSUITE_PERL) -wT -I$(srcdir) -MCoreutils -MCuSkip -M"CuTmpdir qw($$f)"
@@ -131,32 +134,32 @@ EXTRA_DIST =              \
   $(pr_data)

 root_tests =                                   \
-  chown/basic                                  \
-  cp/cp-a-selinux                              \
-  cp/preserve-gid                              \
-  cp/special-bits                              \
-  cp/cp-mv-enotsup-xattr                       \
-  cp/capability                                        \
-  cp/sparse-fiemap                             \
-  dd/skip-seek-past-dev                                \
-  df/problematic-chars                         \
-  du/bind-mount-dir-cycle                      \
-  install/install-C-root                       \
-  ls/capability                                        \
-  ls/nameless-uid                              \
-  misc/chcon                                   \
-  misc/chroot-credentials                      \
-  misc/id-setgid                               \
-  misc/selinux                                 \
-  misc/truncate-owned-by-other                 \
-  mkdir/writable-under-readonly                        \
-  mv/sticky-to-xpart                           \
-  rm/fail-2eperm                               \
-  rm/no-give-up                                        \
-  rm/one-file-system                           \
-  rm/read-only                                 \
-  tail-2/append-only                           \
-  touch/now-owned-by-other
+  chown/basic.sh                               \
+  cp/cp-a-selinux.sh                           \
+  cp/preserve-gid.sh                           \
+  cp/special-bits.sh                           \
+  cp/cp-mv-enotsup-xattr.sh                    \
+  cp/capability.sh                             \
+  cp/sparse-fiemap.sh                          \
+  dd/skip-seek-past-dev.sh                     \
+  df/problematic-chars.sh                      \
+  du/bind-mount-dir-cycle.sh                   \
+  install/install-C-root.sh                    \
+  ls/capability.sh                             \
+  ls/nameless-uid.sh                           \
+  misc/chcon.sh                                        \
+  misc/chroot-credentials.sh                   \
+  misc/id-setgid.sh                            \
+  misc/selinux.sh                              \
+  misc/truncate-owned-by-other.sh              \
+  mkdir/writable-under-readonly.sh             \
+  mv/sticky-to-xpart.sh                                \
+  rm/fail-2eperm.sh                            \
+  rm/no-give-up.sh                             \
+  rm/one-file-system.sh                                \
+  rm/read-only.sh                              \
+  tail-2/append-only.sh                                \
+  touch/now-owned-by-other.sh

 .PHONY: check-root
 check-root:
@@ -191,473 +194,473 @@ EXTRA_DIST += $(TESTS)
 # Put head-elide-tail early, because it's long-running.

 TESTS =                                                \
-  misc/help-version                            \
-  tail-2/inotify-race                          \
-  misc/invalid-opt                             \
-  rm/ext3-perf                                 \
-  rm/cycle                                     \
-  cp/link-heap                                 \
-  misc/tty-eof                                 \
-  tail-2/inotify-hash-abuse                    \
-  tail-2/inotify-hash-abuse2                   \
-  tail-2/F-vs-missing                          \
-  tail-2/F-vs-rename                           \
-  tail-2/inotify-rotate                                \
-  chmod/no-x                                   \
-  chgrp/basic                                  \
-  rm/dangling-symlink                          \
-  misc/ls-time                                 \
-  rm/d-1                                       \
-  rm/d-2                                       \
-  rm/d-3                                       \
-  rm/deep-1                                    \
-  rm/deep-2                                    \
-  rm/dir-no-w                                  \
-  rm/dir-nonrecur                              \
-  rm/dot-rel                                   \
-  rm/isatty                                    \
-  rm/empty-inacc                               \
-  rm/empty-name                                        \
-  rm/f-1                                       \
-  rm/fail-eacces                               \
+  misc/help-version.sh                         \
+  tail-2/inotify-race.sh                       \
+  misc/invalid-opt.pl                          \
+  rm/ext3-perf.sh                              \
+  rm/cycle.sh                                  \
+  cp/link-heap.sh                              \
+  misc/tty-eof.pl                              \
+  tail-2/inotify-hash-abuse.sh                 \
+  tail-2/inotify-hash-abuse2.sh                        \
+  tail-2/F-vs-missing.sh                       \
+  tail-2/F-vs-rename.sh                                \
+  tail-2/inotify-rotate.sh                     \
+  chmod/no-x.sh                                        \
+  chgrp/basic.sh                               \
+  rm/dangling-symlink.sh                       \
+  misc/ls-time.sh                              \
+  rm/d-1.sh                                    \
+  rm/d-2.sh                                    \
+  rm/d-3.sh                                    \
+  rm/deep-1.sh                                 \
+  rm/deep-2.sh                                 \
+  rm/dir-no-w.sh                               \
+  rm/dir-nonrecur.sh                           \
+  rm/dot-rel.sh                                        \
+  rm/isatty.sh                                 \
+  rm/empty-inacc.sh                            \
+  rm/empty-name.pl                             \
+  rm/f-1.sh                                    \
+  rm/fail-eacces.sh                            \
   rm/fail-eperm.xpl                            \
-  tail-2/assert                                        \
-  rm/hash                                      \
-  rm/i-1                                       \
-  rm/i-never                                   \
-  rm/i-no-r                                    \
-  tail-2/infloop-1                             \
-  rm/ignorable                                 \
-  rm/inaccessible                              \
-  rm/interactive-always                                \
-  rm/interactive-once                          \
-  rm/ir-1                                      \
-  rm/one-file-system2                          \
-  rm/r-1                                       \
-  rm/r-2                                       \
-  rm/r-3                                       \
-  rm/r-4                                       \
-  rm/readdir-bug                               \
-  rm/rm1                                       \
-  touch/empty-file                             \
-  rm/rm2                                       \
-  rm/rm3                                       \
-  rm/rm4                                       \
-  rm/rm5                                       \
-  rm/sunos-1                                   \
-  rm/unread2                                   \
-  rm/unread3                                   \
-  rm/unreadable                                        \
-  rm/v-slash                                   \
-  rm/many-dir-entries-vs-OOM                   \
-  chgrp/default-no-deref                       \
-  chgrp/deref                                  \
-  chgrp/no-x                                   \
-  chgrp/posix-H                                        \
-  chgrp/recurse                                        \
-  fmt/base                                     \
-  fmt/long-line                                        \
-  fmt/goal-option                              \
-  misc/env                                     \
-  misc/ptx                                     \
-  misc/test                                    \
-  misc/seq                                     \
-  misc/seq-long-double                         \
-  misc/head                                    \
-  misc/head-elide-tail                         \
-  tail-2/tail-n0f                              \
-  misc/ls-misc                                 \
-  misc/date                                    \
-  misc/date-next-dow                           \
-  misc/ptx-overrun                             \
-  misc/xstrtol                                 \
-  tail-2/pid                                   \
-  misc/od                                      \
-  misc/od-float                                        \
-  misc/mktemp                                  \
-  misc/arch                                    \
-  misc/pr                                      \
-  misc/join                                    \
-  pr/pr-tests                                  \
-  misc/pwd-option                              \
-  misc/chcon-fail                              \
-  misc/cut                                     \
-  misc/wc                                      \
-  misc/wc-files0-from                          \
-  misc/wc-files0                               \
-  misc/wc-parallel                             \
-  misc/cat-proc                                        \
-  misc/cat-buf                                 \
-  misc/base64                                  \
-  misc/basename                                        \
-  misc/close-stdout                            \
-  misc/chroot-fail                             \
-  misc/comm                                    \
-  misc/csplit                                  \
-  misc/csplit-1000                             \
-  misc/csplit-heap                             \
-  misc/date-sec                                        \
-  misc/dircolors                               \
-  misc/dirname                                 \
-  misc/env-null                                        \
-  misc/expand                                  \
-  misc/expr                                    \
-  misc/factor                                  \
-  misc/false-status                            \
-  misc/fold                                    \
-  misc/groups-dash                             \
-  misc/groups-version                          \
-  misc/head-c                                  \
-  misc/head-pos                                        \
-  misc/id-context                              \
-  misc/id-groups                               \
-  misc/id-setgid                               \
-  misc/md5sum                                  \
-  misc/md5sum-bsd                              \
-  misc/md5sum-newline                          \
-  misc/md5sum-parallel                         \
-  misc/mknod                                   \
-  misc/nice                                    \
-  misc/nice-fail                               \
-  misc/nl                                      \
-  misc/nohup                                   \
-  misc/nproc-avail                             \
-  misc/nproc-positive                          \
-  misc/od-N                                    \
-  misc/od-multiple-t                           \
-  misc/od-x8                                   \
-  misc/paste                                   \
-  misc/pathchk1                                        \
-  misc/printenv                                        \
-  misc/printf                                  \
-  misc/printf-cov                              \
-  misc/printf-hex                              \
-  misc/printf-surprise                         \
-  misc/pwd-long                                        \
-  misc/readlink-fp-loop                                \
-  misc/readlink-root                           \
-  misc/realpath                                        \
-  misc/runcon-no-reorder                       \
-  misc/sha1sum                                 \
-  misc/sha1sum-vec                             \
-  misc/sha224sum                               \
-  misc/sha256sum                               \
-  misc/sha384sum                               \
-  misc/sha512sum                               \
-  misc/shred-exact                             \
-  misc/shred-passes                            \
-  misc/shred-remove                            \
-  misc/shuf                                    \
-  misc/sort                                    \
-  misc/sort-benchmark-random                   \
-  misc/sort-compress                           \
-  misc/sort-compress-hang                      \
-  misc/sort-compress-proc                      \
-  misc/sort-continue                           \
-  misc/sort-debug-keys                         \
-  misc/sort-debug-warn                         \
-  misc/sort-discrim                            \
-  misc/sort-files0-from                                \
-  misc/sort-float                              \
-  misc/sort-merge                              \
-  misc/sort-merge-fdlimit                      \
-  misc/sort-month                              \
-  misc/sort-exit-early                         \
-  misc/sort-rand                               \
-  misc/sort-spinlock-abuse                     \
-  misc/sort-stale-thread-mem                   \
-  misc/sort-unique                             \
-  misc/sort-unique-segv                                \
-  misc/sort-version                            \
-  misc/sort-NaN-infloop                                \
-  misc/sort-u-FMR                              \
-  split/filter                                 \
-  split/suffix-auto-length                     \
-  split/suffix-length                          \
-  split/additional-suffix                      \
-  split/b-chunk                                        \
-  split/fail                                   \
-  split/lines                                  \
-  split/l-chunk                                        \
-  split/r-chunk                                        \
-  split/numeric                                        \
-  split/guard-input                            \
-  misc/stat-birthtime                          \
-  misc/stat-fmt                                        \
-  misc/stat-hyphen                             \
-  misc/stat-mount                              \
-  misc/stat-nanoseconds                                \
-  misc/stat-printf                             \
-  misc/stat-slash                              \
-  misc/stdbuf                                  \
-  misc/stty                                    \
-  misc/stty-invalid                            \
-  misc/stty-pairs                              \
-  misc/stty-row-col                            \
-  misc/sum                                     \
-  misc/sum-sysv                                        \
-  misc/tac                                     \
-  misc/tac-continue                            \
-  misc/tac-2-nonseekable                       \
-  misc/tail                                    \
-  misc/tee                                     \
-  misc/tee-dash                                        \
-  misc/test-diag                               \
-  misc/timeout                                 \
-  misc/timeout-group                           \
-  misc/timeout-parameters                      \
-  misc/tr                                      \
-  misc/tr-case-class                           \
-  misc/truncate-dangling-symlink               \
-  misc/truncate-dir-fail                       \
-  misc/truncate-fail-diag                      \
-  misc/truncate-fifo                           \
-  misc/truncate-no-create-missing              \
-  misc/truncate-overflow                       \
-  misc/truncate-parameters                     \
-  misc/truncate-relative                       \
-  misc/tsort                                   \
-  misc/unexpand                                        \
-  misc/uniq                                    \
-  misc/uniq-perf                               \
-  misc/xattr                                   \
-  tail-2/wait                                  \
-  chmod/c-option                               \
-  chmod/equal-x                                        \
-  chmod/equals                                 \
-  chmod/inaccessible                           \
-  chmod/octal                                  \
-  chmod/setgid                                 \
-  chmod/silent                                 \
-  chmod/thru-dangling                          \
-  chmod/umask-x                                        \
-  chmod/usage                                  \
-  chown/deref                                  \
-  chown/preserve-root                          \
-  chown/separator                              \
-  cp/abuse                                     \
-  cp/acl                                       \
-  cp/attr-existing                             \
-  cp/backup-1                                  \
-  cp/backup-dir                                        \
-  cp/backup-is-src                             \
-  cp/cp-HL                                     \
-  cp/cp-deref                                  \
-  cp/cp-i                                      \
-  cp/cp-mv-backup                              \
-  cp/cp-parents                                        \
-  cp/deref-slink                               \
-  cp/dir-rm-dest                               \
-  cp/dir-slash                                 \
-  cp/dir-vs-file                               \
-  cp/existing-perm-dir                         \
-  cp/existing-perm-race                                \
-  cp/fail-perm                                 \
-  cp/fiemap-empty                               \
-  cp/fiemap-perf                                \
-  cp/fiemap-2                                   \
-  cp/file-perm-race                            \
-  cp/into-self                                 \
-  cp/link                                      \
-  cp/link-no-deref                             \
-  cp/link-preserve                             \
-  cp/link-symlink                              \
-  cp/nfs-removal-race                          \
-  cp/no-deref-link1                            \
-  cp/no-deref-link2                            \
-  cp/no-deref-link3                            \
-  cp/parent-perm                               \
-  cp/parent-perm-race                          \
-  cp/perm                                      \
-  cp/preserve-2                                        \
-  cp/preserve-link                             \
-  cp/preserve-slink-time                       \
-  cp/proc-short-read                           \
-  cp/proc-zero-len                             \
-  cp/r-vs-symlink                              \
-  cp/reflink-auto                              \
-  cp/reflink-perm                              \
-  cp/same-file                                 \
-  cp/slink-2-slink                             \
-  cp/sparse                                    \
-  cp/sparse-to-pipe                            \
-  cp/special-f                                 \
-  cp/src-base-dot                              \
-  cp/symlink-slash                             \
-  cp/thru-dangling                             \
-  df/header                                    \
-  df/df-P                                      \
-  df/unreadable                                        \
-  df/total-unprocessed                         \
-  df/no-mtab-status                            \
-  dd/direct                                    \
-  dd/misc                                      \
-  dd/nocache                                   \
-  dd/not-rewound                               \
-  dd/reblock                                   \
-  dd/skip-seek                                 \
-  dd/skip-seek2                                        \
-  dd/bytes                                     \
-  dd/skip-seek-past-file                       \
-  dd/sparse                                    \
-  dd/stderr                                    \
-  dd/unblock                                   \
-  dd/unblock-sync                              \
-  df/total-verify                              \
-  du/2g                                                \
-  du/8gb                                       \
-  du/basic                                     \
-  du/bigtime                                   \
-  du/deref                                     \
-  du/deref-args                                        \
-  du/exclude                                   \
-  du/fd-leak                                   \
-  du/files0-from                               \
-  du/files0-from-dir                           \
-  du/hard-link                                 \
-  du/inacc-dest                                        \
-  du/inacc-dir                                 \
-  du/inaccessible-cwd                          \
-  du/long-from-unreadable                      \
-  du/long-sloop                                        \
-  du/max-depth                                 \
-  du/move-dir-while-traversing                 \
-  du/no-deref                                  \
-  du/no-x                                      \
-  du/one-file-system                           \
-  du/restore-wd                                        \
-  du/slash                                     \
-  du/slink                                     \
-  du/trailing-slash                            \
-  du/two-args                                  \
-  id/gnu-zero-uids                             \
-  id/no-context                                        \
-  install/basic-1                              \
-  install/create-leading                       \
-  install/d-slashdot                           \
-  install/install-C                            \
-  install/install-C-selinux                    \
-  install/strip-program                                \
-  install/trap                                 \
-  ln/backup-1                                  \
-  ln/hard-backup                               \
-  ln/hard-to-sym                               \
-  ln/misc                                      \
-  ln/relative                                  \
-  ln/sf-1                                      \
-  ln/slash-decorated-nonexistent-dest          \
-  ln/target-1                                  \
-  ls/abmon-align                               \
-  ls/block-size                                        \
-  ls/color-clear-to-eol                                \
-  ls/color-dtype-dir                           \
-  ls/color-norm                                        \
-  ls/dangle                                    \
-  ls/dired                                     \
-  ls/file-type                                 \
-  ls/follow-slink                              \
-  ls/getxattr-speedup                          \
-  ls/infloop                                   \
-  ls/inode                                     \
-  ls/m-option                                  \
-  ls/multihardlink                             \
-  ls/no-arg                                    \
-  ls/no-cap                                    \
-  ls/proc-selinux-segfault                     \
-  ls/readdir-mountpoint-inode                  \
-  ls/recursive                                 \
-  ls/root-rel-symlink-color                    \
-  ls/rt-1                                      \
-  ls/slink-acl                                 \
-  ls/stat-dtype                                        \
-  ls/stat-failed                               \
-  ls/stat-free-color                           \
-  ls/stat-free-symlinks                                \
-  ls/stat-vs-dirent                            \
-  ls/symlink-slash                             \
-  ls/time-style-diag                           \
-  ls/x-option                                  \
-  mkdir/p-1                                    \
-  mkdir/p-2                                    \
-  mkdir/p-3                                    \
-  mkdir/p-slashdot                             \
-  mkdir/p-thru-slink                           \
-  mkdir/p-v                                    \
-  mkdir/parents                                        \
-  mkdir/perm                                   \
-  mkdir/selinux                                        \
-  mkdir/special-1                              \
-  mkdir/t-slash                                        \
-  mv/acl                                       \
-  mv/atomic                                    \
-  mv/atomic2                                   \
-  mv/backup-dir                                        \
-  mv/backup-is-src                             \
-  mv/childproof                                        \
-  mv/diag                                      \
-  mv/dir-file                                  \
-  mv/dir2dir                                   \
-  mv/dup-source                                        \
-  mv/force                                     \
-  mv/hard-2                                    \
-  mv/hard-3                                    \
-  mv/hard-4                                    \
-  mv/hard-link-1                               \
-  mv/hard-verbose                              \
-  mv/i-1                                       \
-  mv/i-2                                       \
-  mv/i-3                                       \
-  mv/i-4                                       \
-  mv/i-5                                       \
-  mv/i-link-no                                 \
-  mv/into-self                                 \
-  mv/into-self-2                               \
-  mv/into-self-3                               \
-  mv/into-self-4                               \
-  mv/leak-fd                                   \
-  mv/mv-n                                      \
-  mv/mv-special-1                              \
-  mv/no-target-dir                             \
-  mv/part-fail                                 \
-  mv/part-hardlink                             \
-  mv/part-rename                               \
-  mv/part-symlink                              \
-  mv/partition-perm                            \
-  mv/perm-1                                    \
-  mv/symlink-onto-hardlink                     \
-  mv/symlink-onto-hardlink-to-self             \
-  mv/to-symlink                                        \
-  mv/trailing-slash                            \
-  mv/update                                    \
-  readlink/can-e                               \
-  readlink/can-f                               \
-  readlink/can-m                               \
-  readlink/rl-1                                        \
-  rmdir/fail-perm                              \
-  rmdir/ignore                                 \
-  rmdir/t-slash                                        \
-  tail-2/assert-2                              \
-  tail-2/big-4gb                               \
-  tail-2/flush-initial                         \
-  tail-2/follow-name                           \
-  tail-2/follow-stdin                          \
-  tail-2/pipe-f                                        \
-  tail-2/pipe-f2                               \
-  tail-2/proc-ksyms                            \
-  tail-2/start-middle                          \
-  touch/60-seconds                             \
-  touch/dangling-symlink                       \
-  touch/dir-1                                  \
-  touch/fail-diag                              \
-  touch/fifo                                   \
-  touch/no-create-missing                      \
-  touch/no-dereference                         \
-  touch/no-rights                              \
-  touch/not-owner                              \
-  touch/obsolescent                            \
-  touch/read-only                              \
-  touch/relative                               \
-  touch/trailing-slash                         \
+  tail-2/assert.sh                             \
+  rm/hash.sh                                   \
+  rm/i-1.sh                                    \
+  rm/i-never.sh                                        \
+  rm/i-no-r.sh                                 \
+  tail-2/infloop-1.sh                          \
+  rm/ignorable.sh                              \
+  rm/inaccessible.sh                           \
+  rm/interactive-always.sh                     \
+  rm/interactive-once.sh                       \
+  rm/ir-1.sh                                   \
+  rm/one-file-system2.sh                       \
+  rm/r-1.sh                                    \
+  rm/r-2.sh                                    \
+  rm/r-3.sh                                    \
+  rm/r-4.sh                                    \
+  rm/readdir-bug.sh                            \
+  rm/rm1.sh                                    \
+  touch/empty-file.sh                          \
+  rm/rm2.sh                                    \
+  rm/rm3.sh                                    \
+  rm/rm4.sh                                    \
+  rm/rm5.sh                                    \
+  rm/sunos-1.sh                                        \
+  rm/unread2.sh                                        \
+  rm/unread3.sh                                        \
+  rm/unreadable.pl                             \
+  rm/v-slash.sh                                        \
+  rm/many-dir-entries-vs-OOM.sh                        \
+  chgrp/default-no-deref.sh                    \
+  chgrp/deref.sh                               \
+  chgrp/no-x.sh                                        \
+  chgrp/posix-H.sh                             \
+  chgrp/recurse.sh                             \
+  fmt/base.pl                                  \
+  fmt/long-line.sh                             \
+  fmt/goal-option.sh                           \
+  misc/env.sh                                  \
+  misc/ptx.pl                                  \
+  misc/test.pl                                 \
+  misc/seq.pl                                  \
+  misc/seq-long-double.sh                      \
+  misc/head.pl                                 \
+  misc/head-elide-tail.pl                      \
+  tail-2/tail-n0f.sh                           \
+  misc/ls-misc.pl                              \
+  misc/date.pl                                 \
+  misc/date-next-dow.pl                                \
+  misc/ptx-overrun.sh                          \
+  misc/xstrtol.pl                              \
+  tail-2/pid.sh                                        \
+  misc/od.pl                                   \
+  misc/od-float.sh                             \
+  misc/mktemp.pl                               \
+  misc/arch.sh                                 \
+  misc/pr.pl                                   \
+  misc/join.pl                                 \
+  pr/pr-tests.pl                               \
+  misc/pwd-option.sh                           \
+  misc/chcon-fail.sh                           \
+  misc/cut.pl                                  \
+  misc/wc.pl                                   \
+  misc/wc-files0-from.pl                       \
+  misc/wc-files0.sh                            \
+  misc/wc-parallel.sh                          \
+  misc/cat-proc.sh                             \
+  misc/cat-buf.sh                              \
+  misc/base64.pl                               \
+  misc/basename.pl                             \
+  misc/close-stdout.sh                         \
+  misc/chroot-fail.sh                          \
+  misc/comm.pl                                 \
+  misc/csplit.sh                               \
+  misc/csplit-1000.sh                          \
+  misc/csplit-heap.sh                          \
+  misc/date-sec.sh                             \
+  misc/dircolors.pl                            \
+  misc/dirname.pl                              \
+  misc/env-null.sh                             \
+  misc/expand.pl                               \
+  misc/expr.pl                                 \
+  misc/factor.pl                               \
+  misc/false-status.sh                         \
+  misc/fold.pl                                 \
+  misc/groups-dash.sh                          \
+  misc/groups-version.sh                       \
+  misc/head-c.sh                               \
+  misc/head-pos.sh                             \
+  misc/id-context.sh                           \
+  misc/id-groups.sh                            \
+  misc/id-setgid.sh                            \
+  misc/md5sum.pl                               \
+  misc/md5sum-bsd.sh                           \
+  misc/md5sum-newline.pl                       \
+  misc/md5sum-parallel.sh                      \
+  misc/mknod.sh                                        \
+  misc/nice.sh                                 \
+  misc/nice-fail.sh                            \
+  misc/nl.sh                                   \
+  misc/nohup.sh                                        \
+  misc/nproc-avail.sh                          \
+  misc/nproc-positive.sh                       \
+  misc/od-N.sh                                 \
+  misc/od-multiple-t.sh                                \
+  misc/od-x8.sh                                        \
+  misc/paste.pl                                        \
+  misc/pathchk1.sh                             \
+  misc/printenv.sh                             \
+  misc/printf.sh                               \
+  misc/printf-cov.pl                           \
+  misc/printf-hex.sh                           \
+  misc/printf-surprise.sh                      \
+  misc/pwd-long.sh                             \
+  misc/readlink-fp-loop.sh                     \
+  misc/readlink-root.sh                                \
+  misc/realpath.sh                             \
+  misc/runcon-no-reorder.sh                    \
+  misc/sha1sum.pl                              \
+  misc/sha1sum-vec.pl                          \
+  misc/sha224sum.pl                            \
+  misc/sha256sum.pl                            \
+  misc/sha384sum.pl                            \
+  misc/sha512sum.pl                            \
+  misc/shred-exact.sh                          \
+  misc/shred-passes.sh                         \
+  misc/shred-remove.sh                         \
+  misc/shuf.sh                                 \
+  misc/sort.pl                                 \
+  misc/sort-benchmark-random.sh                        \
+  misc/sort-compress.sh                                \
+  misc/sort-compress-hang.sh                   \
+  misc/sort-compress-proc.sh                   \
+  misc/sort-continue.sh                                \
+  misc/sort-debug-keys.sh                      \
+  misc/sort-debug-warn.sh                      \
+  misc/sort-discrim.sh                         \
+  misc/sort-files0-from.pl                     \
+  misc/sort-float.sh                           \
+  misc/sort-merge.pl                           \
+  misc/sort-merge-fdlimit.sh                   \
+  misc/sort-month.sh                           \
+  misc/sort-exit-early.sh                      \
+  misc/sort-rand.sh                            \
+  misc/sort-spinlock-abuse.sh                  \
+  misc/sort-stale-thread-mem.sh                        \
+  misc/sort-unique.sh                          \
+  misc/sort-unique-segv.sh                     \
+  misc/sort-version.sh                         \
+  misc/sort-NaN-infloop.sh                     \
+  misc/sort-u-FMR.sh                           \
+  split/filter.sh                              \
+  split/suffix-auto-length.sh                  \
+  split/suffix-length.sh                       \
+  split/additional-suffix.sh                   \
+  split/b-chunk.sh                             \
+  split/fail.sh                                        \
+  split/lines.sh                               \
+  split/l-chunk.sh                             \
+  split/r-chunk.sh                             \
+  split/numeric.sh                             \
+  split/guard-input.sh                         \
+  misc/stat-birthtime.sh                       \
+  misc/stat-fmt.sh                             \
+  misc/stat-hyphen.sh                          \
+  misc/stat-mount.sh                           \
+  misc/stat-nanoseconds.sh                     \
+  misc/stat-printf.pl                          \
+  misc/stat-slash.sh                           \
+  misc/stdbuf.sh                               \
+  misc/stty.sh                                 \
+  misc/stty-invalid.sh                         \
+  misc/stty-pairs.sh                           \
+  misc/stty-row-col.sh                         \
+  misc/sum.pl                                  \
+  misc/sum-sysv.sh                             \
+  misc/tac.pl                                  \
+  misc/tac-continue.sh                         \
+  misc/tac-2-nonseekable.sh                    \
+  misc/tail.pl                                 \
+  misc/tee.sh                                  \
+  misc/tee-dash.sh                             \
+  misc/test-diag.pl                            \
+  misc/timeout.sh                              \
+  misc/timeout-group.sh                                \
+  misc/timeout-parameters.sh                   \
+  misc/tr.pl                                   \
+  misc/tr-case-class.sh                                \
+  misc/truncate-dangling-symlink.sh            \
+  misc/truncate-dir-fail.sh                    \
+  misc/truncate-fail-diag.sh                   \
+  misc/truncate-fifo.sh                                \
+  misc/truncate-no-create-missing.sh           \
+  misc/truncate-overflow.sh                    \
+  misc/truncate-parameters.sh                  \
+  misc/truncate-relative.sh                    \
+  misc/tsort.pl                                        \
+  misc/unexpand.pl                             \
+  misc/uniq.pl                                 \
+  misc/uniq-perf.sh                            \
+  misc/xattr.sh                                        \
+  tail-2/wait.sh                               \
+  chmod/c-option.sh                            \
+  chmod/equal-x.sh                             \
+  chmod/equals.sh                              \
+  chmod/inaccessible.sh                                \
+  chmod/octal.sh                               \
+  chmod/setgid.sh                              \
+  chmod/silent.sh                              \
+  chmod/thru-dangling.sh                       \
+  chmod/umask-x.sh                             \
+  chmod/usage.sh                               \
+  chown/deref.sh                               \
+  chown/preserve-root.sh                       \
+  chown/separator.sh                           \
+  cp/abuse.sh                                  \
+  cp/acl.sh                                    \
+  cp/attr-existing.sh                          \
+  cp/backup-1.sh                               \
+  cp/backup-dir.sh                             \
+  cp/backup-is-src.sh                          \
+  cp/cp-HL.sh                                  \
+  cp/cp-deref.sh                               \
+  cp/cp-i.sh                                   \
+  cp/cp-mv-backup.sh                           \
+  cp/cp-parents.sh                             \
+  cp/deref-slink.sh                            \
+  cp/dir-rm-dest.sh                            \
+  cp/dir-slash.sh                              \
+  cp/dir-vs-file.sh                            \
+  cp/existing-perm-dir.sh                      \
+  cp/existing-perm-race.sh                     \
+  cp/fail-perm.sh                              \
+  cp/fiemap-empty.sh                           \
+  cp/fiemap-perf.sh                            \
+  cp/fiemap-2.sh                               \
+  cp/file-perm-race.sh                         \
+  cp/into-self.sh                              \
+  cp/link.sh                                   \
+  cp/link-no-deref.sh                          \
+  cp/link-preserve.sh                          \
+  cp/link-symlink.sh                           \
+  cp/nfs-removal-race.sh                       \
+  cp/no-deref-link1.sh                         \
+  cp/no-deref-link2.sh                         \
+  cp/no-deref-link3.sh                         \
+  cp/parent-perm.sh                            \
+  cp/parent-perm-race.sh                       \
+  cp/perm.sh                                   \
+  cp/preserve-2.sh                             \
+  cp/preserve-link.sh                          \
+  cp/preserve-slink-time.sh                    \
+  cp/proc-short-read.sh                                \
+  cp/proc-zero-len.sh                          \
+  cp/r-vs-symlink.sh                           \
+  cp/reflink-auto.sh                           \
+  cp/reflink-perm.sh                           \
+  cp/same-file.sh                              \
+  cp/slink-2-slink.sh                          \
+  cp/sparse.sh                                 \
+  cp/sparse-to-pipe.sh                         \
+  cp/special-f.sh                              \
+  cp/src-base-dot.sh                           \
+  cp/symlink-slash.sh                          \
+  cp/thru-dangling.sh                          \
+  df/header.sh                                 \
+  df/df-P.sh                                   \
+  df/unreadable.sh                             \
+  df/total-unprocessed.sh                      \
+  df/no-mtab-status.sh                         \
+  dd/direct.sh                                 \
+  dd/misc.sh                                   \
+  dd/nocache.sh                                        \
+  dd/not-rewound.sh                            \
+  dd/reblock.sh                                        \
+  dd/skip-seek.pl                              \
+  dd/skip-seek2.sh                             \
+  dd/bytes.sh                                  \
+  dd/skip-seek-past-file.sh                    \
+  dd/sparse.sh                                 \
+  dd/stderr.sh                                 \
+  dd/unblock.pl                                        \
+  dd/unblock-sync.sh                           \
+  df/total-verify.sh                           \
+  du/2g.sh                                     \
+  du/8gb.sh                                    \
+  du/basic.sh                                  \
+  du/bigtime.sh                                        \
+  du/deref.sh                                  \
+  du/deref-args.sh                             \
+  du/exclude.sh                                        \
+  du/fd-leak.sh                                        \
+  du/files0-from.pl                            \
+  du/files0-from-dir.sh                                \
+  du/hard-link.sh                              \
+  du/inacc-dest.sh                             \
+  du/inacc-dir.sh                              \
+  du/inaccessible-cwd.sh                       \
+  du/long-from-unreadable.sh                   \
+  du/long-sloop.sh                             \
+  du/max-depth.sh                              \
+  du/move-dir-while-traversing.sh              \
+  du/no-deref.sh                               \
+  du/no-x.sh                                   \
+  du/one-file-system.sh                                \
+  du/restore-wd.sh                             \
+  du/slash.sh                                  \
+  du/slink.sh                                  \
+  du/trailing-slash.sh                         \
+  du/two-args.sh                               \
+  id/gnu-zero-uids.sh                          \
+  id/no-context.sh                             \
+  install/basic-1.sh                           \
+  install/create-leading.sh                    \
+  install/d-slashdot.sh                                \
+  install/install-C.sh                         \
+  install/install-C-selinux.sh                 \
+  install/strip-program.sh                     \
+  install/trap.sh                              \
+  ln/backup-1.sh                               \
+  ln/hard-backup.sh                            \
+  ln/hard-to-sym.sh                            \
+  ln/misc.sh                                   \
+  ln/relative.sh                               \
+  ln/sf-1.sh                                   \
+  ln/slash-decorated-nonexistent-dest.sh       \
+  ln/target-1.sh                               \
+  ls/abmon-align.sh                            \
+  ls/block-size.sh                             \
+  ls/color-clear-to-eol.sh                     \
+  ls/color-dtype-dir.sh                                \
+  ls/color-norm.sh                             \
+  ls/dangle.sh                                 \
+  ls/dired.sh                                  \
+  ls/file-type.sh                              \
+  ls/follow-slink.sh                           \
+  ls/getxattr-speedup.sh                       \
+  ls/infloop.sh                                        \
+  ls/inode.sh                                  \
+  ls/m-option.sh                               \
+  ls/multihardlink.sh                          \
+  ls/no-arg.sh                                 \
+  ls/no-cap.sh                                 \
+  ls/proc-selinux-segfault.sh                  \
+  ls/readdir-mountpoint-inode.sh               \
+  ls/recursive.sh                              \
+  ls/root-rel-symlink-color.sh                 \
+  ls/rt-1.sh                                   \
+  ls/slink-acl.sh                              \
+  ls/stat-dtype.sh                             \
+  ls/stat-failed.sh                            \
+  ls/stat-free-color.sh                                \
+  ls/stat-free-symlinks.sh                     \
+  ls/stat-vs-dirent.sh                         \
+  ls/symlink-slash.sh                          \
+  ls/time-style-diag.sh                                \
+  ls/x-option.sh                               \
+  mkdir/p-1.sh                                 \
+  mkdir/p-2.sh                                 \
+  mkdir/p-3.sh                                 \
+  mkdir/p-slashdot.sh                          \
+  mkdir/p-thru-slink.sh                                \
+  mkdir/p-v.sh                                 \
+  mkdir/parents.sh                             \
+  mkdir/perm.sh                                        \
+  mkdir/selinux.sh                             \
+  mkdir/special-1.sh                           \
+  mkdir/t-slash.sh                             \
+  mv/acl.sh                                    \
+  mv/atomic.sh                                 \
+  mv/atomic2.sh                                        \
+  mv/backup-dir.sh                             \
+  mv/backup-is-src.sh                          \
+  mv/childproof.sh                             \
+  mv/diag.sh                                   \
+  mv/dir-file.sh                               \
+  mv/dir2dir.sh                                        \
+  mv/dup-source.sh                             \
+  mv/force.sh                                  \
+  mv/hard-2.sh                                 \
+  mv/hard-3.sh                                 \
+  mv/hard-4.sh                                 \
+  mv/hard-link-1.sh                            \
+  mv/hard-verbose.sh                           \
+  mv/i-1.pl                                    \
+  mv/i-2.sh                                    \
+  mv/i-3.sh                                    \
+  mv/i-4.sh                                    \
+  mv/i-5.sh                                    \
+  mv/i-link-no.sh                              \
+  mv/into-self.sh                              \
+  mv/into-self-2.sh                            \
+  mv/into-self-3.sh                            \
+  mv/into-self-4.sh                            \
+  mv/leak-fd.sh                                        \
+  mv/mv-n.sh                                   \
+  mv/mv-special-1.sh                           \
+  mv/no-target-dir.sh                          \
+  mv/part-fail.sh                              \
+  mv/part-hardlink.sh                          \
+  mv/part-rename.sh                            \
+  mv/part-symlink.sh                           \
+  mv/partition-perm.sh                         \
+  mv/perm-1.sh                                 \
+  mv/symlink-onto-hardlink.sh                  \
+  mv/symlink-onto-hardlink-to-self.sh          \
+  mv/to-symlink.sh                             \
+  mv/trailing-slash.sh                         \
+  mv/update.sh                                 \
+  readlink/can-e.sh                            \
+  readlink/can-f.sh                            \
+  readlink/can-m.sh                            \
+  readlink/rl-1.sh                             \
+  rmdir/fail-perm.sh                           \
+  rmdir/ignore.sh                              \
+  rmdir/t-slash.sh                             \
+  tail-2/assert-2.sh                           \
+  tail-2/big-4gb.sh                            \
+  tail-2/flush-initial.sh                      \
+  tail-2/follow-name.sh                                \
+  tail-2/follow-stdin.sh                       \
+  tail-2/pipe-f.sh                             \
+  tail-2/pipe-f2.sh                            \
+  tail-2/proc-ksyms.sh                         \
+  tail-2/start-middle.sh                       \
+  touch/60-seconds.sh                          \
+  touch/dangling-symlink.sh                    \
+  touch/dir-1.sh                               \
+  touch/fail-diag.sh                           \
+  touch/fifo.sh                                        \
+  touch/no-create-missing.sh                   \
+  touch/no-dereference.sh                      \
+  touch/no-rights.sh                           \
+  touch/not-owner.sh                           \
+  touch/obsolescent.sh                         \
+  touch/read-only.sh                           \
+  touch/relative.sh                            \
+  touch/trailing-slash.sh                      \
   $(root_tests)

 pr_data =                                      \
diff --git a/tests/chgrp/basic b/tests/chgrp/basic.sh
similarity index 100%
rename from tests/chgrp/basic
rename to tests/chgrp/basic.sh
diff --git a/tests/chgrp/default-no-deref b/tests/chgrp/default-no-deref.sh
similarity index 100%
rename from tests/chgrp/default-no-deref
rename to tests/chgrp/default-no-deref.sh
diff --git a/tests/chgrp/deref b/tests/chgrp/deref.sh
similarity index 100%
rename from tests/chgrp/deref
rename to tests/chgrp/deref.sh
diff --git a/tests/chgrp/no-x b/tests/chgrp/no-x.sh
similarity index 100%
rename from tests/chgrp/no-x
rename to tests/chgrp/no-x.sh
diff --git a/tests/chgrp/posix-H b/tests/chgrp/posix-H.sh
similarity index 100%
rename from tests/chgrp/posix-H
rename to tests/chgrp/posix-H.sh
diff --git a/tests/chgrp/recurse b/tests/chgrp/recurse.sh
similarity index 100%
rename from tests/chgrp/recurse
rename to tests/chgrp/recurse.sh
diff --git a/tests/chmod/c-option b/tests/chmod/c-option.sh
similarity index 100%
rename from tests/chmod/c-option
rename to tests/chmod/c-option.sh
diff --git a/tests/chmod/equal-x b/tests/chmod/equal-x.sh
similarity index 100%
rename from tests/chmod/equal-x
rename to tests/chmod/equal-x.sh
diff --git a/tests/chmod/equals b/tests/chmod/equals.sh
similarity index 100%
rename from tests/chmod/equals
rename to tests/chmod/equals.sh
diff --git a/tests/chmod/inaccessible b/tests/chmod/inaccessible.sh
similarity index 100%
rename from tests/chmod/inaccessible
rename to tests/chmod/inaccessible.sh
diff --git a/tests/chmod/no-x b/tests/chmod/no-x.sh
similarity index 100%
rename from tests/chmod/no-x
rename to tests/chmod/no-x.sh
diff --git a/tests/chmod/octal b/tests/chmod/octal.sh
similarity index 100%
rename from tests/chmod/octal
rename to tests/chmod/octal.sh
diff --git a/tests/chmod/setgid b/tests/chmod/setgid.sh
similarity index 100%
rename from tests/chmod/setgid
rename to tests/chmod/setgid.sh
diff --git a/tests/chmod/silent b/tests/chmod/silent.sh
similarity index 100%
rename from tests/chmod/silent
rename to tests/chmod/silent.sh
diff --git a/tests/chmod/thru-dangling b/tests/chmod/thru-dangling.sh
similarity index 100%
rename from tests/chmod/thru-dangling
rename to tests/chmod/thru-dangling.sh
diff --git a/tests/chmod/umask-x b/tests/chmod/umask-x.sh
similarity index 100%
rename from tests/chmod/umask-x
rename to tests/chmod/umask-x.sh
diff --git a/tests/chmod/usage b/tests/chmod/usage.sh
similarity index 100%
rename from tests/chmod/usage
rename to tests/chmod/usage.sh
diff --git a/tests/chown/basic b/tests/chown/basic.sh
similarity index 100%
rename from tests/chown/basic
rename to tests/chown/basic.sh
diff --git a/tests/chown/deref b/tests/chown/deref.sh
similarity index 100%
rename from tests/chown/deref
rename to tests/chown/deref.sh
diff --git a/tests/chown/preserve-root b/tests/chown/preserve-root.sh
similarity index 100%
rename from tests/chown/preserve-root
rename to tests/chown/preserve-root.sh
diff --git a/tests/chown/separator b/tests/chown/separator.sh
similarity index 100%
rename from tests/chown/separator
rename to tests/chown/separator.sh
diff --git a/tests/cp/abuse b/tests/cp/abuse.sh
similarity index 100%
rename from tests/cp/abuse
rename to tests/cp/abuse.sh
diff --git a/tests/cp/acl b/tests/cp/acl.sh
similarity index 100%
rename from tests/cp/acl
rename to tests/cp/acl.sh
diff --git a/tests/cp/attr-existing b/tests/cp/attr-existing.sh
similarity index 100%
rename from tests/cp/attr-existing
rename to tests/cp/attr-existing.sh
diff --git a/tests/cp/backup-1 b/tests/cp/backup-1.sh
similarity index 100%
rename from tests/cp/backup-1
rename to tests/cp/backup-1.sh
diff --git a/tests/cp/backup-dir b/tests/cp/backup-dir.sh
similarity index 100%
rename from tests/cp/backup-dir
rename to tests/cp/backup-dir.sh
diff --git a/tests/cp/backup-is-src b/tests/cp/backup-is-src.sh
similarity index 100%
rename from tests/cp/backup-is-src
rename to tests/cp/backup-is-src.sh
diff --git a/tests/cp/capability b/tests/cp/capability.sh
similarity index 100%
rename from tests/cp/capability
rename to tests/cp/capability.sh
diff --git a/tests/cp/cp-HL b/tests/cp/cp-HL.sh
similarity index 100%
rename from tests/cp/cp-HL
rename to tests/cp/cp-HL.sh
diff --git a/tests/cp/cp-a-selinux b/tests/cp/cp-a-selinux.sh
similarity index 100%
rename from tests/cp/cp-a-selinux
rename to tests/cp/cp-a-selinux.sh
diff --git a/tests/cp/cp-deref b/tests/cp/cp-deref.sh
similarity index 100%
rename from tests/cp/cp-deref
rename to tests/cp/cp-deref.sh
diff --git a/tests/cp/cp-i b/tests/cp/cp-i.sh
similarity index 100%
rename from tests/cp/cp-i
rename to tests/cp/cp-i.sh
diff --git a/tests/cp/cp-mv-backup b/tests/cp/cp-mv-backup.sh
similarity index 100%
rename from tests/cp/cp-mv-backup
rename to tests/cp/cp-mv-backup.sh
diff --git a/tests/cp/cp-mv-enotsup-xattr b/tests/cp/cp-mv-enotsup-xattr.sh
similarity index 100%
rename from tests/cp/cp-mv-enotsup-xattr
rename to tests/cp/cp-mv-enotsup-xattr.sh
diff --git a/tests/cp/cp-parents b/tests/cp/cp-parents.sh
similarity index 100%
rename from tests/cp/cp-parents
rename to tests/cp/cp-parents.sh
diff --git a/tests/cp/deref-slink b/tests/cp/deref-slink.sh
similarity index 100%
rename from tests/cp/deref-slink
rename to tests/cp/deref-slink.sh
diff --git a/tests/cp/dir-rm-dest b/tests/cp/dir-rm-dest.sh
similarity index 100%
rename from tests/cp/dir-rm-dest
rename to tests/cp/dir-rm-dest.sh
diff --git a/tests/cp/dir-slash b/tests/cp/dir-slash.sh
similarity index 100%
rename from tests/cp/dir-slash
rename to tests/cp/dir-slash.sh
diff --git a/tests/cp/dir-vs-file b/tests/cp/dir-vs-file.sh
similarity index 100%
rename from tests/cp/dir-vs-file
rename to tests/cp/dir-vs-file.sh
diff --git a/tests/cp/existing-perm-dir b/tests/cp/existing-perm-dir.sh
similarity index 100%
rename from tests/cp/existing-perm-dir
rename to tests/cp/existing-perm-dir.sh
diff --git a/tests/cp/existing-perm-race b/tests/cp/existing-perm-race.sh
similarity index 100%
rename from tests/cp/existing-perm-race
rename to tests/cp/existing-perm-race.sh
diff --git a/tests/cp/fail-perm b/tests/cp/fail-perm.sh
similarity index 100%
rename from tests/cp/fail-perm
rename to tests/cp/fail-perm.sh
diff --git a/tests/cp/fiemap-2 b/tests/cp/fiemap-2.sh
similarity index 100%
rename from tests/cp/fiemap-2
rename to tests/cp/fiemap-2.sh
diff --git a/tests/cp/fiemap-empty b/tests/cp/fiemap-empty.sh
similarity index 100%
rename from tests/cp/fiemap-empty
rename to tests/cp/fiemap-empty.sh
diff --git a/tests/cp/fiemap-perf b/tests/cp/fiemap-perf.sh
similarity index 100%
rename from tests/cp/fiemap-perf
rename to tests/cp/fiemap-perf.sh
diff --git a/tests/cp/file-perm-race b/tests/cp/file-perm-race.sh
similarity index 100%
rename from tests/cp/file-perm-race
rename to tests/cp/file-perm-race.sh
diff --git a/tests/cp/into-self b/tests/cp/into-self.sh
similarity index 100%
rename from tests/cp/into-self
rename to tests/cp/into-self.sh
diff --git a/tests/cp/link-heap b/tests/cp/link-heap.sh
similarity index 100%
rename from tests/cp/link-heap
rename to tests/cp/link-heap.sh
diff --git a/tests/cp/link-no-deref b/tests/cp/link-no-deref.sh
similarity index 100%
rename from tests/cp/link-no-deref
rename to tests/cp/link-no-deref.sh
diff --git a/tests/cp/link-preserve b/tests/cp/link-preserve.sh
similarity index 100%
rename from tests/cp/link-preserve
rename to tests/cp/link-preserve.sh
diff --git a/tests/cp/link-symlink b/tests/cp/link-symlink.sh
similarity index 100%
rename from tests/cp/link-symlink
rename to tests/cp/link-symlink.sh
diff --git a/tests/cp/link b/tests/cp/link.sh
similarity index 100%
rename from tests/cp/link
rename to tests/cp/link.sh
diff --git a/tests/cp/nfs-removal-race b/tests/cp/nfs-removal-race.sh
similarity index 100%
rename from tests/cp/nfs-removal-race
rename to tests/cp/nfs-removal-race.sh
diff --git a/tests/cp/no-deref-link1 b/tests/cp/no-deref-link1.sh
similarity index 100%
rename from tests/cp/no-deref-link1
rename to tests/cp/no-deref-link1.sh
diff --git a/tests/cp/no-deref-link2 b/tests/cp/no-deref-link2.sh
similarity index 100%
rename from tests/cp/no-deref-link2
rename to tests/cp/no-deref-link2.sh
diff --git a/tests/cp/no-deref-link3 b/tests/cp/no-deref-link3.sh
similarity index 100%
rename from tests/cp/no-deref-link3
rename to tests/cp/no-deref-link3.sh
diff --git a/tests/cp/parent-perm-race b/tests/cp/parent-perm-race.sh
similarity index 100%
rename from tests/cp/parent-perm-race
rename to tests/cp/parent-perm-race.sh
diff --git a/tests/cp/parent-perm b/tests/cp/parent-perm.sh
similarity index 100%
rename from tests/cp/parent-perm
rename to tests/cp/parent-perm.sh
diff --git a/tests/cp/perm b/tests/cp/perm.sh
similarity index 100%
rename from tests/cp/perm
rename to tests/cp/perm.sh
diff --git a/tests/cp/preserve-2 b/tests/cp/preserve-2.sh
similarity index 100%
rename from tests/cp/preserve-2
rename to tests/cp/preserve-2.sh
diff --git a/tests/cp/preserve-gid b/tests/cp/preserve-gid.sh
similarity index 100%
rename from tests/cp/preserve-gid
rename to tests/cp/preserve-gid.sh
diff --git a/tests/cp/preserve-link b/tests/cp/preserve-link.sh
similarity index 100%
rename from tests/cp/preserve-link
rename to tests/cp/preserve-link.sh
diff --git a/tests/cp/preserve-slink-time b/tests/cp/preserve-slink-time.sh
similarity index 100%
rename from tests/cp/preserve-slink-time
rename to tests/cp/preserve-slink-time.sh
diff --git a/tests/cp/proc-short-read b/tests/cp/proc-short-read.sh
similarity index 100%
rename from tests/cp/proc-short-read
rename to tests/cp/proc-short-read.sh
diff --git a/tests/cp/proc-zero-len b/tests/cp/proc-zero-len.sh
similarity index 100%
rename from tests/cp/proc-zero-len
rename to tests/cp/proc-zero-len.sh
diff --git a/tests/cp/r-vs-symlink b/tests/cp/r-vs-symlink.sh
similarity index 100%
rename from tests/cp/r-vs-symlink
rename to tests/cp/r-vs-symlink.sh
diff --git a/tests/cp/reflink-auto b/tests/cp/reflink-auto.sh
similarity index 100%
rename from tests/cp/reflink-auto
rename to tests/cp/reflink-auto.sh
diff --git a/tests/cp/reflink-perm b/tests/cp/reflink-perm.sh
similarity index 100%
rename from tests/cp/reflink-perm
rename to tests/cp/reflink-perm.sh
diff --git a/tests/cp/same-file b/tests/cp/same-file.sh
similarity index 100%
rename from tests/cp/same-file
rename to tests/cp/same-file.sh
diff --git a/tests/cp/slink-2-slink b/tests/cp/slink-2-slink.sh
similarity index 100%
rename from tests/cp/slink-2-slink
rename to tests/cp/slink-2-slink.sh
diff --git a/tests/cp/sparse-fiemap b/tests/cp/sparse-fiemap.sh
similarity index 100%
rename from tests/cp/sparse-fiemap
rename to tests/cp/sparse-fiemap.sh
diff --git a/tests/cp/sparse-to-pipe b/tests/cp/sparse-to-pipe.sh
similarity index 100%
rename from tests/cp/sparse-to-pipe
rename to tests/cp/sparse-to-pipe.sh
diff --git a/tests/cp/sparse b/tests/cp/sparse.sh
similarity index 100%
rename from tests/cp/sparse
rename to tests/cp/sparse.sh
diff --git a/tests/cp/special-bits b/tests/cp/special-bits.sh
similarity index 100%
rename from tests/cp/special-bits
rename to tests/cp/special-bits.sh
diff --git a/tests/cp/special-f b/tests/cp/special-f.sh
similarity index 100%
rename from tests/cp/special-f
rename to tests/cp/special-f.sh
diff --git a/tests/cp/src-base-dot b/tests/cp/src-base-dot.sh
similarity index 100%
rename from tests/cp/src-base-dot
rename to tests/cp/src-base-dot.sh
diff --git a/tests/cp/symlink-slash b/tests/cp/symlink-slash.sh
similarity index 100%
rename from tests/cp/symlink-slash
rename to tests/cp/symlink-slash.sh
diff --git a/tests/cp/thru-dangling b/tests/cp/thru-dangling.sh
similarity index 100%
rename from tests/cp/thru-dangling
rename to tests/cp/thru-dangling.sh
diff --git a/tests/dd/bytes b/tests/dd/bytes.sh
similarity index 100%
rename from tests/dd/bytes
rename to tests/dd/bytes.sh
diff --git a/tests/dd/direct b/tests/dd/direct.sh
similarity index 100%
rename from tests/dd/direct
rename to tests/dd/direct.sh
diff --git a/tests/dd/misc b/tests/dd/misc.sh
similarity index 100%
rename from tests/dd/misc
rename to tests/dd/misc.sh
diff --git a/tests/dd/nocache b/tests/dd/nocache.sh
similarity index 100%
rename from tests/dd/nocache
rename to tests/dd/nocache.sh
diff --git a/tests/dd/not-rewound b/tests/dd/not-rewound.sh
similarity index 100%
rename from tests/dd/not-rewound
rename to tests/dd/not-rewound.sh
diff --git a/tests/dd/reblock b/tests/dd/reblock.sh
similarity index 100%
rename from tests/dd/reblock
rename to tests/dd/reblock.sh
diff --git a/tests/dd/skip-seek-past-dev b/tests/dd/skip-seek-past-dev.sh
similarity index 100%
rename from tests/dd/skip-seek-past-dev
rename to tests/dd/skip-seek-past-dev.sh
diff --git a/tests/dd/skip-seek-past-file b/tests/dd/skip-seek-past-file.sh
similarity index 100%
rename from tests/dd/skip-seek-past-file
rename to tests/dd/skip-seek-past-file.sh
diff --git a/tests/dd/skip-seek b/tests/dd/skip-seek.pl
similarity index 100%
rename from tests/dd/skip-seek
rename to tests/dd/skip-seek.pl
diff --git a/tests/dd/skip-seek2 b/tests/dd/skip-seek2.sh
similarity index 100%
rename from tests/dd/skip-seek2
rename to tests/dd/skip-seek2.sh
diff --git a/tests/dd/sparse b/tests/dd/sparse.sh
similarity index 100%
rename from tests/dd/sparse
rename to tests/dd/sparse.sh
diff --git a/tests/dd/stderr b/tests/dd/stderr.sh
similarity index 100%
rename from tests/dd/stderr
rename to tests/dd/stderr.sh
diff --git a/tests/dd/unblock-sync b/tests/dd/unblock-sync.sh
similarity index 100%
rename from tests/dd/unblock-sync
rename to tests/dd/unblock-sync.sh
diff --git a/tests/dd/unblock b/tests/dd/unblock.pl
similarity index 100%
rename from tests/dd/unblock
rename to tests/dd/unblock.pl
diff --git a/tests/df/df-P b/tests/df/df-P.sh
similarity index 100%
rename from tests/df/df-P
rename to tests/df/df-P.sh
diff --git a/tests/df/header b/tests/df/header.sh
similarity index 100%
rename from tests/df/header
rename to tests/df/header.sh
diff --git a/tests/df/no-mtab-status b/tests/df/no-mtab-status.sh
similarity index 100%
rename from tests/df/no-mtab-status
rename to tests/df/no-mtab-status.sh
diff --git a/tests/df/problematic-chars b/tests/df/problematic-chars.sh
similarity index 100%
rename from tests/df/problematic-chars
rename to tests/df/problematic-chars.sh
diff --git a/tests/df/total-unprocessed b/tests/df/total-unprocessed.sh
similarity index 100%
rename from tests/df/total-unprocessed
rename to tests/df/total-unprocessed.sh
diff --git a/tests/df/total-verify b/tests/df/total-verify.sh
similarity index 100%
rename from tests/df/total-verify
rename to tests/df/total-verify.sh
diff --git a/tests/df/unreadable b/tests/df/unreadable.sh
similarity index 100%
rename from tests/df/unreadable
rename to tests/df/unreadable.sh
diff --git a/tests/du/2g b/tests/du/2g.sh
similarity index 100%
rename from tests/du/2g
rename to tests/du/2g.sh
diff --git a/tests/du/8gb b/tests/du/8gb.sh
similarity index 100%
rename from tests/du/8gb
rename to tests/du/8gb.sh
diff --git a/tests/du/basic b/tests/du/basic.sh
similarity index 100%
rename from tests/du/basic
rename to tests/du/basic.sh
diff --git a/tests/du/bigtime b/tests/du/bigtime.sh
similarity index 100%
rename from tests/du/bigtime
rename to tests/du/bigtime.sh
diff --git a/tests/du/bind-mount-dir-cycle b/tests/du/bind-mount-dir-cycle.sh
similarity index 100%
rename from tests/du/bind-mount-dir-cycle
rename to tests/du/bind-mount-dir-cycle.sh
diff --git a/tests/du/deref-args b/tests/du/deref-args.sh
similarity index 100%
rename from tests/du/deref-args
rename to tests/du/deref-args.sh
diff --git a/tests/du/deref b/tests/du/deref.sh
similarity index 100%
rename from tests/du/deref
rename to tests/du/deref.sh
diff --git a/tests/du/exclude b/tests/du/exclude.sh
similarity index 100%
rename from tests/du/exclude
rename to tests/du/exclude.sh
diff --git a/tests/du/fd-leak b/tests/du/fd-leak.sh
similarity index 100%
rename from tests/du/fd-leak
rename to tests/du/fd-leak.sh
diff --git a/tests/du/files0-from-dir b/tests/du/files0-from-dir.sh
similarity index 100%
rename from tests/du/files0-from-dir
rename to tests/du/files0-from-dir.sh
diff --git a/tests/du/files0-from b/tests/du/files0-from.pl
similarity index 100%
rename from tests/du/files0-from
rename to tests/du/files0-from.pl
diff --git a/tests/du/hard-link b/tests/du/hard-link.sh
similarity index 100%
rename from tests/du/hard-link
rename to tests/du/hard-link.sh
diff --git a/tests/du/inacc-dest b/tests/du/inacc-dest.sh
similarity index 100%
rename from tests/du/inacc-dest
rename to tests/du/inacc-dest.sh
diff --git a/tests/du/inacc-dir b/tests/du/inacc-dir.sh
similarity index 100%
rename from tests/du/inacc-dir
rename to tests/du/inacc-dir.sh
diff --git a/tests/du/inaccessible-cwd b/tests/du/inaccessible-cwd.sh
similarity index 100%
rename from tests/du/inaccessible-cwd
rename to tests/du/inaccessible-cwd.sh
diff --git a/tests/du/long-from-unreadable b/tests/du/long-from-unreadable.sh
similarity index 100%
rename from tests/du/long-from-unreadable
rename to tests/du/long-from-unreadable.sh
diff --git a/tests/du/long-sloop b/tests/du/long-sloop.sh
similarity index 100%
rename from tests/du/long-sloop
rename to tests/du/long-sloop.sh
diff --git a/tests/du/max-depth b/tests/du/max-depth.sh
similarity index 100%
rename from tests/du/max-depth
rename to tests/du/max-depth.sh
diff --git a/tests/du/move-dir-while-traversing 
b/tests/du/move-dir-while-traversing.sh
similarity index 100%
rename from tests/du/move-dir-while-traversing
rename to tests/du/move-dir-while-traversing.sh
diff --git a/tests/du/no-deref b/tests/du/no-deref.sh
similarity index 100%
rename from tests/du/no-deref
rename to tests/du/no-deref.sh
diff --git a/tests/du/no-x b/tests/du/no-x.sh
similarity index 100%
rename from tests/du/no-x
rename to tests/du/no-x.sh
diff --git a/tests/du/one-file-system b/tests/du/one-file-system.sh
similarity index 100%
rename from tests/du/one-file-system
rename to tests/du/one-file-system.sh
diff --git a/tests/du/restore-wd b/tests/du/restore-wd.sh
similarity index 100%
rename from tests/du/restore-wd
rename to tests/du/restore-wd.sh
diff --git a/tests/du/slash b/tests/du/slash.sh
similarity index 100%
rename from tests/du/slash
rename to tests/du/slash.sh
diff --git a/tests/du/slink b/tests/du/slink.sh
similarity index 100%
rename from tests/du/slink
rename to tests/du/slink.sh
diff --git a/tests/du/trailing-slash b/tests/du/trailing-slash.sh
similarity index 100%
rename from tests/du/trailing-slash
rename to tests/du/trailing-slash.sh
diff --git a/tests/du/two-args b/tests/du/two-args.sh
similarity index 100%
rename from tests/du/two-args
rename to tests/du/two-args.sh
diff --git a/tests/fmt/base b/tests/fmt/base.pl
similarity index 100%
rename from tests/fmt/base
rename to tests/fmt/base.pl
diff --git a/tests/fmt/goal-option b/tests/fmt/goal-option.sh
similarity index 100%
rename from tests/fmt/goal-option
rename to tests/fmt/goal-option.sh
diff --git a/tests/fmt/long-line b/tests/fmt/long-line.sh
similarity index 100%
rename from tests/fmt/long-line
rename to tests/fmt/long-line.sh
diff --git a/tests/id/gnu-zero-uids b/tests/id/gnu-zero-uids.sh
similarity index 100%
rename from tests/id/gnu-zero-uids
rename to tests/id/gnu-zero-uids.sh
diff --git a/tests/id/no-context b/tests/id/no-context.sh
similarity index 100%
rename from tests/id/no-context
rename to tests/id/no-context.sh
diff --git a/tests/install/basic-1 b/tests/install/basic-1.sh
similarity index 100%
rename from tests/install/basic-1
rename to tests/install/basic-1.sh
diff --git a/tests/install/create-leading b/tests/install/create-leading.sh
similarity index 100%
rename from tests/install/create-leading
rename to tests/install/create-leading.sh
diff --git a/tests/install/d-slashdot b/tests/install/d-slashdot.sh
similarity index 100%
rename from tests/install/d-slashdot
rename to tests/install/d-slashdot.sh
diff --git a/tests/install/install-C-root b/tests/install/install-C-root.sh
similarity index 100%
rename from tests/install/install-C-root
rename to tests/install/install-C-root.sh
diff --git a/tests/install/install-C-selinux 
b/tests/install/install-C-selinux.sh
similarity index 100%
rename from tests/install/install-C-selinux
rename to tests/install/install-C-selinux.sh
diff --git a/tests/install/install-C b/tests/install/install-C.sh
similarity index 100%
rename from tests/install/install-C
rename to tests/install/install-C.sh
diff --git a/tests/install/strip-program b/tests/install/strip-program.sh
similarity index 100%
rename from tests/install/strip-program
rename to tests/install/strip-program.sh
diff --git a/tests/install/trap b/tests/install/trap.sh
similarity index 100%
rename from tests/install/trap
rename to tests/install/trap.sh
diff --git a/tests/ln/backup-1 b/tests/ln/backup-1.sh
similarity index 100%
rename from tests/ln/backup-1
rename to tests/ln/backup-1.sh
diff --git a/tests/ln/hard-backup b/tests/ln/hard-backup.sh
similarity index 100%
rename from tests/ln/hard-backup
rename to tests/ln/hard-backup.sh
diff --git a/tests/ln/hard-to-sym b/tests/ln/hard-to-sym.sh
similarity index 100%
rename from tests/ln/hard-to-sym
rename to tests/ln/hard-to-sym.sh
diff --git a/tests/ln/misc b/tests/ln/misc.sh
similarity index 100%
rename from tests/ln/misc
rename to tests/ln/misc.sh
diff --git a/tests/ln/relative b/tests/ln/relative.sh
similarity index 100%
rename from tests/ln/relative
rename to tests/ln/relative.sh
diff --git a/tests/ln/sf-1 b/tests/ln/sf-1.sh
similarity index 100%
rename from tests/ln/sf-1
rename to tests/ln/sf-1.sh
diff --git a/tests/ln/slash-decorated-nonexistent-dest 
b/tests/ln/slash-decorated-nonexistent-dest.sh
similarity index 100%
rename from tests/ln/slash-decorated-nonexistent-dest
rename to tests/ln/slash-decorated-nonexistent-dest.sh
diff --git a/tests/ln/target-1 b/tests/ln/target-1.sh
similarity index 100%
rename from tests/ln/target-1
rename to tests/ln/target-1.sh
diff --git a/tests/ls/abmon-align b/tests/ls/abmon-align.sh
similarity index 100%
rename from tests/ls/abmon-align
rename to tests/ls/abmon-align.sh
diff --git a/tests/ls/block-size b/tests/ls/block-size.sh
similarity index 100%
rename from tests/ls/block-size
rename to tests/ls/block-size.sh
diff --git a/tests/ls/capability b/tests/ls/capability.sh
similarity index 100%
rename from tests/ls/capability
rename to tests/ls/capability.sh
diff --git a/tests/ls/color-clear-to-eol b/tests/ls/color-clear-to-eol.sh
similarity index 100%
rename from tests/ls/color-clear-to-eol
rename to tests/ls/color-clear-to-eol.sh
diff --git a/tests/ls/color-dtype-dir b/tests/ls/color-dtype-dir.sh
similarity index 100%
rename from tests/ls/color-dtype-dir
rename to tests/ls/color-dtype-dir.sh
diff --git a/tests/ls/color-norm b/tests/ls/color-norm.sh
similarity index 100%
rename from tests/ls/color-norm
rename to tests/ls/color-norm.sh
diff --git a/tests/ls/dangle b/tests/ls/dangle.sh
similarity index 100%
rename from tests/ls/dangle
rename to tests/ls/dangle.sh
diff --git a/tests/ls/dired b/tests/ls/dired.sh
similarity index 100%
rename from tests/ls/dired
rename to tests/ls/dired.sh
diff --git a/tests/ls/file-type b/tests/ls/file-type.sh
similarity index 100%
rename from tests/ls/file-type
rename to tests/ls/file-type.sh
diff --git a/tests/ls/follow-slink b/tests/ls/follow-slink.sh
similarity index 100%
rename from tests/ls/follow-slink
rename to tests/ls/follow-slink.sh
diff --git a/tests/ls/getxattr-speedup b/tests/ls/getxattr-speedup.sh
similarity index 100%
rename from tests/ls/getxattr-speedup
rename to tests/ls/getxattr-speedup.sh
diff --git a/tests/ls/infloop b/tests/ls/infloop.sh
similarity index 100%
rename from tests/ls/infloop
rename to tests/ls/infloop.sh
diff --git a/tests/ls/inode b/tests/ls/inode.sh
similarity index 100%
rename from tests/ls/inode
rename to tests/ls/inode.sh
diff --git a/tests/ls/m-option b/tests/ls/m-option.sh
similarity index 100%
rename from tests/ls/m-option
rename to tests/ls/m-option.sh
diff --git a/tests/ls/multihardlink b/tests/ls/multihardlink.sh
similarity index 100%
rename from tests/ls/multihardlink
rename to tests/ls/multihardlink.sh
diff --git a/tests/ls/nameless-uid b/tests/ls/nameless-uid.sh
similarity index 100%
rename from tests/ls/nameless-uid
rename to tests/ls/nameless-uid.sh
diff --git a/tests/ls/no-arg b/tests/ls/no-arg.sh
similarity index 100%
rename from tests/ls/no-arg
rename to tests/ls/no-arg.sh
diff --git a/tests/ls/no-cap b/tests/ls/no-cap.sh
similarity index 100%
rename from tests/ls/no-cap
rename to tests/ls/no-cap.sh
diff --git a/tests/ls/proc-selinux-segfault b/tests/ls/proc-selinux-segfault.sh
similarity index 100%
rename from tests/ls/proc-selinux-segfault
rename to tests/ls/proc-selinux-segfault.sh
diff --git a/tests/ls/readdir-mountpoint-inode 
b/tests/ls/readdir-mountpoint-inode.sh
similarity index 100%
rename from tests/ls/readdir-mountpoint-inode
rename to tests/ls/readdir-mountpoint-inode.sh
diff --git a/tests/ls/recursive b/tests/ls/recursive.sh
similarity index 100%
rename from tests/ls/recursive
rename to tests/ls/recursive.sh
diff --git a/tests/ls/root-rel-symlink-color 
b/tests/ls/root-rel-symlink-color.sh
similarity index 100%
rename from tests/ls/root-rel-symlink-color
rename to tests/ls/root-rel-symlink-color.sh
diff --git a/tests/ls/rt-1 b/tests/ls/rt-1.sh
similarity index 100%
rename from tests/ls/rt-1
rename to tests/ls/rt-1.sh
diff --git a/tests/ls/slink-acl b/tests/ls/slink-acl.sh
similarity index 100%
rename from tests/ls/slink-acl
rename to tests/ls/slink-acl.sh
diff --git a/tests/ls/stat-dtype b/tests/ls/stat-dtype.sh
similarity index 100%
rename from tests/ls/stat-dtype
rename to tests/ls/stat-dtype.sh
diff --git a/tests/ls/stat-failed b/tests/ls/stat-failed.sh
similarity index 100%
rename from tests/ls/stat-failed
rename to tests/ls/stat-failed.sh
diff --git a/tests/ls/stat-free-color b/tests/ls/stat-free-color.sh
similarity index 100%
rename from tests/ls/stat-free-color
rename to tests/ls/stat-free-color.sh
diff --git a/tests/ls/stat-free-symlinks b/tests/ls/stat-free-symlinks.sh
similarity index 100%
rename from tests/ls/stat-free-symlinks
rename to tests/ls/stat-free-symlinks.sh
diff --git a/tests/ls/stat-vs-dirent b/tests/ls/stat-vs-dirent.sh
similarity index 100%
rename from tests/ls/stat-vs-dirent
rename to tests/ls/stat-vs-dirent.sh
diff --git a/tests/ls/symlink-slash b/tests/ls/symlink-slash.sh
similarity index 100%
rename from tests/ls/symlink-slash
rename to tests/ls/symlink-slash.sh
diff --git a/tests/ls/time-style-diag b/tests/ls/time-style-diag.sh
similarity index 100%
rename from tests/ls/time-style-diag
rename to tests/ls/time-style-diag.sh
diff --git a/tests/ls/x-option b/tests/ls/x-option.sh
similarity index 100%
rename from tests/ls/x-option
rename to tests/ls/x-option.sh
diff --git a/tests/misc/arch b/tests/misc/arch.sh
similarity index 100%
rename from tests/misc/arch
rename to tests/misc/arch.sh
diff --git a/tests/misc/base64 b/tests/misc/base64.pl
similarity index 100%
rename from tests/misc/base64
rename to tests/misc/base64.pl
diff --git a/tests/misc/basename b/tests/misc/basename.pl
similarity index 100%
rename from tests/misc/basename
rename to tests/misc/basename.pl
diff --git a/tests/misc/cat-buf b/tests/misc/cat-buf.sh
similarity index 100%
rename from tests/misc/cat-buf
rename to tests/misc/cat-buf.sh
diff --git a/tests/misc/cat-proc b/tests/misc/cat-proc.sh
similarity index 100%
rename from tests/misc/cat-proc
rename to tests/misc/cat-proc.sh
diff --git a/tests/misc/chcon-fail b/tests/misc/chcon-fail.sh
similarity index 100%
rename from tests/misc/chcon-fail
rename to tests/misc/chcon-fail.sh
diff --git a/tests/misc/chcon b/tests/misc/chcon.sh
similarity index 100%
rename from tests/misc/chcon
rename to tests/misc/chcon.sh
diff --git a/tests/misc/chroot-credentials b/tests/misc/chroot-credentials.sh
similarity index 100%
rename from tests/misc/chroot-credentials
rename to tests/misc/chroot-credentials.sh
diff --git a/tests/misc/chroot-fail b/tests/misc/chroot-fail.sh
similarity index 100%
rename from tests/misc/chroot-fail
rename to tests/misc/chroot-fail.sh
diff --git a/tests/misc/close-stdout b/tests/misc/close-stdout.sh
similarity index 100%
rename from tests/misc/close-stdout
rename to tests/misc/close-stdout.sh
diff --git a/tests/misc/comm b/tests/misc/comm.pl
similarity index 100%
rename from tests/misc/comm
rename to tests/misc/comm.pl
diff --git a/tests/misc/csplit-1000 b/tests/misc/csplit-1000.sh
similarity index 100%
rename from tests/misc/csplit-1000
rename to tests/misc/csplit-1000.sh
diff --git a/tests/misc/csplit-heap b/tests/misc/csplit-heap.sh
similarity index 100%
rename from tests/misc/csplit-heap
rename to tests/misc/csplit-heap.sh
diff --git a/tests/misc/csplit b/tests/misc/csplit.sh
similarity index 100%
rename from tests/misc/csplit
rename to tests/misc/csplit.sh
diff --git a/tests/misc/cut b/tests/misc/cut.pl
similarity index 100%
rename from tests/misc/cut
rename to tests/misc/cut.pl
diff --git a/tests/misc/date-next-dow b/tests/misc/date-next-dow.pl
similarity index 100%
rename from tests/misc/date-next-dow
rename to tests/misc/date-next-dow.pl
diff --git a/tests/misc/date-sec b/tests/misc/date-sec.sh
similarity index 100%
rename from tests/misc/date-sec
rename to tests/misc/date-sec.sh
diff --git a/tests/misc/date b/tests/misc/date.pl
similarity index 100%
rename from tests/misc/date
rename to tests/misc/date.pl
diff --git a/tests/misc/dircolors b/tests/misc/dircolors.pl
similarity index 100%
rename from tests/misc/dircolors
rename to tests/misc/dircolors.pl
diff --git a/tests/misc/dirname b/tests/misc/dirname.pl
similarity index 100%
rename from tests/misc/dirname
rename to tests/misc/dirname.pl
diff --git a/tests/misc/env-null b/tests/misc/env-null.sh
similarity index 100%
rename from tests/misc/env-null
rename to tests/misc/env-null.sh
diff --git a/tests/misc/env b/tests/misc/env.sh
similarity index 100%
rename from tests/misc/env
rename to tests/misc/env.sh
diff --git a/tests/misc/expand b/tests/misc/expand.pl
similarity index 100%
rename from tests/misc/expand
rename to tests/misc/expand.pl
diff --git a/tests/misc/expr b/tests/misc/expr.pl
similarity index 100%
rename from tests/misc/expr
rename to tests/misc/expr.pl
diff --git a/tests/misc/factor b/tests/misc/factor.pl
similarity index 100%
rename from tests/misc/factor
rename to tests/misc/factor.pl
diff --git a/tests/misc/false-status b/tests/misc/false-status.sh
similarity index 100%
rename from tests/misc/false-status
rename to tests/misc/false-status.sh
diff --git a/tests/misc/fold b/tests/misc/fold.pl
similarity index 100%
rename from tests/misc/fold
rename to tests/misc/fold.pl
diff --git a/tests/misc/groups-dash b/tests/misc/groups-dash.sh
similarity index 100%
rename from tests/misc/groups-dash
rename to tests/misc/groups-dash.sh
diff --git a/tests/misc/groups-version b/tests/misc/groups-version.sh
similarity index 100%
rename from tests/misc/groups-version
rename to tests/misc/groups-version.sh
diff --git a/tests/misc/head-c b/tests/misc/head-c.sh
similarity index 100%
rename from tests/misc/head-c
rename to tests/misc/head-c.sh
diff --git a/tests/misc/head-elide-tail b/tests/misc/head-elide-tail.pl
similarity index 100%
rename from tests/misc/head-elide-tail
rename to tests/misc/head-elide-tail.pl
diff --git a/tests/misc/head-pos b/tests/misc/head-pos.sh
similarity index 100%
rename from tests/misc/head-pos
rename to tests/misc/head-pos.sh
diff --git a/tests/misc/head b/tests/misc/head.pl
similarity index 100%
rename from tests/misc/head
rename to tests/misc/head.pl
diff --git a/tests/misc/help-version b/tests/misc/help-version.sh
similarity index 100%
rename from tests/misc/help-version
rename to tests/misc/help-version.sh
diff --git a/tests/misc/id-context b/tests/misc/id-context.sh
similarity index 100%
rename from tests/misc/id-context
rename to tests/misc/id-context.sh
diff --git a/tests/misc/id-groups b/tests/misc/id-groups.sh
similarity index 100%
rename from tests/misc/id-groups
rename to tests/misc/id-groups.sh
diff --git a/tests/misc/id-setgid b/tests/misc/id-setgid.sh
similarity index 100%
rename from tests/misc/id-setgid
rename to tests/misc/id-setgid.sh
diff --git a/tests/misc/invalid-opt b/tests/misc/invalid-opt.pl
similarity index 100%
rename from tests/misc/invalid-opt
rename to tests/misc/invalid-opt.pl
diff --git a/tests/misc/join b/tests/misc/join.pl
similarity index 100%
rename from tests/misc/join
rename to tests/misc/join.pl
diff --git a/tests/misc/ls-misc b/tests/misc/ls-misc.pl
similarity index 100%
rename from tests/misc/ls-misc
rename to tests/misc/ls-misc.pl
diff --git a/tests/misc/ls-time b/tests/misc/ls-time.sh
similarity index 100%
rename from tests/misc/ls-time
rename to tests/misc/ls-time.sh
diff --git a/tests/misc/md5sum-bsd b/tests/misc/md5sum-bsd.sh
similarity index 100%
rename from tests/misc/md5sum-bsd
rename to tests/misc/md5sum-bsd.sh
diff --git a/tests/misc/md5sum-newline b/tests/misc/md5sum-newline.pl
similarity index 100%
rename from tests/misc/md5sum-newline
rename to tests/misc/md5sum-newline.pl
diff --git a/tests/misc/md5sum-parallel b/tests/misc/md5sum-parallel.sh
similarity index 100%
rename from tests/misc/md5sum-parallel
rename to tests/misc/md5sum-parallel.sh
diff --git a/tests/misc/md5sum b/tests/misc/md5sum.pl
similarity index 100%
rename from tests/misc/md5sum
rename to tests/misc/md5sum.pl
diff --git a/tests/misc/mknod b/tests/misc/mknod.sh
similarity index 100%
rename from tests/misc/mknod
rename to tests/misc/mknod.sh
diff --git a/tests/misc/mktemp b/tests/misc/mktemp.pl
similarity index 100%
rename from tests/misc/mktemp
rename to tests/misc/mktemp.pl
diff --git a/tests/misc/nice-fail b/tests/misc/nice-fail.sh
similarity index 100%
rename from tests/misc/nice-fail
rename to tests/misc/nice-fail.sh
diff --git a/tests/misc/nice b/tests/misc/nice.sh
similarity index 100%
rename from tests/misc/nice
rename to tests/misc/nice.sh
diff --git a/tests/misc/nl b/tests/misc/nl.sh
similarity index 100%
rename from tests/misc/nl
rename to tests/misc/nl.sh
diff --git a/tests/misc/nohup b/tests/misc/nohup.sh
similarity index 100%
rename from tests/misc/nohup
rename to tests/misc/nohup.sh
diff --git a/tests/misc/nproc-avail b/tests/misc/nproc-avail.sh
similarity index 100%
rename from tests/misc/nproc-avail
rename to tests/misc/nproc-avail.sh
diff --git a/tests/misc/nproc-positive b/tests/misc/nproc-positive.sh
similarity index 100%
rename from tests/misc/nproc-positive
rename to tests/misc/nproc-positive.sh
diff --git a/tests/misc/od-N b/tests/misc/od-N.sh
similarity index 100%
rename from tests/misc/od-N
rename to tests/misc/od-N.sh
diff --git a/tests/misc/od-float b/tests/misc/od-float.sh
similarity index 100%
rename from tests/misc/od-float
rename to tests/misc/od-float.sh
diff --git a/tests/misc/od-multiple-t b/tests/misc/od-multiple-t.sh
similarity index 100%
rename from tests/misc/od-multiple-t
rename to tests/misc/od-multiple-t.sh
diff --git a/tests/misc/od-x8 b/tests/misc/od-x8.sh
similarity index 100%
rename from tests/misc/od-x8
rename to tests/misc/od-x8.sh
diff --git a/tests/misc/od b/tests/misc/od.pl
similarity index 100%
rename from tests/misc/od
rename to tests/misc/od.pl
diff --git a/tests/misc/paste b/tests/misc/paste.pl
similarity index 100%
rename from tests/misc/paste
rename to tests/misc/paste.pl
diff --git a/tests/misc/pathchk1 b/tests/misc/pathchk1.sh
similarity index 100%
rename from tests/misc/pathchk1
rename to tests/misc/pathchk1.sh
diff --git a/tests/misc/pr b/tests/misc/pr.pl
similarity index 100%
rename from tests/misc/pr
rename to tests/misc/pr.pl
diff --git a/tests/misc/printenv b/tests/misc/printenv.sh
similarity index 100%
rename from tests/misc/printenv
rename to tests/misc/printenv.sh
diff --git a/tests/misc/printf-cov b/tests/misc/printf-cov.pl
similarity index 100%
rename from tests/misc/printf-cov
rename to tests/misc/printf-cov.pl
diff --git a/tests/misc/printf-hex b/tests/misc/printf-hex.sh
similarity index 100%
rename from tests/misc/printf-hex
rename to tests/misc/printf-hex.sh
diff --git a/tests/misc/printf-surprise b/tests/misc/printf-surprise.sh
similarity index 100%
rename from tests/misc/printf-surprise
rename to tests/misc/printf-surprise.sh
diff --git a/tests/misc/printf b/tests/misc/printf.sh
similarity index 100%
rename from tests/misc/printf
rename to tests/misc/printf.sh
diff --git a/tests/misc/ptx-overrun b/tests/misc/ptx-overrun.sh
similarity index 100%
rename from tests/misc/ptx-overrun
rename to tests/misc/ptx-overrun.sh
diff --git a/tests/misc/ptx b/tests/misc/ptx.pl
similarity index 100%
rename from tests/misc/ptx
rename to tests/misc/ptx.pl
diff --git a/tests/misc/pwd-long b/tests/misc/pwd-long.sh
similarity index 100%
rename from tests/misc/pwd-long
rename to tests/misc/pwd-long.sh
diff --git a/tests/misc/pwd-option b/tests/misc/pwd-option.sh
similarity index 100%
rename from tests/misc/pwd-option
rename to tests/misc/pwd-option.sh
diff --git a/tests/misc/readlink-fp-loop b/tests/misc/readlink-fp-loop.sh
similarity index 100%
rename from tests/misc/readlink-fp-loop
rename to tests/misc/readlink-fp-loop.sh
diff --git a/tests/misc/readlink-root b/tests/misc/readlink-root.sh
similarity index 100%
rename from tests/misc/readlink-root
rename to tests/misc/readlink-root.sh
diff --git a/tests/misc/realpath b/tests/misc/realpath.sh
similarity index 100%
rename from tests/misc/realpath
rename to tests/misc/realpath.sh
diff --git a/tests/misc/runcon-no-reorder b/tests/misc/runcon-no-reorder.sh
similarity index 100%
rename from tests/misc/runcon-no-reorder
rename to tests/misc/runcon-no-reorder.sh
diff --git a/tests/misc/selinux b/tests/misc/selinux.sh
similarity index 100%
rename from tests/misc/selinux
rename to tests/misc/selinux.sh
diff --git a/tests/misc/seq-long-double b/tests/misc/seq-long-double.sh
similarity index 100%
rename from tests/misc/seq-long-double
rename to tests/misc/seq-long-double.sh
diff --git a/tests/misc/seq b/tests/misc/seq.pl
similarity index 100%
rename from tests/misc/seq
rename to tests/misc/seq.pl
diff --git a/tests/misc/sha1sum-vec b/tests/misc/sha1sum-vec.pl
similarity index 100%
rename from tests/misc/sha1sum-vec
rename to tests/misc/sha1sum-vec.pl
diff --git a/tests/misc/sha1sum b/tests/misc/sha1sum.pl
similarity index 100%
rename from tests/misc/sha1sum
rename to tests/misc/sha1sum.pl
diff --git a/tests/misc/sha224sum b/tests/misc/sha224sum.pl
similarity index 100%
rename from tests/misc/sha224sum
rename to tests/misc/sha224sum.pl
diff --git a/tests/misc/sha256sum b/tests/misc/sha256sum.pl
similarity index 100%
rename from tests/misc/sha256sum
rename to tests/misc/sha256sum.pl
diff --git a/tests/misc/sha384sum b/tests/misc/sha384sum.pl
similarity index 100%
rename from tests/misc/sha384sum
rename to tests/misc/sha384sum.pl
diff --git a/tests/misc/sha512sum b/tests/misc/sha512sum.pl
similarity index 100%
rename from tests/misc/sha512sum
rename to tests/misc/sha512sum.pl
diff --git a/tests/misc/shred-exact b/tests/misc/shred-exact.sh
similarity index 100%
rename from tests/misc/shred-exact
rename to tests/misc/shred-exact.sh
diff --git a/tests/misc/shred-passes b/tests/misc/shred-passes.sh
similarity index 100%
rename from tests/misc/shred-passes
rename to tests/misc/shred-passes.sh
diff --git a/tests/misc/shred-remove b/tests/misc/shred-remove.sh
similarity index 100%
rename from tests/misc/shred-remove
rename to tests/misc/shred-remove.sh
diff --git a/tests/misc/shuf b/tests/misc/shuf.sh
similarity index 100%
rename from tests/misc/shuf
rename to tests/misc/shuf.sh
diff --git a/tests/misc/sort-NaN-infloop b/tests/misc/sort-NaN-infloop.sh
similarity index 100%
rename from tests/misc/sort-NaN-infloop
rename to tests/misc/sort-NaN-infloop.sh
diff --git a/tests/misc/sort-benchmark-random 
b/tests/misc/sort-benchmark-random.sh
similarity index 100%
rename from tests/misc/sort-benchmark-random
rename to tests/misc/sort-benchmark-random.sh
diff --git a/tests/misc/sort-compress-hang b/tests/misc/sort-compress-hang.sh
similarity index 100%
rename from tests/misc/sort-compress-hang
rename to tests/misc/sort-compress-hang.sh
diff --git a/tests/misc/sort-compress-proc b/tests/misc/sort-compress-proc.sh
similarity index 100%
rename from tests/misc/sort-compress-proc
rename to tests/misc/sort-compress-proc.sh
diff --git a/tests/misc/sort-compress b/tests/misc/sort-compress.sh
similarity index 100%
rename from tests/misc/sort-compress
rename to tests/misc/sort-compress.sh
diff --git a/tests/misc/sort-continue b/tests/misc/sort-continue.sh
similarity index 100%
rename from tests/misc/sort-continue
rename to tests/misc/sort-continue.sh
diff --git a/tests/misc/sort-debug-keys b/tests/misc/sort-debug-keys.sh
similarity index 100%
rename from tests/misc/sort-debug-keys
rename to tests/misc/sort-debug-keys.sh
diff --git a/tests/misc/sort-debug-warn b/tests/misc/sort-debug-warn.sh
similarity index 100%
rename from tests/misc/sort-debug-warn
rename to tests/misc/sort-debug-warn.sh
diff --git a/tests/misc/sort-discrim b/tests/misc/sort-discrim.sh
similarity index 100%
rename from tests/misc/sort-discrim
rename to tests/misc/sort-discrim.sh
diff --git a/tests/misc/sort-exit-early b/tests/misc/sort-exit-early.sh
similarity index 100%
rename from tests/misc/sort-exit-early
rename to tests/misc/sort-exit-early.sh
diff --git a/tests/misc/sort-files0-from b/tests/misc/sort-files0-from.pl
similarity index 100%
rename from tests/misc/sort-files0-from
rename to tests/misc/sort-files0-from.pl
diff --git a/tests/misc/sort-float b/tests/misc/sort-float.sh
similarity index 100%
rename from tests/misc/sort-float
rename to tests/misc/sort-float.sh
diff --git a/tests/misc/sort-merge-fdlimit b/tests/misc/sort-merge-fdlimit.sh
similarity index 100%
rename from tests/misc/sort-merge-fdlimit
rename to tests/misc/sort-merge-fdlimit.sh
diff --git a/tests/misc/sort-merge b/tests/misc/sort-merge.pl
similarity index 100%
rename from tests/misc/sort-merge
rename to tests/misc/sort-merge.pl
diff --git a/tests/misc/sort-month b/tests/misc/sort-month.sh
similarity index 100%
rename from tests/misc/sort-month
rename to tests/misc/sort-month.sh
diff --git a/tests/misc/sort-rand b/tests/misc/sort-rand.sh
similarity index 100%
rename from tests/misc/sort-rand
rename to tests/misc/sort-rand.sh
diff --git a/tests/misc/sort-spinlock-abuse b/tests/misc/sort-spinlock-abuse.sh
similarity index 100%
rename from tests/misc/sort-spinlock-abuse
rename to tests/misc/sort-spinlock-abuse.sh
diff --git a/tests/misc/sort-stale-thread-mem 
b/tests/misc/sort-stale-thread-mem.sh
similarity index 100%
rename from tests/misc/sort-stale-thread-mem
rename to tests/misc/sort-stale-thread-mem.sh
diff --git a/tests/misc/sort-u-FMR b/tests/misc/sort-u-FMR.sh
similarity index 100%
rename from tests/misc/sort-u-FMR
rename to tests/misc/sort-u-FMR.sh
diff --git a/tests/misc/sort-unique-segv b/tests/misc/sort-unique-segv.sh
similarity index 100%
rename from tests/misc/sort-unique-segv
rename to tests/misc/sort-unique-segv.sh
diff --git a/tests/misc/sort-unique b/tests/misc/sort-unique.sh
similarity index 100%
rename from tests/misc/sort-unique
rename to tests/misc/sort-unique.sh
diff --git a/tests/misc/sort-version b/tests/misc/sort-version.sh
similarity index 100%
rename from tests/misc/sort-version
rename to tests/misc/sort-version.sh
diff --git a/tests/misc/sort b/tests/misc/sort.pl
similarity index 100%
rename from tests/misc/sort
rename to tests/misc/sort.pl
diff --git a/tests/misc/stat-birthtime b/tests/misc/stat-birthtime.sh
similarity index 100%
rename from tests/misc/stat-birthtime
rename to tests/misc/stat-birthtime.sh
diff --git a/tests/misc/stat-fmt b/tests/misc/stat-fmt.sh
similarity index 100%
rename from tests/misc/stat-fmt
rename to tests/misc/stat-fmt.sh
diff --git a/tests/misc/stat-hyphen b/tests/misc/stat-hyphen.sh
similarity index 100%
rename from tests/misc/stat-hyphen
rename to tests/misc/stat-hyphen.sh
diff --git a/tests/misc/stat-mount b/tests/misc/stat-mount.sh
similarity index 100%
rename from tests/misc/stat-mount
rename to tests/misc/stat-mount.sh
diff --git a/tests/misc/stat-nanoseconds b/tests/misc/stat-nanoseconds.sh
similarity index 100%
rename from tests/misc/stat-nanoseconds
rename to tests/misc/stat-nanoseconds.sh
diff --git a/tests/misc/stat-printf b/tests/misc/stat-printf.pl
similarity index 100%
rename from tests/misc/stat-printf
rename to tests/misc/stat-printf.pl
diff --git a/tests/misc/stat-slash b/tests/misc/stat-slash.sh
similarity index 100%
rename from tests/misc/stat-slash
rename to tests/misc/stat-slash.sh
diff --git a/tests/misc/stdbuf b/tests/misc/stdbuf.sh
similarity index 100%
rename from tests/misc/stdbuf
rename to tests/misc/stdbuf.sh
diff --git a/tests/misc/stty-invalid b/tests/misc/stty-invalid.sh
similarity index 100%
rename from tests/misc/stty-invalid
rename to tests/misc/stty-invalid.sh
diff --git a/tests/misc/stty-pairs b/tests/misc/stty-pairs.sh
similarity index 100%
rename from tests/misc/stty-pairs
rename to tests/misc/stty-pairs.sh
diff --git a/tests/misc/stty-row-col b/tests/misc/stty-row-col.sh
similarity index 100%
rename from tests/misc/stty-row-col
rename to tests/misc/stty-row-col.sh
diff --git a/tests/misc/stty b/tests/misc/stty.sh
similarity index 100%
rename from tests/misc/stty
rename to tests/misc/stty.sh
diff --git a/tests/misc/sum-sysv b/tests/misc/sum-sysv.sh
similarity index 100%
rename from tests/misc/sum-sysv
rename to tests/misc/sum-sysv.sh
diff --git a/tests/misc/sum b/tests/misc/sum.pl
similarity index 100%
rename from tests/misc/sum
rename to tests/misc/sum.pl
diff --git a/tests/misc/tac-2-nonseekable b/tests/misc/tac-2-nonseekable.sh
similarity index 100%
rename from tests/misc/tac-2-nonseekable
rename to tests/misc/tac-2-nonseekable.sh
diff --git a/tests/misc/tac-continue b/tests/misc/tac-continue.sh
similarity index 100%
rename from tests/misc/tac-continue
rename to tests/misc/tac-continue.sh
diff --git a/tests/misc/tac b/tests/misc/tac.pl
similarity index 100%
rename from tests/misc/tac
rename to tests/misc/tac.pl
diff --git a/tests/misc/tail b/tests/misc/tail.pl
similarity index 100%
rename from tests/misc/tail
rename to tests/misc/tail.pl
diff --git a/tests/misc/tee-dash b/tests/misc/tee-dash.sh
similarity index 100%
rename from tests/misc/tee-dash
rename to tests/misc/tee-dash.sh
diff --git a/tests/misc/tee b/tests/misc/tee.sh
similarity index 100%
rename from tests/misc/tee
rename to tests/misc/tee.sh
diff --git a/tests/misc/test-diag b/tests/misc/test-diag.pl
similarity index 100%
rename from tests/misc/test-diag
rename to tests/misc/test-diag.pl
diff --git a/tests/misc/test b/tests/misc/test.pl
similarity index 100%
rename from tests/misc/test
rename to tests/misc/test.pl
diff --git a/tests/misc/timeout-group b/tests/misc/timeout-group.sh
similarity index 100%
rename from tests/misc/timeout-group
rename to tests/misc/timeout-group.sh
diff --git a/tests/misc/timeout-parameters b/tests/misc/timeout-parameters.sh
similarity index 100%
rename from tests/misc/timeout-parameters
rename to tests/misc/timeout-parameters.sh
diff --git a/tests/misc/timeout b/tests/misc/timeout.sh
similarity index 100%
rename from tests/misc/timeout
rename to tests/misc/timeout.sh
diff --git a/tests/misc/tr-case-class b/tests/misc/tr-case-class.sh
similarity index 100%
rename from tests/misc/tr-case-class
rename to tests/misc/tr-case-class.sh
diff --git a/tests/misc/tr b/tests/misc/tr.pl
similarity index 100%
rename from tests/misc/tr
rename to tests/misc/tr.pl
diff --git a/tests/misc/truncate-dangling-symlink 
b/tests/misc/truncate-dangling-symlink.sh
similarity index 100%
rename from tests/misc/truncate-dangling-symlink
rename to tests/misc/truncate-dangling-symlink.sh
diff --git a/tests/misc/truncate-dir-fail b/tests/misc/truncate-dir-fail.sh
similarity index 100%
rename from tests/misc/truncate-dir-fail
rename to tests/misc/truncate-dir-fail.sh
diff --git a/tests/misc/truncate-fail-diag b/tests/misc/truncate-fail-diag.sh
similarity index 100%
rename from tests/misc/truncate-fail-diag
rename to tests/misc/truncate-fail-diag.sh
diff --git a/tests/misc/truncate-fifo b/tests/misc/truncate-fifo.sh
similarity index 100%
rename from tests/misc/truncate-fifo
rename to tests/misc/truncate-fifo.sh
diff --git a/tests/misc/truncate-no-create-missing 
b/tests/misc/truncate-no-create-missing.sh
similarity index 100%
rename from tests/misc/truncate-no-create-missing
rename to tests/misc/truncate-no-create-missing.sh
diff --git a/tests/misc/truncate-overflow b/tests/misc/truncate-overflow.sh
similarity index 100%
rename from tests/misc/truncate-overflow
rename to tests/misc/truncate-overflow.sh
diff --git a/tests/misc/truncate-owned-by-other 
b/tests/misc/truncate-owned-by-other.sh
similarity index 100%
rename from tests/misc/truncate-owned-by-other
rename to tests/misc/truncate-owned-by-other.sh
diff --git a/tests/misc/truncate-parameters b/tests/misc/truncate-parameters.sh
similarity index 100%
rename from tests/misc/truncate-parameters
rename to tests/misc/truncate-parameters.sh
diff --git a/tests/misc/truncate-relative b/tests/misc/truncate-relative.sh
similarity index 100%
rename from tests/misc/truncate-relative
rename to tests/misc/truncate-relative.sh
diff --git a/tests/misc/tsort b/tests/misc/tsort.pl
similarity index 100%
rename from tests/misc/tsort
rename to tests/misc/tsort.pl
diff --git a/tests/misc/tty-eof b/tests/misc/tty-eof.pl
similarity index 100%
rename from tests/misc/tty-eof
rename to tests/misc/tty-eof.pl
diff --git a/tests/misc/unexpand b/tests/misc/unexpand.pl
similarity index 100%
rename from tests/misc/unexpand
rename to tests/misc/unexpand.pl
diff --git a/tests/misc/uniq-perf b/tests/misc/uniq-perf.sh
similarity index 100%
rename from tests/misc/uniq-perf
rename to tests/misc/uniq-perf.sh
diff --git a/tests/misc/uniq b/tests/misc/uniq.pl
similarity index 100%
rename from tests/misc/uniq
rename to tests/misc/uniq.pl
diff --git a/tests/misc/wc-files0-from b/tests/misc/wc-files0-from.pl
similarity index 100%
rename from tests/misc/wc-files0-from
rename to tests/misc/wc-files0-from.pl
diff --git a/tests/misc/wc-files0 b/tests/misc/wc-files0.sh
similarity index 100%
rename from tests/misc/wc-files0
rename to tests/misc/wc-files0.sh
diff --git a/tests/misc/wc-parallel b/tests/misc/wc-parallel.sh
similarity index 100%
rename from tests/misc/wc-parallel
rename to tests/misc/wc-parallel.sh
diff --git a/tests/misc/wc b/tests/misc/wc.pl
similarity index 100%
rename from tests/misc/wc
rename to tests/misc/wc.pl
diff --git a/tests/misc/xattr b/tests/misc/xattr.sh
similarity index 100%
rename from tests/misc/xattr
rename to tests/misc/xattr.sh
diff --git a/tests/misc/xstrtol b/tests/misc/xstrtol.pl
similarity index 100%
rename from tests/misc/xstrtol
rename to tests/misc/xstrtol.pl
diff --git a/tests/mkdir/p-1 b/tests/mkdir/p-1.sh
similarity index 100%
rename from tests/mkdir/p-1
rename to tests/mkdir/p-1.sh
diff --git a/tests/mkdir/p-2 b/tests/mkdir/p-2.sh
similarity index 100%
rename from tests/mkdir/p-2
rename to tests/mkdir/p-2.sh
diff --git a/tests/mkdir/p-3 b/tests/mkdir/p-3.sh
similarity index 100%
rename from tests/mkdir/p-3
rename to tests/mkdir/p-3.sh
diff --git a/tests/mkdir/p-slashdot b/tests/mkdir/p-slashdot.sh
similarity index 100%
rename from tests/mkdir/p-slashdot
rename to tests/mkdir/p-slashdot.sh
diff --git a/tests/mkdir/p-thru-slink b/tests/mkdir/p-thru-slink.sh
similarity index 100%
rename from tests/mkdir/p-thru-slink
rename to tests/mkdir/p-thru-slink.sh
diff --git a/tests/mkdir/p-v b/tests/mkdir/p-v.sh
similarity index 100%
rename from tests/mkdir/p-v
rename to tests/mkdir/p-v.sh
diff --git a/tests/mkdir/parents b/tests/mkdir/parents.sh
similarity index 100%
rename from tests/mkdir/parents
rename to tests/mkdir/parents.sh
diff --git a/tests/mkdir/perm b/tests/mkdir/perm.sh
similarity index 100%
rename from tests/mkdir/perm
rename to tests/mkdir/perm.sh
diff --git a/tests/mkdir/selinux b/tests/mkdir/selinux.sh
similarity index 100%
rename from tests/mkdir/selinux
rename to tests/mkdir/selinux.sh
diff --git a/tests/mkdir/special-1 b/tests/mkdir/special-1.sh
similarity index 100%
rename from tests/mkdir/special-1
rename to tests/mkdir/special-1.sh
diff --git a/tests/mkdir/t-slash b/tests/mkdir/t-slash.sh
similarity index 100%
rename from tests/mkdir/t-slash
rename to tests/mkdir/t-slash.sh
diff --git a/tests/mkdir/writable-under-readonly 
b/tests/mkdir/writable-under-readonly.sh
similarity index 100%
rename from tests/mkdir/writable-under-readonly
rename to tests/mkdir/writable-under-readonly.sh
diff --git a/tests/mv/acl b/tests/mv/acl.sh
similarity index 100%
rename from tests/mv/acl
rename to tests/mv/acl.sh
diff --git a/tests/mv/atomic b/tests/mv/atomic.sh
similarity index 100%
rename from tests/mv/atomic
rename to tests/mv/atomic.sh
diff --git a/tests/mv/atomic2 b/tests/mv/atomic2.sh
similarity index 100%
rename from tests/mv/atomic2
rename to tests/mv/atomic2.sh
diff --git a/tests/mv/backup-dir b/tests/mv/backup-dir.sh
similarity index 100%
rename from tests/mv/backup-dir
rename to tests/mv/backup-dir.sh
diff --git a/tests/mv/backup-is-src b/tests/mv/backup-is-src.sh
similarity index 100%
rename from tests/mv/backup-is-src
rename to tests/mv/backup-is-src.sh
diff --git a/tests/mv/childproof b/tests/mv/childproof.sh
similarity index 100%
rename from tests/mv/childproof
rename to tests/mv/childproof.sh
diff --git a/tests/mv/diag b/tests/mv/diag.sh
similarity index 100%
rename from tests/mv/diag
rename to tests/mv/diag.sh
diff --git a/tests/mv/dir-file b/tests/mv/dir-file.sh
similarity index 100%
rename from tests/mv/dir-file
rename to tests/mv/dir-file.sh
diff --git a/tests/mv/dir2dir b/tests/mv/dir2dir.sh
similarity index 100%
rename from tests/mv/dir2dir
rename to tests/mv/dir2dir.sh
diff --git a/tests/mv/dup-source b/tests/mv/dup-source.sh
similarity index 100%
rename from tests/mv/dup-source
rename to tests/mv/dup-source.sh
diff --git a/tests/mv/force b/tests/mv/force.sh
similarity index 100%
rename from tests/mv/force
rename to tests/mv/force.sh
diff --git a/tests/mv/hard-2 b/tests/mv/hard-2.sh
similarity index 100%
rename from tests/mv/hard-2
rename to tests/mv/hard-2.sh
diff --git a/tests/mv/hard-3 b/tests/mv/hard-3.sh
similarity index 100%
rename from tests/mv/hard-3
rename to tests/mv/hard-3.sh
diff --git a/tests/mv/hard-4 b/tests/mv/hard-4.sh
similarity index 100%
rename from tests/mv/hard-4
rename to tests/mv/hard-4.sh
diff --git a/tests/mv/hard-link-1 b/tests/mv/hard-link-1.sh
similarity index 100%
rename from tests/mv/hard-link-1
rename to tests/mv/hard-link-1.sh
diff --git a/tests/mv/hard-verbose b/tests/mv/hard-verbose.sh
similarity index 100%
rename from tests/mv/hard-verbose
rename to tests/mv/hard-verbose.sh
diff --git a/tests/mv/i-1 b/tests/mv/i-1.pl
similarity index 100%
rename from tests/mv/i-1
rename to tests/mv/i-1.pl
diff --git a/tests/mv/i-2 b/tests/mv/i-2.sh
similarity index 100%
rename from tests/mv/i-2
rename to tests/mv/i-2.sh
diff --git a/tests/mv/i-3 b/tests/mv/i-3.sh
similarity index 100%
rename from tests/mv/i-3
rename to tests/mv/i-3.sh
diff --git a/tests/mv/i-4 b/tests/mv/i-4.sh
similarity index 100%
rename from tests/mv/i-4
rename to tests/mv/i-4.sh
diff --git a/tests/mv/i-5 b/tests/mv/i-5.sh
similarity index 100%
rename from tests/mv/i-5
rename to tests/mv/i-5.sh
diff --git a/tests/mv/i-link-no b/tests/mv/i-link-no.sh
similarity index 100%
rename from tests/mv/i-link-no
rename to tests/mv/i-link-no.sh
diff --git a/tests/mv/into-self-2 b/tests/mv/into-self-2.sh
similarity index 100%
rename from tests/mv/into-self-2
rename to tests/mv/into-self-2.sh
diff --git a/tests/mv/into-self-3 b/tests/mv/into-self-3.sh
similarity index 100%
rename from tests/mv/into-self-3
rename to tests/mv/into-self-3.sh
diff --git a/tests/mv/into-self-4 b/tests/mv/into-self-4.sh
similarity index 100%
rename from tests/mv/into-self-4
rename to tests/mv/into-self-4.sh
diff --git a/tests/mv/into-self b/tests/mv/into-self.sh
similarity index 100%
rename from tests/mv/into-self
rename to tests/mv/into-self.sh
diff --git a/tests/mv/leak-fd b/tests/mv/leak-fd.sh
similarity index 100%
rename from tests/mv/leak-fd
rename to tests/mv/leak-fd.sh
diff --git a/tests/mv/mv-n b/tests/mv/mv-n.sh
similarity index 100%
rename from tests/mv/mv-n
rename to tests/mv/mv-n.sh
diff --git a/tests/mv/mv-special-1 b/tests/mv/mv-special-1.sh
similarity index 100%
rename from tests/mv/mv-special-1
rename to tests/mv/mv-special-1.sh
diff --git a/tests/mv/no-target-dir b/tests/mv/no-target-dir.sh
similarity index 100%
rename from tests/mv/no-target-dir
rename to tests/mv/no-target-dir.sh
diff --git a/tests/mv/part-fail b/tests/mv/part-fail.sh
similarity index 100%
rename from tests/mv/part-fail
rename to tests/mv/part-fail.sh
diff --git a/tests/mv/part-hardlink b/tests/mv/part-hardlink.sh
similarity index 100%
rename from tests/mv/part-hardlink
rename to tests/mv/part-hardlink.sh
diff --git a/tests/mv/part-rename b/tests/mv/part-rename.sh
similarity index 100%
rename from tests/mv/part-rename
rename to tests/mv/part-rename.sh
diff --git a/tests/mv/part-symlink b/tests/mv/part-symlink.sh
similarity index 100%
rename from tests/mv/part-symlink
rename to tests/mv/part-symlink.sh
diff --git a/tests/mv/partition-perm b/tests/mv/partition-perm.sh
similarity index 100%
rename from tests/mv/partition-perm
rename to tests/mv/partition-perm.sh
diff --git a/tests/mv/perm-1 b/tests/mv/perm-1.sh
similarity index 100%
rename from tests/mv/perm-1
rename to tests/mv/perm-1.sh
diff --git a/tests/mv/sticky-to-xpart b/tests/mv/sticky-to-xpart.sh
similarity index 100%
rename from tests/mv/sticky-to-xpart
rename to tests/mv/sticky-to-xpart.sh
diff --git a/tests/mv/symlink-onto-hardlink-to-self 
b/tests/mv/symlink-onto-hardlink-to-self.sh
similarity index 100%
rename from tests/mv/symlink-onto-hardlink-to-self
rename to tests/mv/symlink-onto-hardlink-to-self.sh
diff --git a/tests/mv/symlink-onto-hardlink b/tests/mv/symlink-onto-hardlink.sh
similarity index 100%
rename from tests/mv/symlink-onto-hardlink
rename to tests/mv/symlink-onto-hardlink.sh
diff --git a/tests/mv/to-symlink b/tests/mv/to-symlink.sh
similarity index 100%
rename from tests/mv/to-symlink
rename to tests/mv/to-symlink.sh
diff --git a/tests/mv/trailing-slash b/tests/mv/trailing-slash.sh
similarity index 100%
rename from tests/mv/trailing-slash
rename to tests/mv/trailing-slash.sh
diff --git a/tests/mv/update b/tests/mv/update.sh
similarity index 100%
rename from tests/mv/update
rename to tests/mv/update.sh
diff --git a/tests/pr/pr-tests b/tests/pr/pr-tests.pl
similarity index 100%
rename from tests/pr/pr-tests
rename to tests/pr/pr-tests.pl
diff --git a/tests/readlink/can-e b/tests/readlink/can-e.sh
similarity index 100%
rename from tests/readlink/can-e
rename to tests/readlink/can-e.sh
diff --git a/tests/readlink/can-f b/tests/readlink/can-f.sh
similarity index 100%
rename from tests/readlink/can-f
rename to tests/readlink/can-f.sh
diff --git a/tests/readlink/can-m b/tests/readlink/can-m.sh
similarity index 100%
rename from tests/readlink/can-m
rename to tests/readlink/can-m.sh
diff --git a/tests/readlink/rl-1 b/tests/readlink/rl-1.sh
similarity index 100%
rename from tests/readlink/rl-1
rename to tests/readlink/rl-1.sh
diff --git a/tests/rm/cycle b/tests/rm/cycle.sh
similarity index 100%
rename from tests/rm/cycle
rename to tests/rm/cycle.sh
diff --git a/tests/rm/d-1 b/tests/rm/d-1.sh
similarity index 100%
rename from tests/rm/d-1
rename to tests/rm/d-1.sh
diff --git a/tests/rm/d-2 b/tests/rm/d-2.sh
similarity index 100%
rename from tests/rm/d-2
rename to tests/rm/d-2.sh
diff --git a/tests/rm/d-3 b/tests/rm/d-3.sh
similarity index 100%
rename from tests/rm/d-3
rename to tests/rm/d-3.sh
diff --git a/tests/rm/dangling-symlink b/tests/rm/dangling-symlink.sh
similarity index 100%
rename from tests/rm/dangling-symlink
rename to tests/rm/dangling-symlink.sh
diff --git a/tests/rm/deep-1 b/tests/rm/deep-1.sh
similarity index 100%
rename from tests/rm/deep-1
rename to tests/rm/deep-1.sh
diff --git a/tests/rm/deep-2 b/tests/rm/deep-2.sh
similarity index 100%
rename from tests/rm/deep-2
rename to tests/rm/deep-2.sh
diff --git a/tests/rm/dir-no-w b/tests/rm/dir-no-w.sh
similarity index 100%
rename from tests/rm/dir-no-w
rename to tests/rm/dir-no-w.sh
diff --git a/tests/rm/dir-nonrecur b/tests/rm/dir-nonrecur.sh
similarity index 100%
rename from tests/rm/dir-nonrecur
rename to tests/rm/dir-nonrecur.sh
diff --git a/tests/rm/dot-rel b/tests/rm/dot-rel.sh
similarity index 100%
rename from tests/rm/dot-rel
rename to tests/rm/dot-rel.sh
diff --git a/tests/rm/empty-inacc b/tests/rm/empty-inacc.sh
similarity index 100%
rename from tests/rm/empty-inacc
rename to tests/rm/empty-inacc.sh
diff --git a/tests/rm/empty-name b/tests/rm/empty-name.pl
similarity index 100%
rename from tests/rm/empty-name
rename to tests/rm/empty-name.pl
diff --git a/tests/rm/ext3-perf b/tests/rm/ext3-perf.sh
similarity index 100%
rename from tests/rm/ext3-perf
rename to tests/rm/ext3-perf.sh
diff --git a/tests/rm/f-1 b/tests/rm/f-1.sh
similarity index 100%
rename from tests/rm/f-1
rename to tests/rm/f-1.sh
diff --git a/tests/rm/fail-2eperm b/tests/rm/fail-2eperm.sh
similarity index 100%
rename from tests/rm/fail-2eperm
rename to tests/rm/fail-2eperm.sh
diff --git a/tests/rm/fail-eacces b/tests/rm/fail-eacces.sh
similarity index 100%
rename from tests/rm/fail-eacces
rename to tests/rm/fail-eacces.sh
diff --git a/tests/rm/hash b/tests/rm/hash.sh
similarity index 100%
rename from tests/rm/hash
rename to tests/rm/hash.sh
diff --git a/tests/rm/i-1 b/tests/rm/i-1.sh
similarity index 100%
rename from tests/rm/i-1
rename to tests/rm/i-1.sh
diff --git a/tests/rm/i-never b/tests/rm/i-never.sh
similarity index 100%
rename from tests/rm/i-never
rename to tests/rm/i-never.sh
diff --git a/tests/rm/i-no-r b/tests/rm/i-no-r.sh
similarity index 100%
rename from tests/rm/i-no-r
rename to tests/rm/i-no-r.sh
diff --git a/tests/rm/ignorable b/tests/rm/ignorable.sh
similarity index 100%
rename from tests/rm/ignorable
rename to tests/rm/ignorable.sh
diff --git a/tests/rm/inaccessible b/tests/rm/inaccessible.sh
similarity index 100%
rename from tests/rm/inaccessible
rename to tests/rm/inaccessible.sh
diff --git a/tests/rm/interactive-always b/tests/rm/interactive-always.sh
similarity index 100%
rename from tests/rm/interactive-always
rename to tests/rm/interactive-always.sh
diff --git a/tests/rm/interactive-once b/tests/rm/interactive-once.sh
similarity index 100%
rename from tests/rm/interactive-once
rename to tests/rm/interactive-once.sh
diff --git a/tests/rm/ir-1 b/tests/rm/ir-1.sh
similarity index 100%
rename from tests/rm/ir-1
rename to tests/rm/ir-1.sh
diff --git a/tests/rm/isatty b/tests/rm/isatty.sh
similarity index 100%
rename from tests/rm/isatty
rename to tests/rm/isatty.sh
diff --git a/tests/rm/many-dir-entries-vs-OOM 
b/tests/rm/many-dir-entries-vs-OOM.sh
similarity index 100%
rename from tests/rm/many-dir-entries-vs-OOM
rename to tests/rm/many-dir-entries-vs-OOM.sh
diff --git a/tests/rm/no-give-up b/tests/rm/no-give-up.sh
similarity index 100%
rename from tests/rm/no-give-up
rename to tests/rm/no-give-up.sh
diff --git a/tests/rm/one-file-system b/tests/rm/one-file-system.sh
similarity index 100%
rename from tests/rm/one-file-system
rename to tests/rm/one-file-system.sh
diff --git a/tests/rm/one-file-system2 b/tests/rm/one-file-system2.sh
similarity index 100%
rename from tests/rm/one-file-system2
rename to tests/rm/one-file-system2.sh
diff --git a/tests/rm/r-1 b/tests/rm/r-1.sh
similarity index 100%
rename from tests/rm/r-1
rename to tests/rm/r-1.sh
diff --git a/tests/rm/r-2 b/tests/rm/r-2.sh
similarity index 100%
rename from tests/rm/r-2
rename to tests/rm/r-2.sh
diff --git a/tests/rm/r-3 b/tests/rm/r-3.sh
similarity index 100%
rename from tests/rm/r-3
rename to tests/rm/r-3.sh
diff --git a/tests/rm/r-4 b/tests/rm/r-4.sh
similarity index 100%
rename from tests/rm/r-4
rename to tests/rm/r-4.sh
diff --git a/tests/rm/read-only b/tests/rm/read-only.sh
similarity index 100%
rename from tests/rm/read-only
rename to tests/rm/read-only.sh
diff --git a/tests/rm/readdir-bug b/tests/rm/readdir-bug.sh
similarity index 100%
rename from tests/rm/readdir-bug
rename to tests/rm/readdir-bug.sh
diff --git a/tests/rm/rm1 b/tests/rm/rm1.sh
similarity index 100%
rename from tests/rm/rm1
rename to tests/rm/rm1.sh
diff --git a/tests/rm/rm2 b/tests/rm/rm2.sh
similarity index 100%
rename from tests/rm/rm2
rename to tests/rm/rm2.sh
diff --git a/tests/rm/rm3 b/tests/rm/rm3.sh
similarity index 100%
rename from tests/rm/rm3
rename to tests/rm/rm3.sh
diff --git a/tests/rm/rm4 b/tests/rm/rm4.sh
similarity index 100%
rename from tests/rm/rm4
rename to tests/rm/rm4.sh
diff --git a/tests/rm/rm5 b/tests/rm/rm5.sh
similarity index 100%
rename from tests/rm/rm5
rename to tests/rm/rm5.sh
diff --git a/tests/rm/sunos-1 b/tests/rm/sunos-1.sh
similarity index 100%
rename from tests/rm/sunos-1
rename to tests/rm/sunos-1.sh
diff --git a/tests/rm/unread2 b/tests/rm/unread2.sh
similarity index 100%
rename from tests/rm/unread2
rename to tests/rm/unread2.sh
diff --git a/tests/rm/unread3 b/tests/rm/unread3.sh
similarity index 100%
rename from tests/rm/unread3
rename to tests/rm/unread3.sh
diff --git a/tests/rm/unreadable b/tests/rm/unreadable.pl
similarity index 100%
rename from tests/rm/unreadable
rename to tests/rm/unreadable.pl
diff --git a/tests/rm/v-slash b/tests/rm/v-slash.sh
similarity index 100%
rename from tests/rm/v-slash
rename to tests/rm/v-slash.sh
diff --git a/tests/rmdir/fail-perm b/tests/rmdir/fail-perm.sh
similarity index 100%
rename from tests/rmdir/fail-perm
rename to tests/rmdir/fail-perm.sh
diff --git a/tests/rmdir/ignore b/tests/rmdir/ignore.sh
similarity index 100%
rename from tests/rmdir/ignore
rename to tests/rmdir/ignore.sh
diff --git a/tests/rmdir/t-slash b/tests/rmdir/t-slash.sh
similarity index 100%
rename from tests/rmdir/t-slash
rename to tests/rmdir/t-slash.sh
diff --git a/tests/split/additional-suffix b/tests/split/additional-suffix.sh
similarity index 100%
rename from tests/split/additional-suffix
rename to tests/split/additional-suffix.sh
diff --git a/tests/split/b-chunk b/tests/split/b-chunk.sh
similarity index 100%
rename from tests/split/b-chunk
rename to tests/split/b-chunk.sh
diff --git a/tests/split/fail b/tests/split/fail.sh
similarity index 100%
rename from tests/split/fail
rename to tests/split/fail.sh
diff --git a/tests/split/filter b/tests/split/filter.sh
similarity index 100%
rename from tests/split/filter
rename to tests/split/filter.sh
diff --git a/tests/split/guard-input b/tests/split/guard-input.sh
similarity index 100%
rename from tests/split/guard-input
rename to tests/split/guard-input.sh
diff --git a/tests/split/l-chunk b/tests/split/l-chunk.sh
similarity index 100%
rename from tests/split/l-chunk
rename to tests/split/l-chunk.sh
diff --git a/tests/split/lines b/tests/split/lines.sh
similarity index 100%
rename from tests/split/lines
rename to tests/split/lines.sh
diff --git a/tests/split/numeric b/tests/split/numeric.sh
similarity index 100%
rename from tests/split/numeric
rename to tests/split/numeric.sh
diff --git a/tests/split/r-chunk b/tests/split/r-chunk.sh
similarity index 100%
rename from tests/split/r-chunk
rename to tests/split/r-chunk.sh
diff --git a/tests/split/suffix-auto-length b/tests/split/suffix-auto-length.sh
similarity index 100%
rename from tests/split/suffix-auto-length
rename to tests/split/suffix-auto-length.sh
diff --git a/tests/split/suffix-length b/tests/split/suffix-length.sh
similarity index 100%
rename from tests/split/suffix-length
rename to tests/split/suffix-length.sh
diff --git a/tests/tail-2/F-vs-missing b/tests/tail-2/F-vs-missing.sh
similarity index 100%
rename from tests/tail-2/F-vs-missing
rename to tests/tail-2/F-vs-missing.sh
diff --git a/tests/tail-2/F-vs-rename b/tests/tail-2/F-vs-rename.sh
similarity index 100%
rename from tests/tail-2/F-vs-rename
rename to tests/tail-2/F-vs-rename.sh
diff --git a/tests/tail-2/append-only b/tests/tail-2/append-only.sh
similarity index 100%
rename from tests/tail-2/append-only
rename to tests/tail-2/append-only.sh
diff --git a/tests/tail-2/assert-2 b/tests/tail-2/assert-2.sh
similarity index 100%
rename from tests/tail-2/assert-2
rename to tests/tail-2/assert-2.sh
diff --git a/tests/tail-2/assert b/tests/tail-2/assert.sh
similarity index 100%
rename from tests/tail-2/assert
rename to tests/tail-2/assert.sh
diff --git a/tests/tail-2/big-4gb b/tests/tail-2/big-4gb.sh
similarity index 100%
rename from tests/tail-2/big-4gb
rename to tests/tail-2/big-4gb.sh
diff --git a/tests/tail-2/flush-initial b/tests/tail-2/flush-initial.sh
similarity index 100%
rename from tests/tail-2/flush-initial
rename to tests/tail-2/flush-initial.sh
diff --git a/tests/tail-2/follow-name b/tests/tail-2/follow-name.sh
similarity index 100%
rename from tests/tail-2/follow-name
rename to tests/tail-2/follow-name.sh
diff --git a/tests/tail-2/follow-stdin b/tests/tail-2/follow-stdin.sh
similarity index 100%
rename from tests/tail-2/follow-stdin
rename to tests/tail-2/follow-stdin.sh
diff --git a/tests/tail-2/infloop-1 b/tests/tail-2/infloop-1.sh
similarity index 100%
rename from tests/tail-2/infloop-1
rename to tests/tail-2/infloop-1.sh
diff --git a/tests/tail-2/inotify-hash-abuse 
b/tests/tail-2/inotify-hash-abuse.sh
similarity index 100%
rename from tests/tail-2/inotify-hash-abuse
rename to tests/tail-2/inotify-hash-abuse.sh
diff --git a/tests/tail-2/inotify-hash-abuse2 
b/tests/tail-2/inotify-hash-abuse2.sh
similarity index 100%
rename from tests/tail-2/inotify-hash-abuse2
rename to tests/tail-2/inotify-hash-abuse2.sh
diff --git a/tests/tail-2/inotify-race b/tests/tail-2/inotify-race.sh
similarity index 100%
rename from tests/tail-2/inotify-race
rename to tests/tail-2/inotify-race.sh
diff --git a/tests/tail-2/inotify-rotate b/tests/tail-2/inotify-rotate.sh
similarity index 100%
rename from tests/tail-2/inotify-rotate
rename to tests/tail-2/inotify-rotate.sh
diff --git a/tests/tail-2/pid b/tests/tail-2/pid.sh
similarity index 100%
rename from tests/tail-2/pid
rename to tests/tail-2/pid.sh
diff --git a/tests/tail-2/pipe-f b/tests/tail-2/pipe-f.sh
similarity index 100%
rename from tests/tail-2/pipe-f
rename to tests/tail-2/pipe-f.sh
diff --git a/tests/tail-2/pipe-f2 b/tests/tail-2/pipe-f2.sh
similarity index 100%
rename from tests/tail-2/pipe-f2
rename to tests/tail-2/pipe-f2.sh
diff --git a/tests/tail-2/proc-ksyms b/tests/tail-2/proc-ksyms.sh
similarity index 100%
rename from tests/tail-2/proc-ksyms
rename to tests/tail-2/proc-ksyms.sh
diff --git a/tests/tail-2/start-middle b/tests/tail-2/start-middle.sh
similarity index 100%
rename from tests/tail-2/start-middle
rename to tests/tail-2/start-middle.sh
diff --git a/tests/tail-2/tail-n0f b/tests/tail-2/tail-n0f.sh
similarity index 100%
rename from tests/tail-2/tail-n0f
rename to tests/tail-2/tail-n0f.sh
diff --git a/tests/tail-2/wait b/tests/tail-2/wait.sh
similarity index 100%
rename from tests/tail-2/wait
rename to tests/tail-2/wait.sh
diff --git a/tests/touch/60-seconds b/tests/touch/60-seconds.sh
similarity index 100%
rename from tests/touch/60-seconds
rename to tests/touch/60-seconds.sh
diff --git a/tests/touch/dangling-symlink b/tests/touch/dangling-symlink.sh
similarity index 100%
rename from tests/touch/dangling-symlink
rename to tests/touch/dangling-symlink.sh
diff --git a/tests/touch/dir-1 b/tests/touch/dir-1.sh
similarity index 100%
rename from tests/touch/dir-1
rename to tests/touch/dir-1.sh
diff --git a/tests/touch/empty-file b/tests/touch/empty-file.sh
similarity index 100%
rename from tests/touch/empty-file
rename to tests/touch/empty-file.sh
diff --git a/tests/touch/fail-diag b/tests/touch/fail-diag.sh
similarity index 100%
rename from tests/touch/fail-diag
rename to tests/touch/fail-diag.sh
diff --git a/tests/touch/fifo b/tests/touch/fifo.sh
similarity index 100%
rename from tests/touch/fifo
rename to tests/touch/fifo.sh
diff --git a/tests/touch/no-create-missing b/tests/touch/no-create-missing.sh
similarity index 100%
rename from tests/touch/no-create-missing
rename to tests/touch/no-create-missing.sh
diff --git a/tests/touch/no-dereference b/tests/touch/no-dereference.sh
similarity index 100%
rename from tests/touch/no-dereference
rename to tests/touch/no-dereference.sh
diff --git a/tests/touch/no-rights b/tests/touch/no-rights.sh
similarity index 100%
rename from tests/touch/no-rights
rename to tests/touch/no-rights.sh
diff --git a/tests/touch/not-owner b/tests/touch/not-owner.sh
similarity index 100%
rename from tests/touch/not-owner
rename to tests/touch/not-owner.sh
diff --git a/tests/touch/now-owned-by-other b/tests/touch/now-owned-by-other.sh
similarity index 100%
rename from tests/touch/now-owned-by-other
rename to tests/touch/now-owned-by-other.sh
diff --git a/tests/touch/obsolescent b/tests/touch/obsolescent.sh
similarity index 100%
rename from tests/touch/obsolescent
rename to tests/touch/obsolescent.sh
diff --git a/tests/touch/read-only b/tests/touch/read-only.sh
similarity index 100%
rename from tests/touch/read-only
rename to tests/touch/read-only.sh
diff --git a/tests/touch/relative b/tests/touch/relative.sh
similarity index 100%
rename from tests/touch/relative
rename to tests/touch/relative.sh
diff --git a/tests/touch/trailing-slash b/tests/touch/trailing-slash.sh
similarity index 100%
rename from tests/touch/trailing-slash
rename to tests/touch/trailing-slash.sh
--
1.7.12.146.g16d26b1


>From 4af32c62fa58570a97d705fc0340704e9faa1a1f Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Thu, 30 Aug 2012 14:13:13 +0200
Subject: [PATCH 7/7] tests: get rid of the 'shell-or-perl' auxiliary script

It's now easier and faster to simply run the perl ans shell test
scripts directly with the appropriate interpreter and options.

* tests/shell-or-perl: Delete.
* tests/Makefile.am (EXTRA_DIST): Remove it.
(SH_LOG_COMPILER): Re-define to invoke the correct shell.
(PL_LOG_COMPILER): Re-define to invoke the correct perl
interpreter ...
(TESTSUITE_PERL_OPTIONS): ... with the correct options.
(XPL_LOG_COMPILER): Use those options instead of inlining
their expansion.
(LOG_COMPILER): Delete, no longer needed.
---
 tests/Makefile.am   |  22 +++++------
 tests/shell-or-perl | 109 ----------------------------------------------------
 2 files changed, 9 insertions(+), 122 deletions(-)
 delete mode 100644 tests/shell-or-perl

diff --git a/tests/Makefile.am b/tests/Makefile.am
index a547b11..bc3d308 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -53,22 +53,19 @@ else
 TESTSUITE_PERL = $(SHELL) $(srcdir)/no-perl
 endif

+# Options passed to the perl invocations running the perl test scripts.
+TESTSUITE_PERL_OPTIONS = -w -I$(srcdir) -MCoreutils -MCuSkip
 # '$f' is set by the Automake-generated test harness to the path of the
 # current test script stripped of VPATH components, and is used by the
-# shell-or-perl script to determine the name of the temporary files to be
-# used.  Note that $f is a shell variable, not a make macro, so the use of
-# '$$f' below is correct, and not a typo.
-LOG_COMPILER = \
-  $(SHELL) $(srcdir)/shell-or-perl \
-  --test-name "$$f" --srcdir '$(srcdir)' \
-  --shell '$(SHELL)' --perl '$(TESTSUITE_PERL)' --
-
-PL_LOG_COMPILER = $(LOG_COMPILER)
-SH_LOG_COMPILER = $(LOG_COMPILER)
+# CuTmpdir module to determine the name of the temporary files to be
+# used.  Note that $f is a shell variable, not a make macro, so the use
+# of '$$f' below is correct, and not a typo.
+TESTSUITE_PERL_OPTIONS += -M"CuTmpdir qw($$f)"

+SH_LOG_COMPILER = $(SHELL)
+PL_LOG_COMPILER = $(TESTSUITE_PERL) $(TESTSUITE_PERL_OPTIONS)
 # Perl scripts that must be run in tainted mode.
-XPL_LOG_COMPILER = \
-  $(TESTSUITE_PERL) -wT -I$(srcdir) -MCoreutils -MCuSkip -M"CuTmpdir qw($$f)"
+XPL_LOG_COMPILER = $(TESTSUITE_PERL) -T $(TESTSUITE_PERL_OPTIONS)

 # Note that the first lines are statements.  They ensure that environment
 # variables that can perturb tests are unset or set to expected values.
@@ -130,7 +127,6 @@ EXTRA_DIST =                \
   no-perl              \
   other-fs-tmpdir      \
   sample-test          \
-  shell-or-perl                \
   $(pr_data)

 root_tests =                                   \
diff --git a/tests/shell-or-perl b/tests/shell-or-perl
deleted file mode 100644
index 409db0e..0000000
--- a/tests/shell-or-perl
+++ /dev/null
@@ -1,109 +0,0 @@
-#! /bin/sh
-# Run a test script of the coreutils test scripts, picking up the right
-# interpreter (i.e., perl or the shell) and the right flags for it.
-#
-# Copyright (C) 2011-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 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/>.
-#
-
-# ---------------------------------- #
-#  Readonly variables and functions  #
-# ---------------------------------- #
-
-# Help to avoid typo-related bugs.
-set -u
-
-me=shell-or-perl
-
-fatal_ ()
-{
-  echo "$me: $*" >&2
-  # Exit with status '99' to inform the testsuite harness that an
-  # hard error occurred.
-  exit 99
-}
-
-print_help_ ()
-{
-  cat <<EOH
-Usage: $me [--help] [--srcdir DIR] [--shell SHELL-CMD] [--perl PERL-CMD]
-       [--test-name NAME-WITHOUT-VPATH] TEST-SCRIPT [ARGS..]
-EOH
-}
-
-# ---------------- #
-#  Option parsing  #
-# ---------------- #
-
-assign_optarg_to_var='
-  test $# -gt 1 || fatal_ "option '\''$1'\'' requires an argument"
-  eval "$var=\$2"
-  shift'
-
-srcdir=${srcdir-.}
-cu_PERL=${PERL-perl}
-cu_SHELL=/bin/sh # Getting $SHELL from the environment is dangerous.
-test_name=
-while test $# -gt 0; do
-  var=
-  case $1 in
-    --help) print_help_; exit $?;;
-    --shell) var=cu_SHELL;;
-    --perl) var=cu_PERL;;
-    --srcdir) var=srcdir;;
-    --test-name) var=test_name;;
-    --) shift; break;;
-    -*) fatal_ "unknown option '$1'";;
-    *) break;;
-  esac
-  test -z "$var" || eval "$assign_optarg_to_var"
-  shift
-done
-
-unset assign_optarg_to_var var
-
-case $# in
-  0) fatal_ "missing argument";;
-  *) test_script=$1; shift;;
-esac
-
-test -z "$test_name" && test_name=$test_script
-
-# --------------------- #
-#  Run the test script  #
-# --------------------- #
-
-test -f "$test_script" && test -r "$test_script" \
-  || fatal_ "test script '$test_script' does not exist, or isn't readable"
-
-read shebang_line < "$test_script" \
-  || fatal_ "cannot read from the test script '$test_script'"
-
-case $shebang_line in
-'#!/usr/bin/perl'*)
-  # The test is a perl script.
-  exec $cu_PERL -w -I"$srcdir" -MCoreutils -MCuSkip \
-                -M"CuTmpdir qw($test_name)" -- "$test_script" ${1+"$@"}
-  ;;
-*)
-  # Assume the test is a shell script.
-  exec $cu_SHELL "$test_script" ${1+"$@"}
-esac
-
-# ------------- #
-#  Not reached  #
-# ------------- #
-
-fatal_ "dead code reached"
--
1.7.12.146.g16d26b1



reply via email to

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