Subject: bug#9237: [PATCH] tests: get rid of obsolete 'error_' shell function

From: Jim Meyering <[email-masked]>
Date: Mon, 08 Aug 2011 09:27:29 +0200

Stefano Lattarini wrote:
> On Thursday 04 August 2011, Jim Meyering wrote:
>> ...
>> > So, time to remove dead code, right? :-)
>> >
>> > What about the attached patch?
>>
>> Applied.  Thanks.
>> ...
> Thanks for the quick feedback.  Since we are at it, what about the
> attached patch, that converts all `framwork_failure' calls to
> `framowork_failure_' ones?  Note that I've assumed it's OK to
> use `framowork_failure_' without argument, as that was being done
> by many pre-existing tests already.
>
> JFTR, the patch has been mostly automatically generated with the
> following command:
>
>   grep -lrIE --exclude-dir .git '\bframework_failure\b' . | \
>     xargs sed -i 's/ framework_failure *$/ framework_failure_/'
>
> and then editing the reaming insrances in `tests/cp/acl',
> `tests/ln/hard-to-sym' and `tests/cp/cp-a-selinux' by hand.
>
> Thanks,
>   Stefano
>
> P.S. I see that the `tests/init.cfg', while not being trivial at
> all, lacks a copyright notice.  Should this be added?

Yes.  I've just done thaht.  Thanks.

> Date: Thu, 4 Aug 2011 20:48:06 +0200
> Subject: [PATCH] tests: complete the renaming framework_failure -> framework_failure_
>
> * tests/init.cfg (framework_failure): Remove, `framework_failure_'
> from init.sh should be used instead in the tests.
> Remove leading obsolete "FIXME" comment.
> (is_local_dir_, require_strace_, require_membership_in_two_groups_,
> require_sparse_support_, skip_if_mcstransd_is_running_,
> mkfifo_or_skip_) Use `framework_failure_', not `framework_failure'.
> * Many test scripts: Likewise.

Thanks.
I've confirmed that the modified command below does
the same job and requires less manual editing.
I've modified your commit log to include the command
and to fix typos, so include the new version below.

Also, I have queued this additional change set:

>From 601c4d9209e506b92ebfbc9d0fec0f679f5fe5d3 Mon Sep 17 00:00:00 2001
From: Jim Meyering <[email-masked]>
Date: Mon, 8 Aug 2011 08:54:52 +0200
Subject: [PATCH 2/2] maint: prevent accidental future use of the old shell
 function name

This is especially important for an error-handling shell function
like this that is actually called only rarely.
* cfg.mk (sc_prohibit_framework_failure): New rule, to prevent
use of the old name.
---
 cfg.mk |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index 2111956..5f8a680 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -270,6 +270,12 @@ sc_prohibit_verbose_version:
 	halt='use the print_ver_ function instead...'			\
 	  $(_sc_search_regexp)

+# Use framework_failure_, not the old name without the trailing underscore.
+sc_prohibit_framework_failure:
+	@prohibit='\<framework_''failure\>'				\
+	halt='use framework_failure_ instead'				\
+	  $(_sc_search_regexp)
+
 ###########################################################
 _p0 = \([^"'/]\|"\([^\"]\|[\].\)*"\|'\([^\']\|[\].\)*'
 _pre = $(_p0)\|[/][^"'/*]\|[/]"\([^\"]\|[\].\)*"\|[/]'\([^\']\|[\].\)*'\)*
--
1.7.6.351.gb35ac

>From 530fe7857be3aa4a988cca749cf3c22e5df5b667 Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <[email-masked]>
Date: Thu, 4 Aug 2011 20:52:31 +0200
Subject: [PATCH 1/2] tests: complete the renaming framework_failure ->
 framework_failure_

These changes were mostly mechanical, made by running the
following command:

  git grep -lw framework_failure | grep -v ChangeLog \
    | xargs perl -pi -e 's/\b(framework_failure)\b/${1}_/'

and then editing init.cfg and `tests/cp/cp-a-selinux' by hand.

* tests/init.cfg (framework_failure): Remove, `framework_failure_'
from init.sh should be used instead in the tests.
Remove now-obsolete "FIXME" comment.
(is_local_dir_, require_strace_, require_membership_in_two_groups_,
require_sparse_support_, skip_if_mcstransd_is_running_,
mkfifo_or_skip_) Use `framework_failure_', not `framework_failure'.
* Many test scripts: Likewise.
---
 tests/chgrp/default-no-deref              |    2 +-
 tests/chgrp/no-x                          |    4 +-
 tests/chgrp/posix-H                       |   10 +++---
 tests/chmod/c-option                      |    4 +-
 tests/chmod/equal-x                       |    2 +-
 tests/chmod/equals                        |    2 +-
 tests/chmod/inaccessible                  |    4 +-
 tests/chmod/no-x                          |    4 +-
 tests/chmod/setgid                        |    4 +-
 tests/chmod/thru-dangling                 |    2 +-
 tests/chmod/usage                         |    6 ++--
 tests/chown/basic                         |    2 +-
 tests/chown/deref                         |    2 +-
 tests/chown/separator                     |   16 +++++-----
 tests/cp/abuse                            |    8 ++--
 tests/cp/acl                              |   16 +++++-----
 tests/cp/backup-dir                       |    2 +-
 tests/cp/backup-is-src                    |    4 +-
 tests/cp/capability                       |    4 +-
 tests/cp/cp-HL                            |    8 ++--
 tests/cp/cp-a-selinux                     |   18 +++++-----
 tests/cp/cp-deref                         |    6 ++--
 tests/cp/cp-i                             |    6 ++--
 tests/cp/cp-mv-enotsup-xattr              |    4 +-
 tests/cp/cp-parents                       |    8 ++--
 tests/cp/deref-slink                      |    4 +-
 tests/cp/dir-rm-dest                      |    2 +-
 tests/cp/dir-slash                        |    4 +-
 tests/cp/dir-vs-file                      |    4 +-
 tests/cp/fail-perm                        |   10 +++---
 tests/cp/fiemap-empty                     |    4 +-
 tests/cp/into-self                        |    2 +-
 tests/cp/link                             |    6 ++--
 tests/cp/link-heap                        |    8 ++--
 tests/cp/link-no-deref                    |    2 +-
 tests/cp/link-preserve                    |   12 +++---
 tests/cp/link-symlink                     |    2 +-
 tests/cp/parent-perm                      |    8 ++--
 tests/cp/parent-perm-race                 |    2 +-
 tests/cp/preserve-2                       |    2 +-
 tests/cp/preserve-slink-time              |    8 ++--
 tests/cp/proc-zero-len                    |    2 +-
 tests/cp/r-vs-symlink                     |    6 ++--
 tests/cp/reflink-auto                     |    4 +-
 tests/cp/reflink-perm                     |    4 +-
 tests/cp/slink-2-slink                    |   10 +++---
 tests/cp/sparse                           |    2 +-
 tests/cp/sparse-fiemap                    |    4 +-
 tests/cp/special-bits                     |   12 +++---
 tests/cp/src-base-dot                     |    2 +-
 tests/cp/symlink-slash                    |    4 +-
 tests/cp/thru-dangling                    |    8 ++--
 tests/dd/direct                           |    8 ++--
 tests/dd/misc                             |   10 +++---
 tests/dd/nocache                          |    2 +-
 tests/dd/reblock                          |    4 +-
 tests/dd/skip-seek-past-dev               |    6 ++--
 tests/dd/skip-seek-past-file              |    6 ++--
 tests/dd/unblock-sync                     |    2 +-
 tests/df/total-verify                     |    6 ++--
 tests/du/basic                            |    4 +-
 tests/du/deref                            |   10 +++---
 tests/du/deref-args                       |    8 ++--
 tests/du/exclude                          |    2 +-
 tests/du/fd-leak                          |    2 +-
 tests/du/inacc-dest                       |    2 +-
 tests/du/inacc-dir                        |    2 +-
 tests/du/inaccessible-cwd                 |    6 ++--
 tests/du/long-from-unreadable             |   14 ++++----
 tests/du/long-sloop                       |    4 +-
 tests/du/move-dir-while-traversing        |    4 +-
 tests/du/no-deref                         |    4 +-
 tests/du/no-x                             |    4 +-
 tests/du/one-file-system                  |    2 +-
 tests/du/restore-wd                       |    2 +-
 tests/du/trailing-slash                   |    4 +-
 tests/du/two-args                         |    6 ++--
 tests/init.cfg                            |   18 ++++------
 tests/install/basic-1                     |    6 ++--
 tests/install/install-C                   |   16 +++++-----
 tests/install/install-C-root              |    2 +-
 tests/install/install-C-selinux           |    2 +-
 tests/install/strip-program               |    4 +-
 tests/ln/backup-1                         |    2 +-
 tests/ln/hard-backup                      |    2 +-
 tests/ln/hard-to-sym                      |   12 +++---
 tests/ln/misc                             |   50 ++++++++++++++--------------
 tests/ln/sf-1                             |    4 +-
 tests/ln/slash-decorated-nonexistent-dest |    2 +-
 tests/ln/target-1                         |    2 +-
 tests/ls/abmon-align                      |    2 +-
 tests/ls/capability                       |    2 +-
 tests/ls/color-clear-to-eol               |    4 +-
 tests/ls/color-dtype-dir                  |    6 ++--
 tests/ls/color-norm                       |   12 +++---
 tests/ls/dangle                           |   14 ++++----
 tests/ls/dired                            |    2 +-
 tests/ls/follow-slink                     |   10 +++---
 tests/ls/infloop                          |    8 ++--
 tests/ls/inode                            |    4 +-
 tests/ls/m-option                         |    4 +-
 tests/ls/multihardlink                    |   20 ++++++------
 tests/ls/nameless-uid                     |    4 +-
 tests/ls/no-arg                           |    8 ++--
 tests/ls/recursive                        |    4 +-
 tests/ls/rt-1                             |    6 ++--
 tests/ls/stat-dtype                       |   14 ++++----
 tests/ls/stat-failed                      |    6 ++--
 tests/ls/stat-free-symlinks               |    6 ++--
 tests/ls/symlink-slash                    |    4 +-
 tests/ls/x-option                         |    6 ++--
 tests/misc/chcon                          |    4 +-
 tests/misc/env                            |   32 +++++++++---------
 tests/misc/env-null                       |    4 +-
 tests/misc/fmt-long-line                  |    4 +-
 tests/misc/head-c                         |    2 +-
 tests/misc/head-pos                       |    2 +-
 tests/misc/ls-time                        |   16 +++++-----
 tests/misc/nice                           |    2 +-
 tests/misc/od-N                           |    2 +-
 tests/misc/od-float                       |    6 ++--
 tests/misc/od-multiple-t                  |    4 +-
 tests/misc/od-x8                          |    2 +-
 tests/misc/pathchk1                       |    2 +-
 tests/misc/printenv                       |   10 +++---
 tests/misc/ptx-overrun                    |    2 +-
 tests/misc/pwd-option                     |   10 +++---
 tests/misc/readlink-fp-loop               |   28 ++++++++--------
 tests/misc/runcon-no-reorder              |    2 +-
 tests/misc/selinux                        |    4 +-
 tests/misc/shred-passes                   |    4 +-
 tests/misc/shred-remove                   |    4 +-
 tests/misc/shuf                           |    4 +-
 tests/misc/sort-benchmark-random          |    4 +-
 tests/misc/sort-compress                  |    4 +-
 tests/misc/sort-compress-hang             |    2 +-
 tests/misc/sort-compress-proc             |    2 +-
 tests/misc/sort-continue                  |    2 +-
 tests/misc/sort-merge-fdlimit             |    2 +-
 tests/misc/sort-rand                      |    2 +-
 tests/misc/stat-hyphen                    |    4 +-
 tests/misc/stat-slash                     |   10 +++---
 tests/misc/tee                            |    4 +-
 tests/misc/truncate-owned-by-other        |    4 +-
 tests/misc/wc-files0                      |    6 ++--
 tests/misc/xattr                          |   18 +++++-----
 tests/mkdir/p-3                           |    6 ++--
 tests/mkdir/p-thru-slink                  |    2 +-
 tests/mkdir/parents                       |    2 +-
 tests/mv/acl                              |   22 ++++++------
 tests/mv/atomic                           |    4 +-
 tests/mv/atomic2                          |    4 +-
 tests/mv/backup-dir                       |    4 +-
 tests/mv/backup-is-src                    |    6 ++--
 tests/mv/childproof                       |    6 ++--
 tests/mv/diag                             |    6 ++--
 tests/mv/dir-file                         |    4 +-
 tests/mv/dir2dir                          |    4 +-
 tests/mv/force                            |    4 +-
 tests/mv/hard-2                           |   10 +++---
 tests/mv/hard-3                           |   10 +++---
 tests/mv/hard-4                           |    4 +-
 tests/mv/hard-link-1                      |    6 ++--
 tests/mv/hard-verbose                     |    4 +-
 tests/mv/i-2                              |    6 ++--
 tests/mv/i-3                              |    4 +-
 tests/mv/i-4                              |    4 +-
 tests/mv/i-5                              |    4 +-
 tests/mv/i-link-no                        |   14 ++++----
 tests/mv/into-self                        |    6 ++--
 tests/mv/into-self-2                      |    4 +-
 tests/mv/into-self-3                      |    2 +-
 tests/mv/into-self-4                      |    4 +-
 tests/mv/leak-fd                          |    4 +-
 tests/mv/mv-n                             |   14 ++++----
 tests/mv/mv-special-1                     |   10 +++---
 tests/mv/no-target-dir                    |    6 ++--
 tests/mv/part-fail                        |    4 +-
 tests/mv/part-hardlink                    |   10 +++---
 tests/mv/part-rename                      |    2 +-
 tests/mv/perm-1                           |    4 +-
 tests/mv/sticky-to-xpart                  |   12 +++---
 tests/mv/to-symlink                       |    6 ++--
 tests/mv/trailing-slash                   |    6 ++--
 tests/mv/update                           |    6 ++--
 tests/readlink/can-e                      |   18 +++++-----
 tests/readlink/can-f                      |   20 ++++++------
 tests/readlink/can-m                      |   18 +++++-----
 tests/readlink/rl-1                       |    8 ++--
 tests/rm/deep-2                           |   10 +++---
 tests/rm/dir-no-w                         |    2 +-
 tests/rm/dir-nonrecur                     |    2 +-
 tests/rm/dot-rel                          |    4 +-
 tests/rm/empty-inacc                      |    2 +-
 tests/rm/ext3-perf                        |    4 +-
 tests/rm/f-1                              |    2 +-
 tests/rm/fail-2eperm                      |    6 ++--
 tests/rm/fail-eacces                      |    4 +-
 tests/rm/hash                             |    2 +-
 tests/rm/i-1                              |    6 ++--
 tests/rm/i-never                          |    6 ++--
 tests/rm/i-no-r                           |    4 +-
 tests/rm/ignorable                        |    2 +-
 tests/rm/inaccessible                     |    2 +-
 tests/rm/interactive-always               |    6 ++--
 tests/rm/interactive-once                 |   10 +++---
 tests/rm/ir-1                             |    8 ++--
 tests/rm/no-give-up                       |    8 ++--
 tests/rm/one-file-system                  |    2 +-
 tests/rm/r-1                              |    6 ++--
 tests/rm/r-2                              |    8 ++--
 tests/rm/r-3                              |   12 +++---
 tests/rm/r-4                              |    4 +-
 tests/rm/readdir-bug                      |    8 ++--
 tests/rm/rm1                              |    4 +-
 tests/rm/rm2                              |    8 ++--
 tests/rm/rm3                              |   10 +++---
 tests/rm/rm4                              |    2 +-
 tests/rm/rm5                              |    6 ++--
 tests/rm/unread2                          |    2 +-
 tests/rm/unread3                          |    2 +-
 tests/rm/v-slash                          |    4 +-
 tests/rmdir/fail-perm                     |    4 +-
 tests/rmdir/ignore                        |    2 +-
 tests/rmdir/t-slash                       |    2 +-
 tests/split/b-chunk                       |    2 +-
 tests/split/fail                          |    2 +-
 tests/split/l-chunk                       |    6 ++--
 tests/split/lines                         |    2 +-
 tests/split/r-chunk                       |    2 +-
 tests/split/suffix-length                 |    6 ++--
 tests/tail-2/F-vs-rename                  |    2 +-
 tests/tail-2/big-4gb                      |    4 +-
 tests/tail-2/follow-stdin                 |    4 +-
 tests/tail-2/inotify-hash-abuse           |    2 +-
 tests/tail-2/inotify-hash-abuse2          |    2 +-
 tests/tail-2/inotify-race                 |    4 +-
 tests/tail-2/pid                          |    2 +-
 tests/tail-2/pipe-f2                      |    2 +-
 tests/tail-2/start-middle                 |    2 +-
 tests/tail-2/tail-n0f                     |    4 +-
 tests/tail-2/wait                         |    6 ++--
 tests/touch/60-seconds                    |    2 +-
 tests/touch/empty-file                    |   12 +++---
 tests/touch/no-dereference                |    6 ++--
 tests/touch/no-rights                     |    6 ++--
 tests/touch/now-owned-by-other            |    4 +-
 tests/touch/read-only                     |    4 +-
 tests/touch/relative                      |    2 +-
 tests/touch/trailing-slash                |   12 +++---
 250 files changed, 735 insertions(+), 739 deletions(-)

diff --git a/tests/chgrp/default-no-deref b/tests/chgrp/default-no-deref
index 6f864f5..3e31a2a 100755
--- a/tests/chgrp/default-no-deref
+++ b/tests/chgrp/default-no-deref
@@ -23,7 +23,7 @@ require_membership_in_two_groups_
 set _ $groups; shift
 g2=$2

-mkdir d && touch f && ln -s ../f d/s || framework_failure
+mkdir d && touch f && ln -s ../f d/s || framework_failure_

 g_init=`stat --printf=%g f`
diff --git a/tests/chgrp/no-x b/tests/chgrp/no-x
index 12235de..2555c45 100755
--- a/tests/chgrp/no-x
+++ b/tests/chgrp/no-x
@@ -26,8 +26,8 @@ set _ $groups; shift
 g1=$1
 g2=$2

-mkdir -p d/no-x/y || framework_failure
-chmod u=rw d/no-x || framework_failure
+mkdir -p d/no-x/y || framework_failure_
+chmod u=rw d/no-x || framework_failure_

 # This must exit nonzero.
diff --git a/tests/chgrp/posix-H b/tests/chgrp/posix-H
index 2ae2ff3..a0e6ff0 100755
--- a/tests/chgrp/posix-H
+++ b/tests/chgrp/posix-H
@@ -24,11 +24,11 @@ set _ $groups; shift
 g1=$1
 g2=$2

-mkdir 1 2 3 || framework_failure
-touch 1/1F 2/2F 3/3F || framework_failure
-ln -s 1 1s || framework_failure
-ln -s ../3 2/2s || framework_failure
-chgrp -R $g1 1 2 3 || framework_failure
+mkdir 1 2 3 || framework_failure_
+touch 1/1F 2/2F 3/3F || framework_failure_
+ln -s 1 1s || framework_failure_
+ln -s ../3 2/2s || framework_failure_
+chgrp -R $g1 1 2 3 || framework_failure_

 chgrp --preserve-root -H -R $g2 1s 2 || fail=1
diff --git a/tests/chmod/c-option b/tests/chmod/c-option
index d80038c..d5002a2 100755
--- a/tests/chmod/c-option
+++ b/tests/chmod/c-option
@@ -21,8 +21,8 @@ print_ver_ chmod

 umask 0
 file=f
-touch $file || framework_failure
-chmod 444 $file || framework_failure
+touch $file || framework_failure_
+chmod 444 $file || framework_failure_

 skip_if_setgid_

diff --git a/tests/chmod/equal-x b/tests/chmod/equal-x
index fc4a8f5..3505696 100755
--- a/tests/chmod/equal-x
+++ b/tests/chmod/equal-x
@@ -20,7 +20,7 @@
 print_ver_ chmod

 file=f
-touch $file || framework_failure
+touch $file || framework_failure_

 umask 005
 for mode in =x =xX =Xx =x,=X =X,=x; do
diff --git a/tests/chmod/equals b/tests/chmod/equals
index 39d2d62..249412c 100755
--- a/tests/chmod/equals
+++ b/tests/chmod/equals
@@ -21,7 +21,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ chmod

-touch f || framework_failure
+touch f || framework_failure_

 expected_u=-rwx------
diff --git a/tests/chmod/inaccessible b/tests/chmod/inaccessible
index 90126a8..7c05180 100755
--- a/tests/chmod/inaccessible
+++ b/tests/chmod/inaccessible
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ chmod

-mkdir -p d/e || framework_failure
-chmod 0 d/e d || framework_failure
+mkdir -p d/e || framework_failure_
+chmod 0 d/e d || framework_failure_

 chmod u+rwx d d/e || fail=1
diff --git a/tests/chmod/no-x b/tests/chmod/no-x
index 0fb70f9..f45c446 100755
--- a/tests/chmod/no-x
+++ b/tests/chmod/no-x
@@ -21,8 +21,8 @@
 print_ver_ chmod
 skip_if_root_

-mkdir -p d/no-x/y a/b || framework_failure
-chmod u=rw d/no-x || framework_failure
+mkdir -p d/no-x/y a/b || framework_failure_
+chmod u=rw d/no-x || framework_failure_

 # This must exit nonzero.
diff --git a/tests/chmod/setgid b/tests/chmod/setgid
index 364d25d..23278de 100755
--- a/tests/chmod/setgid
+++ b/tests/chmod/setgid
@@ -21,7 +21,7 @@
 print_ver_ chmod

 umask 0
-mkdir d || framework_failure
+mkdir d || framework_failure_

 chmod g+s d 2> /dev/null && env -- test -g d ||
   {
@@ -33,7 +33,7 @@ chmod g+s d 2> /dev/null && env -- test -g d ||
     id_g=`id -g` &&
     test -n "$id_g" &&
     chgrp "$id_g" d &&
-    chmod g+s d || framework_failure
+    chmod g+s d || framework_failure_
   }

 # "chmod g+s d" does nothing on some NFS file systems.
diff --git a/tests/chmod/thru-dangling b/tests/chmod/thru-dangling
index e967eb9..38187d0 100755
--- a/tests/chmod/thru-dangling
+++ b/tests/chmod/thru-dangling
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ chmod

-ln -s non-existent dangle || framework_failure
+ln -s non-existent dangle || framework_failure_

 # This operation cannot succeed since the symbolic link dangles.
diff --git a/tests/chmod/usage b/tests/chmod/usage
index 0566db4..b840c11 100755
--- a/tests/chmod/usage
+++ b/tests/chmod/usage
@@ -66,17 +66,17 @@ for case in $cases; do

   case $files in
   '')
-    touch -- $all_files || framework_failure
+    touch -- $all_files || framework_failure_
     chmod $args 2>/dev/null && fail=1
     ;;
   ?*)
-    touch -- $files || framework_failure
+    touch -- $files || framework_failure_
     chmod $args || fail=1
     for file in $files; do
       # Test for misparsing args by creating all $files but $file.
       # chmod has a bug if it succeeds even though $file is absent.
       rm -f -- $all_files && touch -- $files && rm -- $file \
-          || framework_failure
+          || framework_failure_
       chmod $args 2>/dev/null && fail=1
     done
     ;;
diff --git a/tests/chown/basic b/tests/chown/basic
index 5626029..102f17c 100755
--- a/tests/chown/basic
+++ b/tests/chown/basic
@@ -20,7 +20,7 @@
 print_ver_ chgrp
 require_root_

-touch f || framework_failure
+touch f || framework_failure_

 chown -R --preserve-root 0:1 f

diff --git a/tests/chown/deref b/tests/chown/deref
index fbe71c7..c228bde 100755
--- a/tests/chown/deref
+++ b/tests/chown/deref
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ chown

-ln -s no-such dangle || framework_failure
+ln -s no-such dangle || framework_failure_

 set _ `ls -ldo dangle`; shift; user=$3
diff --git a/tests/chown/separator b/tests/chown/separator
index c10c5d9..147544b 100755
--- a/tests/chown/separator
+++ b/tests/chown/separator
@@ -19,17 +19,17 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ chown

-id_u=`id -u` || framework_failure
-test -n "$id_u" || framework_failure
+id_u=`id -u` || framework_failure_
+test -n "$id_u" || framework_failure_

-id_un=`id -un` || framework_failure
-test -n "$id_un" || framework_failure
+id_un=`id -un` || framework_failure_
+test -n "$id_un" || framework_failure_

-id_g=`id -g` || framework_failure
-test -n "$id_g" || framework_failure
+id_g=`id -g` || framework_failure_
+test -n "$id_g" || framework_failure_

-id_gn=`id -gn` || framework_failure
-test -n "$id_gn" || framework_failure
+id_gn=`id -gn` || framework_failure_
+test -n "$id_gn" || framework_failure_

 # FreeBSD 6.x's getgrnam fails to look up a group name containing
 # a space. On such a system, skip this test if the group name contains
diff --git a/tests/cp/abuse b/tests/cp/abuse
index 7ed8a03..43b7df0 100755
--- a/tests/cp/abuse
+++ b/tests/cp/abuse
@@ -19,12 +19,12 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir a b c || framework_failure
-ln -s ../t a/1 || framework_failure
-echo payload > b/1 || framework_failure
+mkdir a b c || framework_failure_
+ln -s ../t a/1 || framework_failure_
+echo payload > b/1 || framework_failure_

 echo "cp: will not copy \`b/1' through just-created symlink \`c/1'" \
-  > exp || framework_failure
+  > exp || framework_failure_

 # Check both cases: a dangling symlink, and one pointing to a writable file.

diff --git a/tests/cp/acl b/tests/cp/acl
index 8c132a9..261a1c9 100755
--- a/tests/cp/acl
+++ b/tests/cp/acl
@@ -26,8 +26,8 @@ require_acl_
 grep '^#define USE_ACL 1' $CONFIG_HEADER > /dev/null ||
   skip_ "insufficient ACL support"

-mkdir -p a b || framework_failure
-touch a/file || framework_failure
+mkdir -p a b || framework_failure_
+touch a/file || framework_failure_

 # Ensure that setfacl and getfacl work on this file system.
 skip=no
@@ -38,23 +38,23 @@ test $skip = yes &&

 # copy a file without preserving permissions
 cp a/file b/ || fail=1
-acl2=`cd b && getfacl file` || framework_failure
+acl2=`cd b && getfacl file` || framework_failure_
 test "$acl1" = "$acl2" || fail=1

 # Update with acl set above
-acl1=`cd a && getfacl file` || framework_failure
+acl1=`cd a && getfacl file` || framework_failure_

 # copy a file, preserving permissions
 cp -p a/file b/ || fail=1
-acl2=`cd b && getfacl file` || framework_failure
+acl2=`cd b && getfacl file` || framework_failure_
 test "$acl1" = "$acl2" || fail=1

 # copy a file, preserving permissions, with --attributes-only
-echo > a/file || framework_failure # add some data
-test -s a/file || framework_failure
+echo > a/file || framework_failure_ # add some data
+test -s a/file || framework_failure_
 cp -p --attributes-only a/file b/ || fail=1
 test -s b/file && fail=1
-acl2=`cd b && getfacl file` || framework_failure
+acl2=`cd b && getfacl file` || framework_failure_
 test "$acl1" = "$acl2" || fail=1

 Exit $fail
diff --git a/tests/cp/backup-dir b/tests/cp/backup-dir
index c89aac5..708b9d7 100755
--- a/tests/cp/backup-dir
+++ b/tests/cp/backup-dir
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir x y || framework_failure
+mkdir x y || framework_failure_

 cp -a x y || fail=1
diff --git a/tests/cp/backup-is-src b/tests/cp/backup-is-src
index 8e683ed..bb64789 100755
--- a/tests/cp/backup-is-src
+++ b/tests/cp/backup-is-src
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-echo a > a || framework_failure
-echo a-tilde > a~ || framework_failure
+echo a > a || framework_failure_
+echo a-tilde > a~ || framework_failure_

 # This cp command should exit nonzero.
 cp --b=simple a~ a > out 2>&1 && fail=1
diff --git a/tests/cp/capability b/tests/cp/capability
index be5fb08..a0fb608 100755
--- a/tests/cp/capability
+++ b/tests/cp/capability
@@ -31,8 +31,8 @@ grep '^#define HAVE_CAP 1' $CONFIG_HEADER > /dev/null \
   || skip_ "getcap utility not found"

-touch file || framework_failure
-chown $NON_ROOT_USERNAME file || framework_failure
+touch file || framework_failure_
+chown $NON_ROOT_USERNAME file || framework_failure_

 setcap 'cap_net_bind_service=ep' file ||
   skip_ "setcap doesn't work"
diff --git a/tests/cp/cp-HL b/tests/cp/cp-HL
index 49d1fa4..9a14624 100755
--- a/tests/cp/cp-HL
+++ b/tests/cp/cp-HL
@@ -19,10 +19,10 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir src-dir dest-dir || framework_failure
-echo f > f || framework_failure
-ln -s f slink || framework_failure
-ln -s no-such-file src-dir/slink || framework_failure
+mkdir src-dir dest-dir || framework_failure_
+echo f > f || framework_failure_
+ln -s f slink || framework_failure_
+ln -s no-such-file src-dir/slink || framework_failure_

 cp -H -R slink src-dir dest-dir || fail=1
diff --git a/tests/cp/cp-a-selinux b/tests/cp/cp-a-selinux
index 76684d6..8a8e374 100755
--- a/tests/cp/cp-a-selinux
+++ b/tests/cp/cp-a-selinux
@@ -31,11 +31,11 @@ cleanup_() { cd /; umount "$cwd/mnt"; }
 ctx=root:object_r:tmp_t:s0

 # Check basic functionality - before check on fixed context mount
-touch c || framework_failure
-chcon $ctx c || framework_failure
-cp -a c d 2>err || framework_failure
-cp --preserve=context c e || framework_failure
-cp --preserve=all c f || framework_failure
+touch c || framework_failure_
+chcon $ctx c || framework_failure_
+cp -a c d 2>err || framework_failure_
+cp --preserve=context c e || framework_failure_
+cp --preserve=all c f || framework_failure_
 ls -Z d | grep $ctx || fail=1
 test -s err && fail=1   #there must be no stderr output for -a
 ls -Z e | grep $ctx || fail=1
@@ -52,11 +52,11 @@ mount -oloop,context=$ctx blob mnt           || skip=1
 test $skip = 1 \
   && skip_ "insufficient mount/ext2 support"

-cd mnt                                       || framework_failure
+cd mnt                                       || framework_failure_

-echo > f                                     || framework_failure
+echo > f                                     || framework_failure_

-echo > g                                     || framework_failure
+echo > g                                     || framework_failure_
 # /bin/cp from coreutils-6.7-3.fc7 would fail this test by letting cp
 # succeed (giving no diagnostics), yet leaving the destination file empty.
 cp -a f g 2>err || fail=1
@@ -85,7 +85,7 @@ grep "Operation not supported" err && fail=1
 # NFS mounted directory.  When doing that, I get this diagnostic:
 # cp: failed to set the security context of `g' to `system_u:object_r:nfs_t': \
 #   Operation not supported
-cat <<\EOF > exp || framework_failure=1
+cat <<\EOF > exp || framework_failure_
 cp: failed to set the security context of
 EOF

diff --git a/tests/cp/cp-deref b/tests/cp/cp-deref
index 89900f6..1230ae0 100755
--- a/tests/cp/cp-deref
+++ b/tests/cp/cp-deref
@@ -20,9 +20,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir a b c d || framework_failure
-ln -s ../c a || framework_failure
-ln -s ../c b || framework_failure
+mkdir a b c d || framework_failure_
+ln -s ../c a || framework_failure_
+ln -s ../c b || framework_failure_

 # Before coreutils-5.94, the following would fail with this message:
diff --git a/tests/cp/cp-i b/tests/cp/cp-i
index 1bd51fa..8e9d940 100755
--- a/tests/cp/cp-i
+++ b/tests/cp/cp-i
@@ -19,15 +19,15 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir -p a b/a/c || framework_failure
-touch a/c || framework_failure
+mkdir -p a b/a/c || framework_failure_
+touch a/c || framework_failure_

 # coreutils 6.2 cp would neglect to prompt in this case.
 echo n | cp -iR a b 2>/dev/null || fail=1

 # test miscellaneous combinations of -f -i -n parameters
-touch c d || framework_failure
+touch c d || framework_failure_
 echo "\`c' -> \`d'" > out_copy
 > out_empty

diff --git a/tests/cp/cp-mv-enotsup-xattr b/tests/cp/cp-mv-enotsup-xattr
index 2f26dbd..9857fec 100755
--- a/tests/cp/cp-mv-enotsup-xattr
+++ b/tests/cp/cp-mv-enotsup-xattr
@@ -56,9 +56,9 @@ xattr_name="user.foo"
 xattr_value="bar"
 xattr_pair="$xattr_name=\"$xattr_value\""

-echo test > xattr/a || framework_failure
+echo test > xattr/a || framework_failure_
 getfattr -d xattr/a >out_a || skip_ "failed to get xattr of file"
-grep -F "$xattr_pair" out_a >/dev/null && framework_failure
+grep -F "$xattr_pair" out_a >/dev/null && framework_failure_
 setfattr -n "$xattr_name" -v "$xattr_value" xattr/a >out_a \
   || skip_ "failed to set xattr of file"
 getfattr -d xattr/a >out_a || skip_ "failed to get xattr of file"
diff --git a/tests/cp/cp-parents b/tests/cp/cp-parents
index 2f19af2..fcb5c44 100755
--- a/tests/cp/cp-parents
+++ b/tests/cp/cp-parents
@@ -25,10 +25,10 @@ working_umask_or_skip_
 # Run the setgid check from the just-created directory.
 skip_if_setgid_

-mkdir foo bar || framework_failure
-mkdir -p a/b/c d e g || framework_failure
-ln -s d/a sym || framework_failure
-touch f || framework_failure
+mkdir foo bar || framework_failure_
+mkdir -p a/b/c d e g || framework_failure_
+ln -s d/a sym || framework_failure_
+touch f || framework_failure_

 # With 4.0.37 and earlier (back to when?), this would fail
diff --git a/tests/cp/deref-slink b/tests/cp/deref-slink
index 9cc4962..e34b29b 100755
--- a/tests/cp/deref-slink
+++ b/tests/cp/deref-slink
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-touch f slink-target || framework_failure
-ln -s slink-target slink || framework_failure
+touch f slink-target || framework_failure_
+ln -s slink-target slink || framework_failure_

 cp -d f slink || fail=1

diff --git a/tests/cp/dir-rm-dest b/tests/cp/dir-rm-dest
index 23979a9..c6712e2 100755
--- a/tests/cp/dir-rm-dest
+++ b/tests/cp/dir-rm-dest
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir d e || framework_failure
+mkdir d e || framework_failure_

 # Do it once with no destination...
 cp -R --remove-destination d e || fail=1
diff --git a/tests/cp/dir-slash b/tests/cp/dir-slash
index 57184ab..e206bd0 100755
--- a/tests/cp/dir-slash
+++ b/tests/cp/dir-slash
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir dir1 dir2 || framework_failure
-touch dir1/file || framework_failure
+mkdir dir1 dir2 || framework_failure_
+touch dir1/file || framework_failure_

 cp -R dir1/ dir2 || fail=1

diff --git a/tests/cp/dir-vs-file b/tests/cp/dir-vs-file
index 5a44516..5beaf30 100755
--- a/tests/cp/dir-vs-file
+++ b/tests/cp/dir-vs-file
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir dir || framework_failure
-touch file || framework_failure
+mkdir dir || framework_failure_
+touch file || framework_failure_

 # In 4.0.35, this cp invocation silently succeeded.
diff --git a/tests/cp/fail-perm b/tests/cp/fail-perm
index 83d4711..404c83e 100755
--- a/tests/cp/fail-perm
+++ b/tests/cp/fail-perm
@@ -19,11 +19,11 @@
 print_ver_ cp
 skip_if_root_

-chmod g-s . || framework_failure
-mkdir D D/D || framework_failure
-touch D/a || framework_failure
-chmod 0 D/a || framework_failure
-chmod u=rx,go=,-st D || framework_failure
+chmod g-s . || framework_failure_
+mkdir D D/D || framework_failure_
+touch D/a || framework_failure_
+chmod 0 D/a || framework_failure_
+chmod u=rx,go=,-st D || framework_failure_

 # This is expected to exit non-zero, because it can't read D/a.
diff --git a/tests/cp/fiemap-empty b/tests/cp/fiemap-empty
index 095d1b7..6ce5957 100755
--- a/tests/cp/fiemap-empty
+++ b/tests/cp/fiemap-empty
@@ -55,7 +55,7 @@ filefrag -v space.test | grep -F 'unwritten' > /dev/null ||
 rm space.test

 # Ensure we read a large empty file quickly
-fallocate -l 300MiB empty.big || framework_failure
+fallocate -l 300MiB empty.big || framework_failure_
 timeout 3 cp --sparse=always empty.big cp.test || fail=1
 test $(stat -c %s empty.big) = $(stat -c %s cp.test) || fail=1
 rm empty.big cp.test
@@ -63,7 +63,7 @@ rm empty.big cp.test
 # Ensure we handle extents beyond file size correctly.
 # Note until we support fallocate, we will not maintain
 # the file allocation.  FIXME: amend this test when fallocate is supported.
-fallocate -l 10MiB -n unwritten.withdata || framework_failure
+fallocate -l 10MiB -n unwritten.withdata || framework_failure_
 dd count=10 if=/dev/urandom conv=notrunc iflag=fullblock of=unwritten.withdata
 cp unwritten.withdata cp.test || fail=1
 test $(stat -c %s unwritten.withdata) = $(stat -c %s cp.test) || fail=1
diff --git a/tests/cp/into-self b/tests/cp/into-self
index ed10f2b..deb5a53 100755
--- a/tests/cp/into-self
+++ b/tests/cp/into-self
@@ -24,7 +24,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir a dir || framework_failure
+mkdir a dir || framework_failure_

 # This command should exit nonzero.
diff --git a/tests/cp/link b/tests/cp/link
index 22c6ed2..73c8bb3 100755
--- a/tests/cp/link
+++ b/tests/cp/link
@@ -20,9 +20,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-touch src || framework_failure
-touch dest || framework_failure
-touch dest2 || framework_failure
+touch src || framework_failure_
+touch dest || framework_failure_
+touch dest2 || framework_failure_

 cp -f --link src dest || fail=1
diff --git a/tests/cp/link-heap b/tests/cp/link-heap
index 1b80021..d622bc4 100755
--- a/tests/cp/link-heap
+++ b/tests/cp/link-heap
@@ -26,10 +26,10 @@ b=$(printf %031d 1)
 (mkdir $a \
    && cd $a \
    && seq --format=%031g 10000 |xargs touch \
-   && seq --format=d%030g 10000 |xargs mkdir ) || framework_failure
-cp -al $a $b || framework_failure
-mkdir e || framework_failure
-mv $a $b e || framework_failure
+   && seq --format=d%030g 10000 |xargs mkdir ) || framework_failure_
+cp -al $a $b || framework_failure_
+mkdir e || framework_failure_
+mv $a $b e || framework_failure_

 (ulimit -v 20000; cp -al e f) || fail=1

diff --git a/tests/cp/link-no-deref b/tests/cp/link-no-deref
index 12007e2..ca0e547 100755
--- a/tests/cp/link-no-deref
+++ b/tests/cp/link-no-deref
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-ln -s no-such-file dangling-slink || framework_failure
+ln -s no-such-file dangling-slink || framework_failure_

 # Prior to coreutils-6.0, this would fail on non-Linux kernels,
diff --git a/tests/cp/link-preserve b/tests/cp/link-preserve
index 1e42b89..d1212e5 100755
--- a/tests/cp/link-preserve
+++ b/tests/cp/link-preserve
@@ -20,12 +20,12 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-touch a || framework_failure
-ln a b || framework_failure
-mkdir c || framework_failure
-cp -d a b c || framework_failure
-test -f c/a || framework_failure
-test -f c/b || framework_failure
+touch a || framework_failure_
+ln a b || framework_failure_
+mkdir c || framework_failure_
+cp -d a b c || framework_failure_
+test -f c/a || framework_failure_
+test -f c/b || framework_failure_

 a_inode=`ls -i c/a|sed 's,c/.*,,'`
diff --git a/tests/cp/link-symlink b/tests/cp/link-symlink
index 0d09f5d..fff1c5c 100755
--- a/tests/cp/link-symlink
+++ b/tests/cp/link-symlink
@@ -22,7 +22,7 @@ print_ver_ cp
 # Check that the timestamps of the symlink are copied
 # if we're using hardlink to symlink emulation.
 touch file
-ln -s file link || framework_failure
+ln -s file link || framework_failure_
 touch -m -h -d 2011-01-01 link ||
   skip_ "Your system doesn't support updating symlink timestamps"
 case `stat --format=%y link` in
diff --git a/tests/cp/parent-perm b/tests/cp/parent-perm
index 896145f..6c82181 100755
--- a/tests/cp/parent-perm
+++ b/tests/cp/parent-perm
@@ -23,14 +23,14 @@ working_umask_or_skip_
 # cp -p gives ENOTSUP on NFS on Linux 2.6.9 at least
 require_local_dir_

-mkdir -p a/b/c a/b/d e || framework_failure
-touch a/b/c/foo a/b/d/foo || framework_failure
-cp -p --parent a/b/c/foo e || framework_failure
+mkdir -p a/b/c a/b/d e || framework_failure_
+touch a/b/c/foo a/b/d/foo || framework_failure_
+cp -p --parent a/b/c/foo e || framework_failure_

 # Make permissions of e/a different, so that we exercise the
 # code in cp -p --parents that propagates permissions even
 # to a destination directory that it doesn't create.
-chmod g-rx e/a e/a/b || framework_failure
+chmod g-rx e/a e/a/b || framework_failure_

 cp -p --parent a/b/d/foo e || fail=1

diff --git a/tests/cp/parent-perm-race b/tests/cp/parent-perm-race
index 366efba..0f52002 100755
--- a/tests/cp/parent-perm-race
+++ b/tests/cp/parent-perm-race
@@ -23,7 +23,7 @@ print_ver_ cp
 require_local_dir_

 umask 002
-mkdir mode ownership d || framework_failure
+mkdir mode ownership d || framework_failure_
 chmod g+s d 2>/dev/null # The cp test is valid either way.

diff --git a/tests/cp/preserve-2 b/tests/cp/preserve-2
index 023a290..03c6a71 100755
--- a/tests/cp/preserve-2
+++ b/tests/cp/preserve-2
@@ -22,7 +22,7 @@ print_ver_ cp
 # cp -p gives ENOTSUP on NFS on Linux 2.6.9 at least
 require_local_dir_

-touch f || framework_failure
+touch f || framework_failure_

 cp --preserve=mode,links f g || fail=1

diff --git a/tests/cp/preserve-slink-time b/tests/cp/preserve-slink-time
index 0f9bfe5..f9c6019 100755
--- a/tests/cp/preserve-slink-time
+++ b/tests/cp/preserve-slink-time
@@ -23,7 +23,7 @@ grep '^#define HAVE_UTIMENSAT 1' "$CONFIG_HEADER" > /dev/null ||
 grep '^#define HAVE_LUTIMES 1' "$CONFIG_HEADER" > /dev/null ||
   skip_ 'this system lacks the utimensat function'

-ln -s no-such dangle || framework_failure
+ln -s no-such dangle || framework_failure_

 # If the current file system lacks sub-second resolution, sleep for 2s to
 # ensure that the times on the copy are different from those of the original.
@@ -32,9 +32,9 @@ case $(stat --format=%y dangle) in
 esac

 # Can't use --format=%x, as lstat() modifies atime on some platforms.
-cp -Pp dangle d2 || framework_failure
-stat --format=%y dangle > t1 || framework_failure
-stat --format=%y d2 > t2 || framework_failure
+cp -Pp dangle d2 || framework_failure_
+stat --format=%y dangle > t1 || framework_failure_
+stat --format=%y d2 > t2 || framework_failure_

 compare t1 t2 || fail=1

diff --git a/tests/cp/proc-zero-len b/tests/cp/proc-zero-len
index 77c764b..53abc43 100755
--- a/tests/cp/proc-zero-len
+++ b/tests/cp/proc-zero-len
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-touch empty || framework_failure
+touch empty || framework_failure_

 f=/proc/cpuinfo
 test -r $f || f=empty
diff --git a/tests/cp/r-vs-symlink b/tests/cp/r-vs-symlink
index feca7d6..0ca358c 100755
--- a/tests/cp/r-vs-symlink
+++ b/tests/cp/r-vs-symlink
@@ -23,9 +23,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-echo abc > foo || framework_failure
-ln -s foo slink || framework_failure
-ln -s no-such-file no-file || framework_failure
+echo abc > foo || framework_failure_
+ln -s foo slink || framework_failure_
+ln -s no-such-file no-file || framework_failure_

 # This would fail in 4.1.5, not in 4.1.6.
diff --git a/tests/cp/reflink-auto b/tests/cp/reflink-auto
index 1639bb4..90251e0 100755
--- a/tests/cp/reflink-auto
+++ b/tests/cp/reflink-auto
@@ -22,9 +22,9 @@ print_ver_ cp
 cleanup_() { rm -rf "$other_partition_tmpdir"; }
 . "$abs_srcdir/other-fs-tmpdir"
 a_other="$other_partition_tmpdir/a"
-rm -f "$a_other" || framework_failure
+rm -f "$a_other" || framework_failure_

-echo non_zero_size > "$a_other" || framework_failure
+echo non_zero_size > "$a_other" || framework_failure_

 # we shouldn't be able to reflink() files on separate partitions
 cp --reflink      "$a_other" b && fail=1
diff --git a/tests/cp/reflink-perm b/tests/cp/reflink-perm
index 367704d..a712d74 100755
--- a/tests/cp/reflink-perm
+++ b/tests/cp/reflink-perm
@@ -23,10 +23,10 @@ print_ver_ cp
 : > time_check
 : > file
 ts='2009-08-28 19:00'
-touch -d "$ts" file || framework_failure
+touch -d "$ts" file || framework_failure_
 test time_check -nt file || skip_ "The system clock is wrong"

-chmod a=rwx file || framework_failure
+chmod a=rwx file || framework_failure_
 umask 077
 cp --reflink=auto --preserve file copy || fail=1

diff --git a/tests/cp/slink-2-slink b/tests/cp/slink-2-slink
index 82a1d7b..fb148e0 100755
--- a/tests/cp/slink-2-slink
+++ b/tests/cp/slink-2-slink
@@ -20,11 +20,11 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-touch file || framework_failure
-ln -s file a || framework_failure
-ln -s file b || framework_failure
-ln -s no-such-file c || framework_failure
-ln -s no-such-file d || framework_failure
+touch file || framework_failure_
+ln -s file a || framework_failure_
+ln -s file b || framework_failure_
+ln -s no-such-file c || framework_failure_
+ln -s no-such-file d || framework_failure_

 cp --update --no-dereference a b || fail=1
 cp --update --no-dereference c d || fail=1
diff --git a/tests/cp/sparse b/tests/cp/sparse
index 294b904..4d78640 100755
--- a/tests/cp/sparse
+++ b/tests/cp/sparse
@@ -25,7 +25,7 @@ require_sparse_support_
 # Make its size one larger than 128K, in order to tickle the
 # bug in coreutils-6.0.
 size=`expr 128 \* 1024 + 1`
-dd bs=1 seek=$size of=sparse < /dev/null 2> /dev/null || framework_failure
+dd bs=1 seek=$size of=sparse < /dev/null 2> /dev/null || framework_failure_

 cp --sparse=always sparse copy || fail=1
diff --git a/tests/cp/sparse-fiemap b/tests/cp/sparse-fiemap
index 37d8ea7..5eedb4f 100755
--- a/tests/cp/sparse-fiemap
+++ b/tests/cp/sparse-fiemap
@@ -100,8 +100,8 @@ for i in $(seq 1 2 21); do
       #   j: 6 extents found

       # exclude the physical block numbers; they always differ
-      filefrag -v j1 > ff1 || framework_failure
-      filefrag -vs j2 > ff2 || framework_failure
+      filefrag -v j1 > ff1 || framework_failure_
+      filefrag -vs j2 > ff2 || framework_failure_
       { f ff1; f ff2; } | $PERL $abs_top_srcdir/tests/filefrag-extent-compare \
         || {
              warn_ ignoring filefrag-reported extent map differences
diff --git a/tests/cp/special-bits b/tests/cp/special-bits
index 9168f14..e3e5559 100755
--- a/tests/cp/special-bits
+++ b/tests/cp/special-bits
@@ -24,12 +24,12 @@
 print_ver_ cp
 require_root_

-touch a b c || framework_failure
-chmod u+sx,go= a || framework_failure
-chmod u=rwx,g=sx,o= b || framework_failure
-chmod a=r,ug+sx c || framework_failure
-chown $NON_ROOT_USERNAME . || framework_failure
-chmod u=rwx,g=rx,o=rx . || framework_failure
+touch a b c || framework_failure_
+chmod u+sx,go= a || framework_failure_
+chmod u=rwx,g=sx,o= b || framework_failure_
+chmod a=r,ug+sx c || framework_failure_
+chown $NON_ROOT_USERNAME . || framework_failure_
+chmod u=rwx,g=rx,o=rx . || framework_failure_

 cp -p a a2 || fail=1
diff --git a/tests/cp/src-base-dot b/tests/cp/src-base-dot
index e9bef65..069c193 100755
--- a/tests/cp/src-base-dot
+++ b/tests/cp/src-base-dot
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir x y || framework_failure
+mkdir x y || framework_failure_

 cd y
diff --git a/tests/cp/symlink-slash b/tests/cp/symlink-slash
index 70a8435..45c3069 100755
--- a/tests/cp/symlink-slash
+++ b/tests/cp/symlink-slash
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-mkdir dir || framework_failure
-ln -s dir symlink || framework_failure
+mkdir dir || framework_failure_
+ln -s dir symlink || framework_failure_

 cp -dR symlink/ s || fail=1
 set `ls -l s`
diff --git a/tests/cp/thru-dangling b/tests/cp/thru-dangling
index 9e06122..62f1115 100755
--- a/tests/cp/thru-dangling
+++ b/tests/cp/thru-dangling
@@ -19,11 +19,11 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp

-ln -s no-such dangle || framework_failure
-echo hi > f || framework_failure
-echo hi > exp || framework_failure
+ln -s no-such dangle || framework_failure_
+echo hi > f || framework_failure_
+echo hi > exp || framework_failure_
 echo "cp: not writing through dangling symlink \`dangle'" \
-    > exp-err || framework_failure
+    > exp-err || framework_failure_

 # Starting with 6.9.90, this usage fails, by default:
diff --git a/tests/dd/direct b/tests/dd/direct
index 9350545..41874f7 100755
--- a/tests/dd/direct
+++ b/tests/dd/direct
@@ -19,13 +19,13 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ dd

-truncate -s 8192 in || framework_failure
+truncate -s 8192 in || framework_failure_
 dd if=in oflag=direct of=out 2> /dev/null \
   || skip_ 'this file system lacks support for O_DIRECT'

-truncate -s 511 short || framework_failure
-truncate -s 8191 m1 || framework_failure
-truncate -s 8193 p1 || framework_failure
+truncate -s 511 short || framework_failure_
+truncate -s 8191 m1 || framework_failure_
+truncate -s 8193 p1 || framework_failure_

 for i in short m1 p1; do
   rm -f out
diff --git a/tests/dd/misc b/tests/dd/misc
index 820984c..27520c4 100755
--- a/tests/dd/misc
+++ b/tests/dd/misc
@@ -26,9 +26,9 @@ tmp_sym=dd-sym
 tmp_out=dd-out

 warn=0
-echo data > $tmp_in || framework_failure
-ln $tmp_in $tmp_in2 || framework_failure
-ln -s $tmp_in $tmp_sym || framework_failure
+echo data > $tmp_in || framework_failure_
+ln $tmp_in $tmp_in2 || framework_failure_
+ln -s $tmp_in $tmp_sym || framework_failure_

 dd if=$tmp_in of=$tmp_out 2> /dev/null || fail=1
 compare $tmp_in $tmp_out || fail=1
@@ -87,9 +87,9 @@ test "$outbytes" -eq 3 || fail=1
 # There might be some missed failures but it's unlikely.
 (echo a; sleep .1; echo b) \
   | env LC_ALL=C dd bs=4 status=noxfer iflag=fullblock >out 2>err || fail=1
-printf 'a\nb\n' > out_ok || framework_failure
+printf 'a\nb\n' > out_ok || framework_failure_
 echo "1+0 records in
-1+0 records out" > err_ok || framework_failure
+1+0 records out" > err_ok || framework_failure_
 compare out_ok out || fail=1
 compare err_ok err || fail=1

diff --git a/tests/dd/nocache b/tests/dd/nocache
index 0af165d..5dcd897 100755
--- a/tests/dd/nocache
+++ b/tests/dd/nocache
@@ -31,7 +31,7 @@ dd iflag=nocache,direct if=/dev/null && fail=1
 # The rest ensure that the documented uses cases
 # proceed without error
 for f in ifile ofile; do
-  dd if=/dev/zero of=$f conv=fdatasync count=100 || framework_failure
+  dd if=/dev/zero of=$f conv=fdatasync count=100 || framework_failure_
 done

 # Advise to drop cache for whole file
diff --git a/tests/dd/reblock b/tests/dd/reblock
index f66a9ba..558d729 100755
--- a/tests/dd/reblock
+++ b/tests/dd/reblock
@@ -20,14 +20,14 @@
 print_ver_ dd

 # 2 short reads -> 1 full write + 1 partial write
-cat <<\EOF > exp-reblock || framework_failure
+cat <<\EOF > exp-reblock || framework_failure_
 0+2 records in
 1+1 records out
 4 bytes (4 B) copied
 EOF

 # 2 short reads -> 2 partial writes
-cat <<\EOF > exp-no-reblock || framework_failure
+cat <<\EOF > exp-no-reblock || framework_failure_
 0+2 records in
 0+2 records out
 4 bytes (4 B) copied
diff --git a/tests/dd/skip-seek-past-dev b/tests/dd/skip-seek-past-dev
index a54e010..3f1927f 100755
--- a/tests/dd/skip-seek-past-dev
+++ b/tests/dd/skip-seek-past-dev
@@ -33,7 +33,7 @@ get_device_size() {

 # Get path to device the current dir is on.
 # Note df can only get fs size, not device size.
-device=$(df -P . | tail -n1 | cut -d' ' -f1) || framework_failure
+device=$(df -P . | tail -n1 | cut -d' ' -f1) || framework_failure_

 dev_size=$(get_device_size "$device") ||
   skip_ "failed to determine size of $device"
@@ -45,14 +45,14 @@ timeout 10 dd bs=1 skip=$DEV_OFLOW count=0 status=noxfer < "$device" 2> err
 test "$?" = "1" || fail=1
 echo "dd: \`standard input': cannot skip: Invalid argument
 0+0 records in
-0+0 records out" > err_ok || framework_failure
+0+0 records out" > err_ok || framework_failure_
 compare err_ok err || fail=1

 timeout 10 dd bs=1 seek=$DEV_OFLOW count=0 status=noxfer > "$device" 2> err
 test "$?" = "1" || fail=1
 echo "dd: \`standard output': cannot seek: Invalid argument
 0+0 records in
-0+0 records out" > err_ok || framework_failure
+0+0 records out" > err_ok || framework_failure_
 compare err_ok err || fail=1

 Exit $fail
diff --git a/tests/dd/skip-seek-past-file b/tests/dd/skip-seek-past-file
index 29ae8eb..c1930de 100755
--- a/tests/dd/skip-seek-past-file
+++ b/tests/dd/skip-seek-past-file
@@ -22,12 +22,12 @@ require_sparse_support_ # for `truncate --size=$OFF_T_MAX`
 eval $(getlimits) # for OFF_T limits

-printf "1234" > file || framework_failure
+printf "1234" > file || framework_failure_

 echo "\
 dd: \`standard input': cannot skip to specified offset
 0+0 records in
-0+0 records out" > skip_err || framework_failure
+0+0 records out" > skip_err || framework_failure_

 # skipping beyond number of blocks in file should issue a warning
 dd bs=1 skip=5 count=0 status=noxfer < file 2> err || fail=1
@@ -60,7 +60,7 @@ compare skip_err err || fail=1
 # seeking beyond end of file is OK
 dd bs=1 seek=5 count=0 status=noxfer > file 2> err || fail=1
 echo "0+0 records in
-0+0 records out" > err_ok || framework_failure
+0+0 records out" > err_ok || framework_failure_
 compare err_ok err || fail=1

 # skipping > OFF_T_MAX should fail immediately
diff --git a/tests/dd/unblock-sync b/tests/dd/unblock-sync
index 28ed568..a6fd4a5 100755
--- a/tests/dd/unblock-sync
+++ b/tests/dd/unblock-sync
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ dd

-printf 000100020003xx > in || framework_failure
+printf 000100020003xx > in || framework_failure_

 dd cbs=4 ibs=4 conv=unblock,sync < in > out 2> /dev/null || fail=1
diff --git a/tests/df/total-verify b/tests/df/total-verify
index bc9c99e..bbf2e3b 100755
--- a/tests/df/total-verify
+++ b/tests/df/total-verify
@@ -21,7 +21,7 @@ print_ver_ df

 df || skip_ "df fails"

-cat <<\EOF > check-df || framework_failure
+cat <<\EOF > check-df || framework_failure_
 my ($total, $used, $avail) = (0, 0, 0);
 while (<>)
   {
@@ -52,9 +52,9 @@ EOF

 # Use --block-size=512 to keep df from printing rounded-to-kilobyte
 # numbers which wouldn't necessarily add up to the displayed total.
-df --total -P --block-size=512 > space || framework_failure
+df --total -P --block-size=512 > space || framework_failure_
 cat space  # this helps when debugging any test failure
-df --total -i -P               > inode || framework_failure
+df --total -i -P               > inode || framework_failure_
 cat inode

 $PERL check-df space || fail=1
diff --git a/tests/du/basic b/tests/du/basic
index e12ff1e..3cb3c0d 100755
--- a/tests/du/basic
+++ b/tests/du/basic
@@ -19,12 +19,12 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ du

-mkdir -p a/b d d/sub || framework_failure
+mkdir -p a/b d d/sub || framework_failure_

 # Ensure that these files contain more than 64 bytes, so that we don't
 # immediately disqualify file systems (e.g., NetApp) on which smaller
 # files take up zero disk blocks.
-printf '%*s' 257 make-sure-the-file-is-non-empty > a/b/F || framework_failure
+printf '%*s' 257 make-sure-the-file-is-non-empty > a/b/F || framework_failure_
 printf %4096s x > d/1
 cp d/1 d/sub/2

diff --git a/tests/du/deref b/tests/du/deref
index ebd9c18..6383793 100755
--- a/tests/du/deref
+++ b/tests/du/deref
@@ -22,11 +22,11 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ du

-mkdir -p a/sub || framework_failure
-ln -s a/sub slink || framework_failure
-touch b || framework_failure
-ln -s .. a/sub/dotdot || framework_failure
-ln -s nowhere dangle || framework_failure
+mkdir -p a/sub || framework_failure_
+ln -s a/sub slink || framework_failure_
+touch b || framework_failure_
+ln -s .. a/sub/dotdot || framework_failure_
+ln -s nowhere dangle || framework_failure_

 # This used to fail with the following diagnostic:
diff --git a/tests/du/deref-args b/tests/du/deref-args
index 767f94e..474f7d0 100755
--- a/tests/du/deref-args
+++ b/tests/du/deref-args
@@ -20,10 +20,10 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ du

-mkdir -p dir/a || framework_failure
-ln -s dir slink || framework_failure
-printf %65536s x > 64k || framework_failure
-ln -s 64k slink-to-64k || framework_failure
+mkdir -p dir/a || framework_failure_
+ln -s dir slink || framework_failure_
+printf %65536s x > 64k || framework_failure_
+ln -s 64k slink-to-64k || framework_failure_

 du -D slink | sed 's/^[0-9][0-9]*	//' > out
diff --git a/tests/du/exclude b/tests/du/exclude
index 580454d..7403f5d 100755
--- a/tests/du/exclude
+++ b/tests/du/exclude
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ du

-mkdir -p a/b/c a/x/y a/u/v || framework_failure
+mkdir -p a/b/c a/x/y a/u/v || framework_failure_

 du --exclude=x a | sed 's/^[0-9][0-9]*	//' | sort > out || fail=1
diff --git a/tests/du/fd-leak b/tests/du/fd-leak
index 65933b2..ad744a8 100755
--- a/tests/du/fd-leak
+++ b/tests/du/fd-leak
@@ -34,7 +34,7 @@ for i in $x; do
 done

 # This may fail due to command line limitations.
-touch $f || framework_failure
+touch $f || framework_failure_

 # With coreutils-5.0, this would fail due to a file descriptor leak.
diff --git a/tests/du/inacc-dest b/tests/du/inacc-dest
index 73f5d66..fac7e0e 100755
--- a/tests/du/inacc-dest
+++ b/tests/du/inacc-dest
@@ -22,7 +22,7 @@ print_ver_ du
 skip_if_root_

 mkdir f && cd f && mkdir a b c d e && touch c/j && chmod a-x c \
-    || framework_failure
+    || framework_failure_

 du > ../t 2>&1 && fail=1

diff --git a/tests/du/inacc-dir b/tests/du/inacc-dir
index 2eb40dd..c160fbb 100755
--- a/tests/du/inacc-dir
+++ b/tests/du/inacc-dir
@@ -19,7 +19,7 @@
 print_ver_ du
 skip_if_root_

-mkdir -p a/sub || framework_failure
+mkdir -p a/sub || framework_failure_

 du -s a > exp || fail=1
diff --git a/tests/du/inaccessible-cwd b/tests/du/inaccessible-cwd
index 220ac7b..2f16782 100755
--- a/tests/du/inaccessible-cwd
+++ b/tests/du/inaccessible-cwd
@@ -25,9 +25,9 @@ print_ver_ du
 skip_if_root_

 cwd=`pwd`
-mkdir -p no-x a/b || framework_failure
-cd no-x || framework_failure
-chmod 0 . || framework_failure
+mkdir -p no-x a/b || framework_failure_
+cd no-x || framework_failure_
+chmod 0 . || framework_failure_

 du "$cwd/a" > /dev/null || fail=1
diff --git a/tests/du/long-from-unreadable b/tests/du/long-from-unreadable
index 92cd378..8523963 100755
--- a/tests/du/long-from-unreadable
+++ b/tests/du/long-from-unreadable
@@ -41,10 +41,10 @@ dir=`printf '%200s\n' ' '|tr ' ' x`
 # Construct a hierarchy containing a relative file with a name
 # longer than PATH_MAX.
 # for i in `seq 52`; do
-#   mkdir $dir || framework_failure
-#   cd $dir || framework_failure
+#   mkdir $dir || framework_failure_
+#   cd $dir || framework_failure_
 # done
-# cd $tmp || framework_failure
+# cd $tmp || framework_failure_

 # Sheesh.  Bash 3.1.5 can't create this hierarchy.  I get
 #   cd: error retrieving current directory: getcwd:
@@ -57,11 +57,11 @@ cwd=`pwd`
 $PERL \
     -e 'my $d = '$dir'; foreach my $i (1..52)' \
     -e '  { mkdir ($d, 0700) && chdir $d or die "$!" }' \
-  || framework_failure
+  || framework_failure_

-mkdir inaccessible || framework_failure
-cd inaccessible || framework_failure
-chmod 0 . || framework_failure
+mkdir inaccessible || framework_failure_
+cd inaccessible || framework_failure_
+chmod 0 . || framework_failure_

 du -s "$cwd/$dir" > /dev/null || fail=1

diff --git a/tests/du/long-sloop b/tests/du/long-sloop
index 1f46a4a..6c1d8d5 100755
--- a/tests/du/long-sloop
+++ b/tests/du/long-sloop
@@ -30,14 +30,14 @@ print_ver_ du
 n=400

 dir_list=`seq $n`
-mkdir $dir_list || framework_failure
+mkdir $dir_list || framework_failure_
 file=1
 i_minus_1=0
 for i in $dir_list `expr $n + 1`; do
   case $i_minus_1 in
   0) ;;
   *)
-    ln -s ../$i $i_minus_1/s || framework_failure
+    ln -s ../$i $i_minus_1/s || framework_failure_
     file=$file/s;;
   esac
   i_minus_1=$i
diff --git a/tests/du/move-dir-while-traversing b/tests/du/move-dir-while-traversing
index 68302b8..322a9a5 100755
--- a/tests/du/move-dir-while-traversing
+++ b/tests/du/move-dir-while-traversing
@@ -59,7 +59,7 @@ EOF
 chmod a+x inotify-watch-for-dir-access.py

 t=T/U
-mkdir d2 || framework_failure
+mkdir d2 || framework_failure_
 long=d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z
 # One iteration of this loop creates a tree with which
 # du sometimes completes its traversal before the above rename.
@@ -68,7 +68,7 @@ long=d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z
 # Using 10 iterations was not enough, either.
 # Using 30, I saw no failure in 200 trials.
 for i in $(seq 30); do
-  mkdir -p $t/3/a/b/c/$i/$long || framework_failure
+  mkdir -p $t/3/a/b/c/$i/$long || framework_failure_
 done

 # Prohibit suspension, which could otherwise cause a timeout-induced FP failure.
diff --git a/tests/du/no-deref b/tests/du/no-deref
index 2abad5f..09a1dcc 100755
--- a/tests/du/no-deref
+++ b/tests/du/no-deref
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ du

-mkdir -p dir/a/b || framework_failure
-ln -s dir slink || framework_failure
+mkdir -p dir/a/b || framework_failure_
+ln -s dir slink || framework_failure_

 du slink | sed 's/^[0-9][0-9]*	//' > out
diff --git a/tests/du/no-x b/tests/du/no-x
index de3417f..e45f317 100755
--- a/tests/du/no-x
+++ b/tests/du/no-x
@@ -21,8 +21,8 @@
 print_ver_ du
 skip_if_root_

-mkdir -p d/no-x/y || framework_failure
-chmod u=rw d/no-x || framework_failure
+mkdir -p d/no-x/y || framework_failure_
+chmod u=rw d/no-x || framework_failure_

 # This must exit nonzero.
diff --git a/tests/du/one-file-system b/tests/du/one-file-system
index b4c6318..8a57c99 100755
--- a/tests/du/one-file-system
+++ b/tests/du/one-file-system
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ du

-mkdir -p b/c y/z || framework_failure
+mkdir -p b/c y/z || framework_failure_

 # Due to a used-uninitialized variable, the "du -x" from coreutils-6.6
diff --git a/tests/du/restore-wd b/tests/du/restore-wd
index 032413a..01fa064 100755
--- a/tests/du/restore-wd
+++ b/tests/du/restore-wd
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ du

-mkdir a b || framework_failure
+mkdir a b || framework_failure_

 # With du from coreutils-4.5.5 and 4.5.6, this would fail with
diff --git a/tests/du/trailing-slash b/tests/du/trailing-slash
index 21045bd..7c97cce 100755
--- a/tests/du/trailing-slash
+++ b/tests/du/trailing-slash
@@ -22,8 +22,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ du

-mkdir -p dir/1/2 || framework_failure
-ln -s dir slink || framework_failure
+mkdir -p dir/1/2 || framework_failure_
+ln -s dir slink || framework_failure_

 du slink/ | sed 's/^[0-9][0-9]*	//' > out
diff --git a/tests/du/two-args b/tests/du/two-args
index 4f15d62..89a1461 100755
--- a/tests/du/two-args
+++ b/tests/du/two-args
@@ -23,11 +23,11 @@ print_ver_ du
 # Run this test from a sub-directory one level deeper than normal,
 # so that the "du .." below doesn't traverse sibling directories
 # that may be inaccessible due concurrently-running tests.
-mkdir sub || framework_failure
-cd sub || framework_failure
+mkdir sub || framework_failure_
+cd sub || framework_failure_

 t=t
-mkdir -p $t/1 $t/2 || framework_failure
+mkdir -p $t/1 $t/2 || framework_failure_

 test -d $t || fail=1
 du $t/1 $t/2 > /dev/null || fail=1
diff --git a/tests/init.cfg b/tests/init.cfg
index 60c5108..d60dd1f 100644
--- a/tests/init.cfg
+++ b/tests/init.cfg
@@ -4,9 +4,6 @@
 # TESTS_ENVIRONMENT definition.
 stderr_fileno_=9

-# FIXME: eventually, FIXME: s/(framework_failure)\>/${1}_/ and remove the
-# FIXME: definition of framework_failure below
-
 # Having an unsearchable directory in PATH causes execve to fail with EACCES
 # when applied to an unresolvable program name, contrary to the desired ENOENT.
 # Avoid the problem by rewriting PATH to exclude unsearchable directories.
@@ -52,7 +49,7 @@ require_acl_()

 is_local_dir_()
 {
-  test $# = 1 || framework_failure
+  test $# = 1 || framework_failure_
   df --local "$1" >/dev/null 2>&1
 }

@@ -108,7 +105,7 @@ require_readable_root_()
 # with the named syscall.  Usage: require_strace_ unlink
 require_strace_()
 {
-  test $# = 1 || framework_failure
+  test $# = 1 || framework_failure_

   strace -V < /dev/null > /dev/null 2>&1 ||
     skip_ 'no strace program'
@@ -265,13 +262,12 @@ require_root_()
 }

 skip_if_root_() { uid_is_privileged_ && skip_ "must be run as non-root"; }
-framework_failure() { fatal_ 'failure in testing framework'; }

 # Set `groups' to a space-separated list of at least two groups
 # of which the user is a member.
 require_membership_in_two_groups_()
 {
-  test $# = 0 || framework_failure
+  test $# = 0 || framework_failure_

   groups=${COREUTILS_GROUPS-`(id -G || /usr/xpg4/bin/id -G) 2>/dev/null`}
   case "$groups" in
@@ -326,7 +322,7 @@ require_dirent_d_type_()
 # Does the current (working-dir) file system support sparse files?
 require_sparse_support_()
 {
-  test $# = 0 || framework_failure
+  test $# = 0 || framework_failure_
   # Test whether we can create a sparse file.
   # For example, on Darwin6.5 with a file system of type hfs, it's not possible.
   # NTFS requires 128K before a hole appears in a sparse file.
@@ -342,7 +338,7 @@ require_sparse_support_()

 mkfifo_or_skip_()
 {
-  test $# = 1 || framework_failure
+  test $# = 1 || framework_failure_
   if ! mkfifo "$1"; then
     # Make an exception of this case -- usually we interpret framework-creation
     # failure as a test failure.  However, in this case, when running on a SunOS
@@ -369,12 +365,12 @@ skip_if_setgid_()

 skip_if_mcstransd_is_running_()
 {
-  test $# = 0 || framework_failure
+  test $# = 0 || framework_failure_

   # When mcstransd is running, you'll see only the 3-component
   # version of file-system context strings.  Detect that,
   # and if it's running, skip this test.
-  __ctx=$(stat --printf='%C\n' .) || framework_failure
+  __ctx=$(stat --printf='%C\n' .) || framework_failure_
   case $__ctx in
     *:*:*:*) ;; # four components is ok
     *) # anything else probably means mcstransd is running
diff --git a/tests/install/basic-1 b/tests/install/basic-1
index 688e6be..9863bec 100755
--- a/tests/install/basic-1
+++ b/tests/install/basic-1
@@ -23,9 +23,9 @@ skip_if_root_
 dir=dir
 file=file

-rm -rf $dir $file || framework_failure
-mkdir -p $dir || framework_failure
-echo foo > $file || framework_failure
+rm -rf $dir $file || framework_failure_
+mkdir -p $dir || framework_failure_
+echo foo > $file || framework_failure_

 ginstall $file $dir || fail=1
 # Make sure the source file still exists.
diff --git a/tests/install/install-C b/tests/install/install-C
index e66b74f..5adebde 100755
--- a/tests/install/install-C
+++ b/tests/install/install-C
@@ -25,11 +25,11 @@ mode2=0755
 mode3=2755

-echo test > a || framework_failure
-echo "\`a' -> \`b'" > out_installed_first || framework_failure
+echo test > a || framework_failure_
+echo "\`a' -> \`b'" > out_installed_first || framework_failure_
 echo "removed \`b'
-\`a' -> \`b'" > out_installed_second || framework_failure
-: > out_empty || framework_failure
+\`a' -> \`b'" > out_installed_second || framework_failure_
+: > out_empty || framework_failure_

 # destination file does not exist
 ginstall -Cv -m$mode1 a b > out || fail=1
@@ -54,22 +54,22 @@ ginstall -Cv -m$mode3 a b > out || fail=1
 compare out out_installed_second || fail=1

 # files are not regular files
-ln -s a c || framework_failure
-ln -s b d || framework_failure
+ln -s a c || framework_failure_
+ln -s b d || framework_failure_
 ginstall -Cv -m$mode1 c d > out || fail=1
 echo "removed \`d'
 \`c' -> \`d'" > out_installed_second_cd
 compare out out_installed_second_cd || fail=1

 # destination file exists but content differs
-echo test1 > a || framework_failure
+echo test1 > a || framework_failure_
 ginstall -Cv -m$mode1 a b > out || fail=1
 compare out out_installed_second || fail=1
 ginstall -Cv -m$mode1 a b > out || fail=1
 compare out out_empty || fail=1

 # destination file exists but content differs (same size)
-echo test2 > a || framework_failure
+echo test2 > a || framework_failure_
 ginstall -Cv -m$mode1 a b > out || fail=1
 compare out out_installed_second || fail=1
 ginstall -Cv -m$mode1 a b > out || fail=1
diff --git a/tests/install/install-C-root b/tests/install/install-C-root
index 743f80e..b46c418 100755
--- a/tests/install/install-C-root
+++ b/tests/install/install-C-root
@@ -27,7 +27,7 @@ g1=1
 g2=2

-echo test > a || framework_failure
+echo test > a || framework_failure_
 echo "\`a' -> \`b'" > out_installed_first
 echo "removed \`b'
 \`a' -> \`b'" > out_installed_second
diff --git a/tests/install/install-C-selinux b/tests/install/install-C-selinux
index 072297d..6437541 100755
--- a/tests/install/install-C-selinux
+++ b/tests/install/install-C-selinux
@@ -21,7 +21,7 @@ print_ver_ ginstall
 require_selinux_

-echo test > a || framework_failure
+echo test > a || framework_failure_
 chcon -u system_u a || skip_ "chcon doesn't work"

 echo "\`a' -> \`b'" > out_installed_first
diff --git a/tests/install/strip-program b/tests/install/strip-program
index d797179..0f1e9fa 100755
--- a/tests/install/strip-program
+++ b/tests/install/strip-program
@@ -21,11 +21,11 @@ print_ver_ ginstall

 working_umask_or_skip_

-cat <<EOF > b || framework_failure
+cat <<EOF > b || framework_failure_
 #!$PREFERABLY_POSIX_SHELL
 sed s/b/B/ \$1 > \$1.t && mv \$1.t \$1
 EOF
-chmod a+x b || framework_failure
+chmod a+x b || framework_failure_

 echo abc > src || fail=1
diff --git a/tests/ln/backup-1 b/tests/ln/backup-1
index 1dc72a7..6a123e3 100755
--- a/tests/ln/backup-1
+++ b/tests/ln/backup-1
@@ -22,7 +22,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ln

-touch a b || framework_failure
+touch a b || framework_failure_

 ln b b~ || fail=1
 ln -f --b=simple a b || fail=1
diff --git a/tests/ln/hard-backup b/tests/ln/hard-backup
index d3bed53..e6c9631 100755
--- a/tests/ln/hard-backup
+++ b/tests/ln/hard-backup
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ln

-touch f || framework_failure
+touch f || framework_failure_

 ln --backup f f 2> out && fail=1
diff --git a/tests/ln/hard-to-sym b/tests/ln/hard-to-sym
index 72d8e27..64626f4 100755
--- a/tests/ln/hard-to-sym
+++ b/tests/ln/hard-to-sym
@@ -22,7 +22,7 @@ print_ver_ ln

 # ===================================================
 # ensure -s silently overrides -L, -P
-touch a || framework_failure
+touch a || framework_failure_
 ln -L -s a symlink1 || fail=1
 ln -P -s symlink1 symlink2 || fail=1
 ln -s -L -P symlink2 symlink3 || fail=1
@@ -34,7 +34,7 @@ ls=`ls -lG hard-to-a`x
 case "$ls" in
   *'hard-to-ax') ;;
   *'hard-to-a -> '*x) fail=1 ;;
-  *) framework_failure ;;
+  *) framework_failure_ ;;
 esac

 # ===================================================
@@ -45,12 +45,12 @@ case "$ls" in
   *'hard-to-3 -> symlink2x') ;;
   *'hard-to-3x') fail=1 ;;
   *'hard-to-3 -> '*x) fail=1 ;;
-  *) framework_failure ;;
+  *) framework_failure_ ;;
 esac

 # ===================================================
 # Create a hard link to a dangling symlink.
-ln -s /no-such-dir || framework_failure
+ln -s /no-such-dir || framework_failure_
 ln -L no-such-dir hard-to-dangle 2>err && fail=1
 case `cat err` in
   *' accessing `no-such-dir'\':*) ;;
@@ -60,8 +60,8 @@ ln -P no-such-dir hard-to-dangle || fail=1

 # ===================================================
 # Create a hard link to a symlink to a directory.
-mkdir d || framework_failure
-ln -s d link-to-dir || framework_failure
+mkdir d || framework_failure_
+ln -s d link-to-dir || framework_failure_
 ln -L link-to-dir hard-to-dir-link 2>err && fail=1
 case `cat err` in
   *': `link-to-dir'\'': hard link not allowed for directory'*) ;;
diff --git a/tests/ln/misc b/tests/ln/misc
index 51e97d1..454c715 100755
--- a/tests/ln/misc
+++ b/tests/ln/misc
@@ -26,60 +26,60 @@ f=tln-file

 # Create a simple symlink with both source and destination files
 # in current directory.
-touch $f || framework_failure
-rm -f $t || framework_failure
+touch $f || framework_failure_
+rm -f $t || framework_failure_
 ln -s $f $t || fail=1
 test -f $t || fail=1
 rm $t $f

 # Create a symlink with source file and explicit destination directory/file.
-touch $f || framework_failure
-rm -rf $d || framework_failure
-mkdir $d || framework_failure
+touch $f || framework_failure_
+rm -rf $d || framework_failure_
+mkdir $d || framework_failure_
 ln -s ../$f $d/$t || fail=1
 test -f $d/$t || fail=1
 rm -rf $d $f

 # Create a symlink with source file and destination directory.
-touch $f || framework_failure
-rm -rf $d || framework_failure
-mkdir $d || framework_failure
+touch $f || framework_failure_
+rm -rf $d || framework_failure_
+mkdir $d || framework_failure_
 ln -s ../$f $d || fail=1
 test -f $d/$f || fail=1
 rm -rf $d $f

 # See whether a trailing slash is followed too far.
-touch $f || framework_failure
-rm -rf $d || framework_failure
-mkdir $d $d/$f || framework_failure
+touch $f || framework_failure_
+rm -rf $d || framework_failure_
+mkdir $d $d/$f || framework_failure_
 ln $f $d/ 2> /dev/null && fail=1
 ln -s $f $d/ 2> /dev/null && fail=1
 rm -rf $d $f

 # Make sure we get a failure with existing dest without -f option
-touch $t || framework_failure
+touch $t || framework_failure_
 # FIXME: don't ignore the error message but rather test
 # it to make sure it's the right one.
 ln -s $t $t 2> /dev/null && fail=1
 rm $t

 # Make sure -sf fails when src and dest are the same
-touch $t || framework_failure
+touch $t || framework_failure_
 ln -sf $t $t 2> /dev/null && fail=1
 rm $t

 # Create a symlink with source file and no explicit directory
-rm -rf $d || framework_failure
-mkdir $d || framework_failure
-touch $d/$f || framework_failure
+rm -rf $d || framework_failure_
+mkdir $d || framework_failure_
+touch $d/$f || framework_failure_
 ln -s $d/$f || fail=1
 test -f $f || fail=1
 rm -rf $d $f

 # Create a symlink with source file and destination symlink-to-directory.
-rm -rf $d $f $ld || framework_failure
-touch $f || framework_failure
-mkdir $d || framework_failure
+rm -rf $d $f $ld || framework_failure_
+touch $f || framework_failure_
+mkdir $d || framework_failure_
 ln -s $d $ld
 ln -s ../$f $ld || fail=1
 test -f $d/$f || fail=1
@@ -87,9 +87,9 @@ rm -rf $d $f $ld

 # Create a symlink with source file and destination symlink-to-directory.
 # BUT use the new --no-dereference option.
-rm -rf $d $f $ld || framework_failure
-touch $f || framework_failure
-mkdir $d || framework_failure
+rm -rf $d $f $ld || framework_failure_
+touch $f || framework_failure_
+mkdir $d || framework_failure_
 ln -s $d $ld
 af=`pwd`/$f
 ln --no-dereference -fs "$af" $ld || fail=1
@@ -98,8 +98,8 @@ rm -rf $d $f $ld

 # Try to create a symlink with backup where the destination file exists
 # and the backup file name is a hard link to the destination file.
-touch a b || framework_failure
-ln b b~ || framework_failure
+touch a b || framework_failure_
+ln b b~ || framework_failure_
 ln -f --b=simple a b || fail=1

 # ===================================================
@@ -108,7 +108,7 @@ ln -f --b=simple a b || fail=1
 # This was fixed in 4.0.34.  Broken in 4.0r.
 for cmd in ln cp mv ginstall; do
   rm -rf a x a.orig
-  touch a x || framework_failure
+  touch a x || framework_failure_
   $cmd --backup=simple --suffix=.orig x a || fail=1
   test -f a.orig || fail=1
 done
diff --git a/tests/ln/sf-1 b/tests/ln/sf-1
index d9e9123..db2b430 100755
--- a/tests/ln/sf-1
+++ b/tests/ln/sf-1
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ln

-echo foo > a || framework_failure
-ln -s . b || framework_failure
+echo foo > a || framework_failure_
+ln -s . b || framework_failure_

 ln -sf a b > err 2>&1 && fail=1
 case `cat err` in
diff --git a/tests/ln/slash-decorated-nonexistent-dest b/tests/ln/slash-decorated-nonexistent-dest
index 2923845..4716292 100755
--- a/tests/ln/slash-decorated-nonexistent-dest
+++ b/tests/ln/slash-decorated-nonexistent-dest
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ln

-touch f || framework_failure
+touch f || framework_failure_

 # Before coreutils-7.6, this would succeed on Solaris 10
diff --git a/tests/ln/target-1 b/tests/ln/target-1
index da37e31..3441ee0 100755
--- a/tests/ln/target-1
+++ b/tests/ln/target-1
@@ -24,7 +24,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ln

-mkdir d || framework_failure
+mkdir d || framework_failure_
 ln -s --target-dir=d ../f || fail=1

 Exit $fail
diff --git a/tests/ls/abmon-align b/tests/ls/abmon-align
index e2f8dc2..d581d8e 100755
--- a/tests/ls/abmon-align
+++ b/tests/ls/abmon-align
@@ -20,7 +20,7 @@
 print_ver_ ls

 for mon in $(seq -w 12); do
-    touch -d"+$mon month" $mon.ts || framework_failure
+    touch -d"+$mon month" $mon.ts || framework_failure_
 done

diff --git a/tests/ls/capability b/tests/ls/capability
index c4762c9..da61820 100755
--- a/tests/ls/capability
+++ b/tests/ls/capability
@@ -55,7 +55,7 @@ for ex in '' ex=:; do
 dir:
 \e[${code}mcap_neg\e[0m
 cap_pos
-" > out_ok || framework_failure
+" > out_ok || framework_failure_

   compare out out_ok || fail=1
 done
diff --git a/tests/ls/color-clear-to-eol b/tests/ls/color-clear-to-eol
index dc41e35..164b163 100755
--- a/tests/ls/color-clear-to-eol
+++ b/tests/ls/color-clear-to-eol
@@ -20,13 +20,13 @@
 print_ver_ ls

 long_name=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.foo
-touch $long_name || framework_failure
+touch $long_name || framework_failure_

 e='\33'
 color_code='0;31;42'
 c_pre="$e[0m$e[${color_code}m"
 c_post="$e[0m$e[K\n"
-printf "$c_pre$long_name$c_post\n" > exp || framework_failure
+printf "$c_pre$long_name$c_post\n" > exp || framework_failure_

 env TERM=xterm COLUMNS=80 LS_COLORS="*.foo=$color_code" TIME_STYLE=+T \
   ls -og --color=always $long_name > out || fail=1
diff --git a/tests/ls/color-dtype-dir b/tests/ls/color-dtype-dir
index 8f6b279..b677240 100755
--- a/tests/ls/color-dtype-dir
+++ b/tests/ls/color-dtype-dir
@@ -25,9 +25,9 @@ print_ver_ ls
 # Don't let a different umask perturb the results.
 umask 22

-mkdir d other-writable sticky || framework_failure
-chmod o+w other-writable || framework_failure
-chmod o+t sticky || framework_failure
+mkdir d other-writable sticky || framework_failure_
+chmod o+w other-writable || framework_failure_
+chmod o+t sticky || framework_failure_

 ls --color=always > out || fail=1
diff --git a/tests/ls/color-norm b/tests/ls/color-norm
index 20bc121..c869103 100755
--- a/tests/ls/color-norm
+++ b/tests/ls/color-norm
@@ -30,9 +30,9 @@ export TIME_STYLE="+norm"
 # helper to strip ls columns up to "norm" time
 qls() { sed 's/-r.*norm/norm/'; }

-touch exe || framework_failure
-chmod u+x exe || framework_failure
-touch nocolor || framework_failure
+touch exe || framework_failure_
+chmod u+x exe || framework_failure_
+touch nocolor || framework_failure_

 TCOLORS="no=7:ex=01;32"

@@ -58,10 +58,10 @@ LS_COLORS=$TCOLORS      ls -mFU --color nocolor exe       >> out || fail=1
 # Ensure no coloring is done unless enabled
 LS_COLORS=$TCOLORS      ls -gGU         nocolor exe | qls >> out || fail=1

-cat -A out > out.display || framework_failure
-mv out.display out || framework_failure
+cat -A out > out.display || framework_failure_
+mv out.display out || framework_failure_

-cat <<\EOF > exp || framework_failure
+cat <<\EOF > exp || framework_failure_
 ^[[0m^[[7mnorm ^[[m^[[01;32mexe^[[0m$
 ^[[7mnorm nocolor^[[0m$
 ^[[0m^[[7m^[[m^[[01;32mexe^[[0m  ^[[7mnocolor^[[0m$
diff --git a/tests/ls/dangle b/tests/ls/dangle
index 2f722de..35035fe 100755
--- a/tests/ls/dangle
+++ b/tests/ls/dangle
@@ -19,13 +19,13 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-ln -s no-such-file dangle || framework_failure
-mkdir -p dir/sub || framework_failure
-ln -s dir slink-to-dir || framework_failure
-mkdir d || framework_failure
-ln -s no-such d/dangle || framework_failure
-printf '? dangle\n' > subdir_Li_exp || framework_failure
-printf 'total 0\n? dangle\n' > subdir_Ls_exp || framework_failure
+ln -s no-such-file dangle || framework_failure_
+mkdir -p dir/sub || framework_failure_
+ln -s dir slink-to-dir || framework_failure_
+mkdir d || framework_failure_
+ln -s no-such d/dangle || framework_failure_
+printf '? dangle\n' > subdir_Li_exp || framework_failure_
+printf 'total 0\n? dangle\n' > subdir_Ls_exp || framework_failure_

 # This must exit nonzero.
diff --git a/tests/ls/dired b/tests/ls/dired
index 076ee7a..18cd1ea 100755
--- a/tests/ls/dired
+++ b/tests/ls/dired
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-mkdir dir || framework_failure
+mkdir dir || framework_failure_

 LC_MESSAGES=C ls -lR --dired dir > out || fail=1
diff --git a/tests/ls/follow-slink b/tests/ls/follow-slink
index 0715d69..cb4922b 100755
--- a/tests/ls/follow-slink
+++ b/tests/ls/follow-slink
@@ -20,15 +20,15 @@
 print_ver_ ls

 # Isolate output files from directory being listed
-mkdir dir dir/sub dir1 || framework_failure
-cd dir || framework_failure
-ln -s link link || framework_failure
-ln -s ../../dir1 sub/link-to-dir || framework_failure
+mkdir dir dir/sub dir1 || framework_failure_
+cd dir || framework_failure_
+ln -s link link || framework_failure_
+ln -s ../../dir1 sub/link-to-dir || framework_failure_

 # Make sure the symlink was created.
 # `ln -s link link' succeeds, but creates no file on
 # systems running some DJGPP-2.03 libc.
-ls -F link > /dev/null || framework_failure
+ls -F link > /dev/null || framework_failure_

 # When explicitly listing a broken link, the command must fail.
diff --git a/tests/ls/infloop b/tests/ls/infloop
index e994de9..34d9633 100755
--- a/tests/ls/infloop
+++ b/tests/ls/infloop
@@ -20,15 +20,15 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-mkdir loop || framework_failure
-ln -s ../loop loop/sub || framework_failure
+mkdir loop || framework_failure_
+ln -s ../loop loop/sub || framework_failure_

-cat <<\EOF > exp-out || framework_failure
+cat <<\EOF > exp-out || framework_failure_
 loop:
 sub
 EOF

-cat <<\EOF > exp-err || framework_failure
+cat <<\EOF > exp-err || framework_failure_
 ls: loop/sub: not listing already-listed directory
 EOF

diff --git a/tests/ls/inode b/tests/ls/inode
index b570fec..7b28640 100755
--- a/tests/ls/inode
+++ b/tests/ls/inode
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-touch f || framework_failure
-ln -s f slink || framework_failure
+touch f || framework_failure_
+ln -s f slink || framework_failure_

 # When listed explicitly:
diff --git a/tests/ls/m-option b/tests/ls/m-option
index e0dd447..2e6ec03 100755
--- a/tests/ls/m-option
+++ b/tests/ls/m-option
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-seq 2000 > b || framework_failure
-touch a || framework_failure
+seq 2000 > b || framework_failure_
+touch a || framework_failure_

 # Before coreutils-5.1.1, the following would output a space after the comma.
diff --git a/tests/ls/multihardlink b/tests/ls/multihardlink
index a9d31f4..4a59000 100755
--- a/tests/ls/multihardlink
+++ b/tests/ls/multihardlink
@@ -20,7 +20,7 @@
 print_ver_ ls
 working_umask_or_skip_

-touch file file1 || framework_failure
+touch file file1 || framework_failure_
 ln file1 file2 || skip_ "can't create hard link"
 code_mh='44;37'
 code_ex='01;32'
@@ -32,33 +32,33 @@ c_png=$(printf '\033[%sm' $code_png)

 # regular file - not hard linked
 LS_COLORS="mh=$code_mh" ls -U1 --color=always file > out || fail=1
-printf "file\n" > out_ok || framework_failure
+printf "file\n" > out_ok || framework_failure_
 compare out out_ok || fail=1

 # hard links
 LS_COLORS="mh=$code_mh" ls -U1 --color=always file1 file2 > out || fail=1
 printf "$c0${c_mh}file1$c0
 ${c_mh}file2$c0
-" > out_ok || framework_failure
+" > out_ok || framework_failure_
 compare out out_ok || fail=1

 # hard links and png (hard link coloring takes precedence)
-mv file2 file2.png || framework_failure
+mv file2 file2.png || framework_failure_
 LS_COLORS="mh=$code_mh:*.png=$code_png" ls -U1 --color=always file1 file2.png \
   > out || fail=1
 printf "$c0${c_mh}file1$c0
 ${c_mh}file2.png$c0
-" > out_ok || framework_failure
+" > out_ok || framework_failure_
 compare out out_ok || fail=1

 # hard links and exe (exe coloring takes precedence)
-chmod a+x file2.png || framework_failure
+chmod a+x file2.png || framework_failure_
 LS_COLORS="mh=$code_mh:*.png=$code_png:ex=$code_ex" \
   ls -U1 --color=always file1 file2.png > out || fail=1
-chmod a-x file2.png || framework_failure
+chmod a-x file2.png || framework_failure_
 printf "$c0${c_ex}file1$c0
 ${c_ex}file2.png$c0
-" > out_ok || framework_failure
+" > out_ok || framework_failure_
 compare out out_ok || fail=1

 # hard links and png (hard link coloring disabled => png coloring enabled)
@@ -66,7 +66,7 @@ LS_COLORS="mh=00:*.png=$code_png" ls -U1 --color=always file1 file2.png > out \
   || fail=1
 printf "file1
 $c0${c_png}file2.png$c0
-" > out_ok || framework_failure
+" > out_ok || framework_failure_
 compare out out_ok || fail=1

 # hard links and png (hard link coloring not enabled explicitly => png coloring)
@@ -74,7 +74,7 @@ LS_COLORS="*.png=$code_png" ls -U1 --color=always file1 file2.png > out \
   || fail=1
 printf "file1
 $c0${c_png}file2.png$c0
-" > out_ok || framework_failure
+" > out_ok || framework_failure_
 compare out out_ok || fail=1

 Exit $fail
diff --git a/tests/ls/nameless-uid b/tests/ls/nameless-uid
index a0de6ce..4952103 100755
--- a/tests/ls/nameless-uid
+++ b/tests/ls/nameless-uid
@@ -32,8 +32,8 @@ if test x$nameless_uid = x; then
   skip_ "couldn't find a nameless UID"
 fi

-touch f || framework_failure
-chown $nameless_uid f || framework_failure
+touch f || framework_failure_
+chown $nameless_uid f || framework_failure_

 set -- `ls -o f` || fail=1
diff --git a/tests/ls/no-arg b/tests/ls/no-arg
index 5e26114..f61846b 100755
--- a/tests/ls/no-arg
+++ b/tests/ls/no-arg
@@ -19,11 +19,11 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-mkdir -p dir/subdir || framework_failure
-touch dir/subdir/file2 || framework_failure
-ln -s f symlink || framework_failure
+mkdir -p dir/subdir || framework_failure_
+touch dir/subdir/file2 || framework_failure_
+ln -s f symlink || framework_failure_

-cat > exp <<\EOF || framework_failure
+cat > exp <<\EOF || framework_failure_
 dir
 exp
 out
diff --git a/tests/ls/recursive b/tests/ls/recursive
index 4e42890..677b5fd 100755
--- a/tests/ls/recursive
+++ b/tests/ls/recursive
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-mkdir x y a b c a/1 a/2 a/3 || framework_failure
-touch f a/1/I a/1/II || framework_failure
+mkdir x y a b c a/1 a/2 a/3 || framework_failure_
+touch f a/1/I a/1/II || framework_failure_

 # This first example is from Andreas Schwab's bug report.
diff --git a/tests/ls/rt-1 b/tests/ls/rt-1
index f546c9e..05d2a03 100755
--- a/tests/ls/rt-1
+++ b/tests/ls/rt-1
@@ -21,9 +21,9 @@ print_ver_ ls touch

 date=1998-01-15

-touch -d "$date" c || framework_failure
-touch -d "$date" a || framework_failure
-touch -d "$date" b || framework_failure
+touch -d "$date" c || framework_failure_
+touch -d "$date" a || framework_failure_
+touch -d "$date" b || framework_failure_

 ls -1t a b c > out || fail=1
diff --git a/tests/ls/stat-dtype b/tests/ls/stat-dtype
index dfa2dd5..8ee9434 100755
--- a/tests/ls/stat-dtype
+++ b/tests/ls/stat-dtype
@@ -27,18 +27,18 @@ print_ver_ ls
 # Skip this test unless "." is on a file system with useful d_type info.
 # FIXME: This uses "ls -p" to decide whether to test "ls" with other options,
 # but if ls's d_type code is buggy then "ls -p" might be buggy too.
-mkdir -p c/d || framework_failure
-chmod a-x c || framework_failure
+mkdir -p c/d || framework_failure_
+chmod a-x c || framework_failure_
 if test "X`ls -p c 2>&1`" != Xd/; then
   skip_ "'.' is not on a suitable file system for this test"
 fi

-mkdir d || framework_failure
-ln -s / d/s || framework_failure
-chmod 600 d || framework_failure
+mkdir d || framework_failure_
+ln -s / d/s || framework_failure_
+chmod 600 d || framework_failure_

-mkdir -p e/a2345 e/b || framework_failure
-chmod 600 e || framework_failure
+mkdir -p e/a2345 e/b || framework_failure_
+chmod 600 e || framework_failure_

 ls --file-type d > out || fail=1
diff --git a/tests/ls/stat-failed b/tests/ls/stat-failed
index 3ce9413..5a22c7b 100755
--- a/tests/ls/stat-failed
+++ b/tests/ls/stat-failed
@@ -21,9 +21,9 @@
 print_ver_ ls
 skip_if_root_

-mkdir d || framework_failure
-ln -s / d/s || framework_failure
-chmod 600 d || framework_failure
+mkdir d || framework_failure_
+ln -s / d/s || framework_failure_
+chmod 600 d || framework_failure_

 ls -Log d > out
diff --git a/tests/ls/stat-free-symlinks b/tests/ls/stat-free-symlinks
index 21f5c12..ab20119 100755
--- a/tests/ls/stat-free-symlinks
+++ b/tests/ls/stat-free-symlinks
@@ -20,9 +20,9 @@
 print_ver_ ls
 require_strace_ stat

-touch x || framework_failure
-chmod a+x x || framework_failure
-ln -s x link-to-x || framework_failure
+touch x || framework_failure_
+chmod a+x x || framework_failure_
+ln -s x link-to-x || framework_failure_

 # ls from coreutils 6.9 would unnecessarily stat a symlink in an unusual case:
diff --git a/tests/ls/symlink-slash b/tests/ls/symlink-slash
index b74e8d1..d70e4cd 100755
--- a/tests/ls/symlink-slash
+++ b/tests/ls/symlink-slash
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-mkdir dir || framework_failure
-ln -s dir symlink || framework_failure
+mkdir dir || framework_failure_
+ln -s dir symlink || framework_failure_

 set `ls -l symlink/`

diff --git a/tests/ls/x-option b/tests/ls/x-option
index 1bd152a..7a451f5 100755
--- a/tests/ls/x-option
+++ b/tests/ls/x-option
@@ -19,9 +19,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ ls

-mkdir subdir || framework_failure
-touch subdir/b || framework_failure
-touch subdir/a || framework_failure
+mkdir subdir || framework_failure_
+touch subdir/b || framework_failure_
+touch subdir/a || framework_failure_

 # Coreutils 6.8 and 6.9 would output this in the wrong order.
diff --git a/tests/misc/chcon b/tests/misc/chcon
index 4e36ece..0f367ef 100755
--- a/tests/misc/chcon
+++ b/tests/misc/chcon
@@ -22,8 +22,8 @@ require_root_
 require_selinux_
 skip_if_mcstransd_is_running_

-mkdir -p d/sub/s2 || framework_failure
-touch f g d/sub/1 d/sub/2 || framework_failure
+mkdir -p d/sub/s2 || framework_failure_
+touch f g d/sub/1 d/sub/2 || framework_failure_

 # Set to a specified context.
diff --git a/tests/misc/env b/tests/misc/env
index d5e4fd6..a721795 100755
--- a/tests/misc/env
+++ b/tests/misc/env
@@ -31,7 +31,7 @@ test -s out && fail=1
 env -u a -i -u a -- > out || fail=1
 test -s out && fail=1
 env -i -- a=b > out || fail=1
-echo a=b > exp || framework_failure
+echo a=b > exp || framework_failure_
 compare exp out || fail=1

 # These tests verify exact status of internal failure.
@@ -62,20 +62,20 @@ fi

 ENV_TEST1=a
 export ENV_TEST1
-: >out || framework_failure
+: >out || framework_failure_
 env ENV_TEST2= > all || fail=1
-grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure
+grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure_
 env -u ENV_TEST1 ENV_TEST3=c > all || fail=1
-grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure
+grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure_
 env ENV_TEST1=b > all || fail=1
-grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure
+grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure_
 env ENV_TEST2= env > all || fail=1
-grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure
+grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure_
 env -u ENV_TEST1 ENV_TEST3=c env > all || fail=1
-grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure
+grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure_
 env ENV_TEST1=b env > all || fail=1
-grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure
-cat <<EOF >exp || framework_failure
+grep '^ENV_TEST' all | LC_ALL=C sort >> out || framework_failure_
+cat <<EOF >exp || framework_failure_
 ENV_TEST1=a
 ENV_TEST2=
 ENV_TEST3=c
@@ -88,12 +88,12 @@ EOF
 compare exp out || fail=1

 # PATH modifications affect exec.
-mkdir unlikely_name || framework_failure
-cat <<EOF > unlikely_name/also_unlikely || framework_failure
+mkdir unlikely_name || framework_failure_
+cat <<EOF > unlikely_name/also_unlikely || framework_failure_
 #!/bin/sh
 echo pass
 EOF
-chmod +x unlikely_name/also_unlikely || framework_failure
+chmod +x unlikely_name/also_unlikely || framework_failure_
 env also_unlikely && fail=1
 test x`PATH=$PATH:unlikely_name env also_unlikely` = xpass || fail=1
 test x`env PATH="$PATH":unlikely_name also_unlikely` = xpass || fail=1
@@ -107,7 +107,7 @@ export PATH
 # '/bin/sh -i', rather than '/bin/sh -- -i', which doesn't do what we want.
 # Avoid the issue by using an executable rather than a script.
 # Test -u, rather than -i, to minimize PATH problems.
-ln -s "$abs_top_builddir/src/echo" ./-u || framework_failure
+ln -s "$abs_top_builddir/src/echo" ./-u || framework_failure_
 case `env -u echo echo good` in
   good) ;;
   *) fail=1 ;;
@@ -124,18 +124,18 @@ esac
 # After options have ended, the first argument not containing = is a program.
 env a=b -- true
 test $? = 127 || fail=1
-ln -s "$abs_top_builddir/src/echo" ./-- || framework_failure
+ln -s "$abs_top_builddir/src/echo" ./-- || framework_failure_
 case `env a=b -- true || echo fail` in
   true) ;;
   *) fail=1 ;;
 esac

 # No way to directly invoke program name containing =.
-cat <<EOF >./c=d || framework_failure
+cat <<EOF >./c=d || framework_failure_
 #!/bin/sh
 echo pass
 EOF
-chmod +x c=d || framework_failure
+chmod +x c=d || framework_failure_
 test "x`env c=d echo fail`" = xfail || fail=1
 test "x`env -- c=d echo fail`" = xfail || fail=1
 test "x`env ./c=d echo fail`" = xfail || fail=1
diff --git a/tests/misc/env-null b/tests/misc/env-null
index b5b6418..2480e72 100755
--- a/tests/misc/env-null
+++ b/tests/misc/env-null
@@ -43,12 +43,12 @@ test $? = 125 || fail=1
 test -s out && fail=1

 # Test env -0 on a one-variable environment.
-printf 'a=b\nc=\0' > exp || framework_failure
+printf 'a=b\nc=\0' > exp || framework_failure_
 env -i -0 "$(printf 'a=b\nc=')" > out || fail=1
 compare exp out || fail=1

 # Test printenv -0 on particular values.
-printf 'b\nc=\0' > exp || framework_failure
+printf 'b\nc=\0' > exp || framework_failure_
 env "$(printf 'a=b\nc=')" printenv -0 a > out || fail=1
 compare exp out || fail=1
 env -u a printenv -0 a > out
diff --git a/tests/misc/fmt-long-line b/tests/misc/fmt-long-line
index 6f36173..4d424c0 100755
--- a/tests/misc/fmt-long-line
+++ b/tests/misc/fmt-long-line
@@ -19,9 +19,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ fmt

-printf '%2030s\n' ' '|sed 's/../ y/g' > in || framework_failure
+printf '%2030s\n' ' '|sed 's/../ y/g' > in || framework_failure_

-cat <<\EOF > exp || framework_failure
+cat <<\EOF > exp || framework_failure_
  y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
  y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
  y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y
diff --git a/tests/misc/head-c b/tests/misc/head-c
index 7217904..468aee2 100755
--- a/tests/misc/head-c
+++ b/tests/misc/head-c
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ head

-echo abc > in || framework_failure
+echo abc > in || framework_failure_

 (head -c1; head -c1) < in > out || fail=1
 case "`cat out`" in
diff --git a/tests/misc/head-pos b/tests/misc/head-pos
index 222755a..79e2a43 100755
--- a/tests/misc/head-pos
+++ b/tests/misc/head-pos
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ head

-(echo a; echo b) > in || framework_failure
+(echo a; echo b) > in || framework_failure_

 (head -n 1 >/dev/null; cat) < in > out || fail=1
 cat <<EOF > exp
diff --git a/tests/misc/ls-time b/tests/misc/ls-time
index 2417808..333be75 100755
--- a/tests/misc/ls-time
+++ b/tests/misc/ls-time
@@ -32,15 +32,15 @@ u1='1998-01-14 11:00'
 u2='1998-01-14 12:00'
 u3='1998-01-14 13:00'

-touch -m -d "$t3" a || framework_failure
-touch -m -d "$t2" b || framework_failure
-touch -m -d "$t1" c || framework_failure
+touch -m -d "$t3" a || framework_failure_
+touch -m -d "$t2" b || framework_failure_
+touch -m -d "$t1" c || framework_failure_

-touch -a -d "$u3" c || framework_failure
-touch -a -d "$u2" b || framework_failure
+touch -a -d "$u3" c || framework_failure_
+touch -a -d "$u2" b || framework_failure_
 # Make sure A has ctime at least 1 second more recent than C's.
 sleep 2
-touch -a -d "$u1" a || framework_failure
+touch -a -d "$u1" a || framework_failure_

 # A has ctime more recent than C.
@@ -52,7 +52,7 @@ test "$*" = 'a c' || fail=1
 sleep 2

 # Create a link, updating c's ctime.
-ln c d || framework_failure
+ln c d || framework_failure_

 # Before we go any further, verify that touch's -m option works.
 set -- `ls --full -l a`
@@ -69,7 +69,7 @@ have been $t3.
 EOF
   #`
   ls --full -l a
-  framework_failure
+  framework_failure_
   ;;
 esac

diff --git a/tests/misc/nice b/tests/misc/nice
index f63a28e..1212381 100755
--- a/tests/misc/nice
+++ b/tests/misc/nice
@@ -74,7 +74,7 @@ if test x`nice -n -1 nice 2> /dev/null` = x0 ; then
   # unprivileged user - warn about failure to change
   nice -n -1 true 2> err || fail=1
   test -s err || fail=1
-  mv err exp || framework_failure
+  mv err exp || framework_failure_
   nice --1 true 2> err || fail=1
   compare exp err || fail=1
   # Failure to write advisory message is fatal.  Buggy through coreutils 8.0.
diff --git a/tests/misc/od-N b/tests/misc/od-N
index 6efe853..2aa2106 100755
--- a/tests/misc/od-N
+++ b/tests/misc/od-N
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ od

-echo abcdefg > in || framework_failure
+echo abcdefg > in || framework_failure_

 (od -An -N3 -c; od -An -N3 -c) < in > out
diff --git a/tests/misc/od-float b/tests/misc/od-float
index 437bd87..0daea12 100755
--- a/tests/misc/od-float
+++ b/tests/misc/od-float
@@ -29,7 +29,7 @@ export LC_ALL=C
 # on x86: sometimes there was no space between the columns.

 set x $(echo aaaabaaa | tr ab '\376\377' | od -t fF) ||
-  framework_failure
+  framework_failure_
 case "$*" in
 *0-*) fail=1;;
 esac
@@ -38,7 +38,7 @@ case $3,$4 in
 esac

 set x $(echo aaaaaaaabaaaaaaa | tr ab '\376\377' | od -t fD) ||
-  framework_failure
+  framework_failure_
 case "$*" in
 *0-*) fail=1;;
 esac
@@ -47,7 +47,7 @@ case $3,$4 in
 esac

 set x $(echo aaaaaaaaaaaaaaaabaaaaaaaaaaaaaaa | tr ab '\376\377' | od -t fL) ||
-  framework_failure
+  framework_failure_
 case "$*" in
 *0-*) fail=1;;
 esac
diff --git a/tests/misc/od-multiple-t b/tests/misc/od-multiple-t
index 30af78f..4f86987 100755
--- a/tests/misc/od-multiple-t
+++ b/tests/misc/od-multiple-t
@@ -22,8 +22,8 @@ print_ver_ od

 # Choose 48 bytes for the input, as that is lcm for 1, 2, 4, 8, 12, 16;
 # we don't anticipate any other native object size on modern hardware.
-seq 19 > in || framework_failure
-test `wc -c < in` -eq 48 || framework_failure
+seq 19 > in || framework_failure_
+test `wc -c < in` -eq 48 || framework_failure_

 list='a c dC dS dI dL oC oS oI oL uC uS uI uL xC xS xI xL fF fD fL'
diff --git a/tests/misc/od-x8 b/tests/misc/od-x8
index 4936109..b66269f 100755
--- a/tests/misc/od-x8
+++ b/tests/misc/od-x8
@@ -23,7 +23,7 @@ print_ver_ od
 od -t x8 /dev/null >/dev/null ||
   skip_ "od lacks support for 8-byte quantities"

-echo abcdefgh |tr -d '\n' > in || framework_failure
+echo abcdefgh |tr -d '\n' > in || framework_failure_

 od -An -t x8 in > out-raw || fail=1
diff --git a/tests/misc/pathchk1 b/tests/misc/pathchk1
index 91d8777..23649d3 100755
--- a/tests/misc/pathchk1
+++ b/tests/misc/pathchk1
@@ -20,7 +20,7 @@
 print_ver_ pathchk
 skip_if_root_

-touch file || framework_failure
+touch file || framework_failure_

 # This should exit nonzero.  Before 2.0.13, it gave a diagnostic,
diff --git a/tests/misc/printenv b/tests/misc/printenv
index 607914c..a13a139 100755
--- a/tests/misc/printenv
+++ b/tests/misc/printenv
@@ -23,7 +23,7 @@ print_ver_ printenv
 # printenv as a builtin, so we must invoke it via "env".
 # But beware of $_, set by many shells to the last command run.
 # Also, filter out LD_PRELOAD, which is set when running under valgrind.
-env | grep -Ev '^(_|LD_PRELOAD=)' > exp || framework_failure
+env | grep -Ev '^(_|LD_PRELOAD=)' > exp || framework_failure_
 env -- printenv | grep -Ev '^(_|LD_PRELOAD=)' > out || fail=1
 compare exp out || fail=1

@@ -38,7 +38,7 @@ fi
 env -- printenv ENV_TEST > out
 test $? = 1 || fail=1
 test -s out && fail=1
-echo a > exp || framework_failure
+echo a > exp || framework_failure_
 ENV_TEST=a env -- printenv ENV_TEST > out || fail=1
 compare exp out || fail=1

@@ -46,7 +46,7 @@ compare exp out || fail=1
 ENV_TEST1=a ENV_TEST2=b env -- printenv ENV_TEST2 ENV_TEST1 ENV_TEST2 > out \
   || fail=1
 ENV_TEST1=a ENV_TEST2=b env -- printenv ENV_TEST1 ENV_TEST2 >> out || fail=1
-cat <<EOF > exp || framework_failure
+cat <<EOF > exp || framework_failure_
 b
 a
 b
@@ -60,7 +60,7 @@ ENV_TEST1=a env -- printenv ENV_TEST2 ENV_TEST1 > out
 test $? = 1 || fail=1
 ENV_TEST1=a env -- printenv ENV_TEST1 ENV_TEST2 >> out
 test $? = 1 || fail=1
-cat <<EOF > exp || framework_failure
+cat <<EOF > exp || framework_failure_
 a
 a
 EOF
@@ -68,7 +68,7 @@ compare exp out || fail=1

 # Non-standard environment variable name.  Shells won't create it, but
 # env can, and printenv must be able to deal with it.
-echo b > exp || framework_failure
+echo b > exp || framework_failure_
 env -- -a=b printenv -- -a > out || fail=1
 compare exp out || fail=1

diff --git a/tests/misc/ptx-overrun b/tests/misc/ptx-overrun
index 0f412d1..d4f8d0a 100755
--- a/tests/misc/ptx-overrun
+++ b/tests/misc/ptx-overrun
@@ -22,7 +22,7 @@ print_ver_ ptx
 # Using a long file name makes an abort more likely.
 # Even with no file name, valgrind detects the buffer overrun.
 f=01234567890123456789012345678901234567890123456789
-touch $f empty || framework_failure
+touch $f empty || framework_failure_

 # Specifying a regular expression ending in a lone backslash
diff --git a/tests/misc/pwd-option b/tests/misc/pwd-option
index c900493..708401f 100755
--- a/tests/misc/pwd-option
+++ b/tests/misc/pwd-option
@@ -19,16 +19,16 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ pwd

-mkdir -p a/b || framework_failure
-ln -s a/b c || framework_failure
+mkdir -p a/b || framework_failure_
+ln -s a/b c || framework_failure_
 base=$(env -- pwd)

 # Remove any logical paths from $PWD.
-cd "$base" || framework_failure
-test "x$PWD" = "x$base" || framework_failure
+cd "$base" || framework_failure_
+test "x$PWD" = "x$base" || framework_failure_

 # Enter a logical directory.
-cd c || framework_failure
+cd c || framework_failure_
 test "x$PWD" = "x$base/c" || skip_ "cd does not properly update \$PWD"

 env -- pwd -L > out || fail=1
diff --git a/tests/misc/readlink-fp-loop b/tests/misc/readlink-fp-loop
index 37d4092..1c50d6a 100755
--- a/tests/misc/readlink-fp-loop
+++ b/tests/misc/readlink-fp-loop
@@ -25,11 +25,11 @@ cwd=$("$abs_top_builddir/src/pwd")
 # two different times with no actual loop.  In addition, arrange
 # so that the second and fourth calls to readlink operate on S.

-ln -s s p        || framework_failure
-ln -s d s        || framework_failure
-mkdir d          || framework_failure
-echo 2 > d/2     || framework_failure
-ln -s ../s/2 d/1 || framework_failure
+ln -s s p        || framework_failure_
+ln -s d s        || framework_failure_
+mkdir d          || framework_failure_
+echo 2 > d/2     || framework_failure_
+ln -s ../s/2 d/1 || framework_failure_

 # With coreutils-6.9, this would fail with ELOOP.
 readlink -v -e p/1 > out || fail=1
@@ -38,7 +38,7 @@ echo "$cwd/d/2" > exp || fail=1
 compare out exp || fail=1

 # Construct a real loop and make sure readlink still detects it.
-ln -sf ../s/1 d/2 || framework_failure
+ln -sf ../s/1 d/2 || framework_failure_
 readlink -v -e p/1 2> out && fail=1
 readlink_msg=$(cat out)
 case $readlink_msg in
@@ -48,13 +48,13 @@ esac
 symlink_loop_msg=${readlink_msg#'readlink: p/1: '}

 # Exercise the hash table code.
-ln -nsf ../s/3 d/2 || framework_failure
-ln -nsf ../p/4 d/3 || framework_failure
-ln -nsf ../p/5 d/4 || framework_failure
-ln -nsf ../p/6 d/5 || framework_failure
-ln -nsf ../p/7 d/6 || framework_failure
-ln -nsf ../p/8 d/7 || framework_failure
-echo x > d/8       || framework_failure
+ln -nsf ../s/3 d/2 || framework_failure_
+ln -nsf ../p/4 d/3 || framework_failure_
+ln -nsf ../p/5 d/4 || framework_failure_
+ln -nsf ../p/6 d/5 || framework_failure_
+ln -nsf ../p/7 d/6 || framework_failure_
+ln -nsf ../p/8 d/7 || framework_failure_
+echo x > d/8       || framework_failure_
 readlink -v -e p/1 > out || fail=1
 echo "$cwd/d/8" > exp || fail=1
 compare out exp || fail=1
@@ -62,7 +62,7 @@ compare out exp || fail=1
 # A trivial loop
 ln -s loop loop
 readlink -v -e loop 2> out && fail=1
-echo "readlink: loop: $symlink_loop_msg" > exp || framework_failure
+echo "readlink: loop: $symlink_loop_msg" > exp || framework_failure_
 compare out exp || fail=1

 Exit $fail
diff --git a/tests/misc/runcon-no-reorder b/tests/misc/runcon-no-reorder
index dd2c3e6..7a48256 100755
--- a/tests/misc/runcon-no-reorder
+++ b/tests/misc/runcon-no-reorder
@@ -20,7 +20,7 @@
 print_ver_ runcon

 diag='runcon: runcon may be used only on a SELinux kernel'
-echo "$diag" > exp || framework_failure
+echo "$diag" > exp || framework_failure_

 # This test works even on systems without SELinux.
diff --git a/tests/misc/selinux b/tests/misc/selinux
index df3cb3e..f5961be 100755
--- a/tests/misc/selinux
+++ b/tests/misc/selinux
@@ -24,8 +24,8 @@ require_selinux_
 skip_if_mcstransd_is_running_

 # Create a regular file, dir, fifo.
-touch f || framework_failure
-mkdir d s1 s2 || framework_failure
+touch f || framework_failure_
+mkdir d s1 s2 || framework_failure_
 mkfifo_or_skip_ p

diff --git a/tests/misc/shred-passes b/tests/misc/shred-passes
index 9930b3a..fd95320 100755
--- a/tests/misc/shred-passes
+++ b/tests/misc/shred-passes
@@ -22,14 +22,14 @@ print_ver_ shred

 # shred a single letter, zero length file which should result in
 # 3 random passes and a single rename.
-touch f || framework_failure
+touch f || framework_failure_
 echo "\
 shred: f: pass 1/3 (random)...
 shred: f: pass 2/3 (random)...
 shred: f: pass 3/3 (random)...
 shred: f: removing
 shred: f: renamed to 0
-shred: f: removed" > exp || framework_failure
+shred: f: removed" > exp || framework_failure_

 shred -v -u f 2>out || fail=1
diff --git a/tests/misc/shred-remove b/tests/misc/shred-remove
index 0b89f00..4abf836 100755
--- a/tests/misc/shred-remove
+++ b/tests/misc/shred-remove
@@ -24,8 +24,8 @@ skip_if_root_
 # In this case, shred would try to rename the file 256^10 times
 # before terminating.
 file=0123456789
-touch $file || framework_failure
-chmod u-w $file || framework_failure
+touch $file || framework_failure_
+chmod u-w $file || framework_failure_

 # This would take so long that it appears to infloop
diff --git a/tests/misc/shuf b/tests/misc/shuf
index 10d2858..8adb1d4 100755
--- a/tests/misc/shuf
+++ b/tests/misc/shuf
@@ -20,7 +20,7 @@
 print_ver_ shuf
 getlimits_

-seq 100 > in || framework_failure
+seq 100 > in || framework_failure_

 shuf in >out || fail=1

@@ -49,7 +49,7 @@ seq 1860 | shuf > /dev/null || fail=1

 # coreutils-6.12 and earlier would output a newline terminator, not \0.
 shuf --zero-terminated -i 1-1 > out || fail=1
-printf '1\0' > exp || framework_failure
+printf '1\0' > exp || framework_failure_
 cmp out exp || { fail=1; echo "missing NUL terminator?" 1>&2; }

 # Ensure shuf -n operates efficiently for small n. Before coreutils-8.13
diff --git a/tests/misc/sort-benchmark-random b/tests/misc/sort-benchmark-random
index e6ae12f..6a61a14 100755
--- a/tests/misc/sort-benchmark-random
+++ b/tests/misc/sort-benchmark-random
@@ -34,7 +34,7 @@ for (my $i=0; $i < $num_lines; $i++)
       printf "%c", 32 + rand(94);
     }
     print "\n";
-}' > in || framework_failure
+}' > in || framework_failure_

 # We need to generate a lot of data for sort to show a noticeable
 # improvement in performance. Sorting it in PERL may take awhile.
@@ -44,7 +44,7 @@ open (FILE, "<in");
 my @list = <FILE>;
 print sort(@list);
 close (FILE);
-' > exp || framework_failure
+' > exp || framework_failure_

 time sort in > out || fail=1

diff --git a/tests/misc/sort-compress b/tests/misc/sort-compress
index ab0c090..9d1eb60 100755
--- a/tests/misc/sort-compress
+++ b/tests/misc/sort-compress
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ sort

-seq -w 2000 > exp || framework_failure
-tac exp > in || framework_failure
+seq -w 2000 > exp || framework_failure_
+tac exp > in || framework_failure_

 # This should force the use of temp files
 sort -S 1k in > out || fail=1
diff --git a/tests/misc/sort-compress-hang b/tests/misc/sort-compress-hang
index 0bc46dc..ddd4f2d 100755
--- a/tests/misc/sort-compress-hang
+++ b/tests/misc/sort-compress-hang
@@ -20,7 +20,7 @@
 print_ver_ sort
 very_expensive_

-cat <<\EOF >compress || framework_failure
+cat <<\EOF >compress || framework_failure_
 #!/bin/sh
 tr 41 14 || exit
 touch ok
diff --git a/tests/misc/sort-compress-proc b/tests/misc/sort-compress-proc
index de04573..60c8af7 100755
--- a/tests/misc/sort-compress-proc
+++ b/tests/misc/sort-compress-proc
@@ -27,7 +27,7 @@ insize=$(stat -c %s - <in) || fail=1
 # This compressor's behavior is adjustable via environment variables.
 export PRE_COMPRESS=
 export POST_COMPRESS=
-cat <<\EOF >compress || framework_failure
+cat <<\EOF >compress || framework_failure_
 #!/bin/sh
 eval "$PRE_COMPRESS"
 tr 41 14 || exit
diff --git a/tests/misc/sort-continue b/tests/misc/sort-continue
index 43881ac..42db01e 100755
--- a/tests/misc/sort-continue
+++ b/tests/misc/sort-continue
@@ -24,7 +24,7 @@ print_ver_ sort
   || skip_ 'fd-limited sort failed; are you running under valgrind?'

 for i in $(seq 31); do
-  echo $i | tee -a in > __test.$i || framework_failure
+  echo $i | tee -a in > __test.$i || framework_failure_
 done

diff --git a/tests/misc/sort-merge-fdlimit b/tests/misc/sort-merge-fdlimit
index ec9d492..2de14f4 100755
--- a/tests/misc/sort-merge-fdlimit
+++ b/tests/misc/sort-merge-fdlimit
@@ -21,7 +21,7 @@
 print_ver_ sort
 require_ulimit_

-mkdir in err || framework_failure
+mkdir in err || framework_failure_

 for i in `seq 17`; do
diff --git a/tests/misc/sort-rand b/tests/misc/sort-rand
index 175b4bd..e39dfa2 100755
--- a/tests/misc/sort-rand
+++ b/tests/misc/sort-rand
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ sort

-seq 100 > in || framework_failure
+seq 100 > in || framework_failure_

 sort --random-sort in > out || fail=1
diff --git a/tests/misc/stat-hyphen b/tests/misc/stat-hyphen
index 9378979..9a950ba 100755
--- a/tests/misc/stat-hyphen
+++ b/tests/misc/stat-hyphen
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ stat

-printf -- '-\n' > exp || framework_failure
-touch f || framework_failure
+printf -- '-\n' > exp || framework_failure_
+touch f || framework_failure_

 stat --format=%n - < f > out || fail=1
 stat -f - < f && fail=1
diff --git a/tests/misc/stat-slash b/tests/misc/stat-slash
index 3209792..c317855 100755
--- a/tests/misc/stat-slash
+++ b/tests/misc/stat-slash
@@ -19,12 +19,12 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ stat

-touch file || framework_failure
-mkdir dir || framework_failure
-ln -s file link1 || framework_failure
-ln -s dir link2 || framework_failure
+touch file || framework_failure_
+mkdir dir || framework_failure_
+ln -s file link1 || framework_failure_
+ln -s dir link2 || framework_failure_

-cat <<EOF > exp || framework_failure
+cat <<EOF > exp || framework_failure_
 link1
 symbolic link
 directory
diff --git a/tests/misc/tee b/tests/misc/tee
index daace67..2dd70d7 100755
--- a/tests/misc/tee
+++ b/tests/misc/tee
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ tee

-echo line >sample || framework_failure
-nums=`seq 9` || framework_failure
+echo line >sample || framework_failure_
+nums=`seq 9` || framework_failure_

 for n in 0 $nums; do
         files=`seq $n`
diff --git a/tests/misc/truncate-owned-by-other b/tests/misc/truncate-owned-by-other
index 6520348..e7dfb38 100755
--- a/tests/misc/truncate-owned-by-other
+++ b/tests/misc/truncate-owned-by-other
@@ -24,8 +24,8 @@ require_root_
 group_num=$(id -g $NON_ROOT_USERNAME)

 # Create a file owned by root, and writable by $NON_ROOT_USERNAME.
-echo > root-owned || framework_failure
-chgrp +$group_num . root-owned || framework_failure
+echo > root-owned || framework_failure_
+chgrp +$group_num . root-owned || framework_failure_
 chmod g+w root-owned

 # Ensure that the current directory is searchable by $NON_ROOT_USERNAME.
diff --git a/tests/misc/wc-files0 b/tests/misc/wc-files0
index 1f4b495..49df3b4 100755
--- a/tests/misc/wc-files0
+++ b/tests/misc/wc-files0
@@ -19,9 +19,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ wc

-echo 2 > 2b || framework_failure
-echo 2 words > 2w || framework_failure
-printf '2b\n2w\n' |tr '\n' '\0' > names || framework_failure
+echo 2 > 2b || framework_failure_
+echo 2 words > 2w || framework_failure_
+printf '2b\n2w\n' |tr '\n' '\0' > names || framework_failure_

 wc --files0-from=names > out || fail=1
diff --git a/tests/misc/xattr b/tests/misc/xattr
index 05437d0..2529910 100755
--- a/tests/misc/xattr
+++ b/tests/misc/xattr
@@ -22,7 +22,7 @@
 print_ver_ cp mv ginstall

 # Skip this test if cp was built without xattr support:
-touch src dest || framework_failure
+touch src dest || framework_failure_
 cp --preserve=xattr -n src dest \
   || skip_ "coreutils built without xattr support"

@@ -30,7 +30,7 @@ cp --preserve=xattr -n src dest \
 cleanup_() { rm -rf "$other_partition_tmpdir"; }
 . "$abs_srcdir/other-fs-tmpdir"
 b_other="$other_partition_tmpdir/b"
-rm -f "$b_other" || framework_failure
+rm -f "$b_other" || framework_failure_

 # testing xattr name-value pair
 xattr_name="user.foo"
@@ -38,9 +38,9 @@ xattr_value="bar"
 xattr_pair="$xattr_name=\"$xattr_value\""

 # create new file and check its xattrs
-touch a || framework_failure
+touch a || framework_failure_
 getfattr -d a >out_a || skip_ "failed to get xattr of file"
-grep -F "$xattr_pair" out_a && framework_failure
+grep -F "$xattr_pair" out_a && framework_failure_

 # try to set user xattr on file
 setfattr -n "$xattr_name" -v "$xattr_value" a >out_a \
@@ -71,7 +71,7 @@ getfattr -d d >out_d || skip_ "failed to get xattr of file"
 grep -F "$xattr_pair" out_d || fail=1

 # test if --preserve=xattr works even for files without write access
-chmod a-w a || framework_failure
+chmod a-w a || framework_failure_
 rm -f e
 cp --preserve=xattr a e || fail=1
 getfattr -d e >out_e || skip_ "failed to get xattr of file"
@@ -82,9 +82,9 @@ src_perm=$(stat --format=%a a)
 dst_perm=$(stat --format=%a e)
 test "$dst_perm" = "$src_perm" || fail=1

-chmod u+w a || framework_failure
+chmod u+w a || framework_failure_

-rm b || framework_failure
+rm b || framework_failure_

 # install should never preserve xattr
 ginstall a b || fail=1
@@ -105,12 +105,12 @@ EOF

 # try to set user xattr on file on other partition
 test_mv=1
-touch "$b_other" || framework_failure
+touch "$b_other" || framework_failure_
 setfattr -n "$xattr_name" -v "$xattr_value" "$b_other" >out_a \
   || test_mv=0
 getfattr -d "$b_other" >out_b || test_mv=0
 grep -F "$xattr_pair" out_b || test_mv=0
-rm -f "$b_other" || framework_failure
+rm -f "$b_other" || framework_failure_

 if test $test_mv -eq 1; then
   # mv should preserve xattr when copying content from one partition to another
diff --git a/tests/mkdir/p-3 b/tests/mkdir/p-3
index 0adfbea..76a6911 100755
--- a/tests/mkdir/p-3
+++ b/tests/mkdir/p-3
@@ -22,9 +22,9 @@
 print_ver_ mkdir
 skip_if_root_

-mkdir no-access || framework_failure
-mkdir no-acce2s || framework_failure
-mkdir -p no-acce3s/d || framework_failure
+mkdir no-access || framework_failure_
+mkdir no-acce2s || framework_failure_
+mkdir -p no-acce3s/d || framework_failure_

 p=`pwd`
 (cd no-access && chmod 0 . && mkdir -p "$p/a/b" u/v) 2> /dev/null && fail=1
diff --git a/tests/mkdir/p-thru-slink b/tests/mkdir/p-thru-slink
index 85886b1..2af786d 100755
--- a/tests/mkdir/p-thru-slink
+++ b/tests/mkdir/p-thru-slink
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mkdir

-ln -s . slink || framework_failure
+ln -s . slink || framework_failure_

 mkdir -p slink/x || fail=1
 test -d x || fail=1
diff --git a/tests/mkdir/parents b/tests/mkdir/parents
index 72d5a2b..aa1f24d 100755
--- a/tests/mkdir/parents
+++ b/tests/mkdir/parents
@@ -20,7 +20,7 @@
 print_ver_ mkdir
 skip_if_setgid_

-mkdir -m 700 e-dir || framework_failure
+mkdir -m 700 e-dir || framework_failure_

 # Make sure `mkdir -p existing-dir' succeeds
diff --git a/tests/mv/acl b/tests/mv/acl
index 669868d..75ae27e 100755
--- a/tests/mv/acl
+++ b/tests/mv/acl
@@ -29,9 +29,9 @@ grep '^#define USE_ACL 1' $CONFIG_HEADER > /dev/null ||
 cleanup_() { rm -rf "$other_partition_tmpdir"; }
 . "$abs_srcdir/other-fs-tmpdir"

-touch file || framework_failure
+touch file || framework_failure_
 t1=$other_partition_tmpdir/t1
-touch $t1 || framework_failure
+touch $t1 || framework_failure_

 skip_partition=none
 # Ensure that setfacl and getfacl work on this file system.
@@ -45,23 +45,23 @@ test $skip_partition != none &&

 # move the access acl of a file
 mv file "$other_partition_tmpdir" || fail=1
-acl2=`cd "$other_partition_tmpdir" && getfacl file` || framework_failure
+acl2=`cd "$other_partition_tmpdir" && getfacl file` || framework_failure_
 test "$acl1" = "$acl2" || fail=1

 # move the access acl of a directory
-mkdir dir || framework_failure
-setfacl -m user:bin:rw dir || framework_failure
-acl1=`getfacl dir` || framework_failure
+mkdir dir || framework_failure_
+setfacl -m user:bin:rw dir || framework_failure_
+acl1=`getfacl dir` || framework_failure_
 mv dir "$other_partition_tmpdir" || fail=1
-acl2=`cd "$other_partition_tmpdir" && getfacl dir` || framework_failure
+acl2=`cd "$other_partition_tmpdir" && getfacl dir` || framework_failure_
 test "$acl1" = "$acl2" || fail=1

 # move the default acl of a directory
-mkdir dir2 || framework_failure
-setfacl -d -m user:bin:rw dir2 || framework_failure
-acl1=`getfacl dir2` || framework_failure
+mkdir dir2 || framework_failure_
+setfacl -d -m user:bin:rw dir2 || framework_failure_
+acl1=`getfacl dir2` || framework_failure_
 mv dir2 "$other_partition_tmpdir" || fail=1
-acl2=`cd "$other_partition_tmpdir" && getfacl dir2` || framework_failure
+acl2=`cd "$other_partition_tmpdir" && getfacl dir2` || framework_failure_
 test "$acl1" = "$acl2" || fail=1

 Exit $fail
diff --git a/tests/mv/atomic b/tests/mv/atomic
index dfc2cbf..2a3ca96 100755
--- a/tests/mv/atomic
+++ b/tests/mv/atomic
@@ -30,8 +30,8 @@ require_strace_ unlink
 #   $ strace -qe unlink ./mv -T s1 s2
 #   $

-ln -s t1 s1 || framework_failure
-ln -s t2 s2 || framework_failure
+ln -s t1 s1 || framework_failure_
+ln -s t2 s2 || framework_failure_

 strace -qe unlink mv -T s1 s2 > out 2>&1 || fail=1
diff --git a/tests/mv/atomic2 b/tests/mv/atomic2
index e69d166..0bb229f 100755
--- a/tests/mv/atomic2
+++ b/tests/mv/atomic2
@@ -28,8 +28,8 @@ require_strace_ unlink
 #   $ rm -f a b b2; touch a b; ln b b2; strace -e unlink ./mv a b
 #   $

-touch a b || framework_failure
-ln b b2 || framework_failure
+touch a b || framework_failure_
+ln b b2 || framework_failure_

 strace -qe unlink mv a b > out 2>&1 || fail=1
diff --git a/tests/mv/backup-dir b/tests/mv/backup-dir
index c5725d6..3026365 100755
--- a/tests/mv/backup-dir
+++ b/tests/mv/backup-dir
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-mkdir A B || framework_failure
-touch X Y || framework_failure
+mkdir A B || framework_failure_
+touch X Y || framework_failure_

 # Before coreutils-6.2, the " (backup: `B.~1~')" suffix was not printed.
diff --git a/tests/mv/backup-is-src b/tests/mv/backup-is-src
index 4897981..ba05870 100755
--- a/tests/mv/backup-is-src
+++ b/tests/mv/backup-is-src
@@ -24,9 +24,9 @@ cleanup_() { rm -rf "$other_partition_tmpdir"; }
 a="$other_partition_tmpdir/a"
 a2="$other_partition_tmpdir/a~"

-rm -f "$a" "$a2" || framework_failure
-echo a > "$a" || framework_failure
-echo a2 > "$a2" || framework_failure
+rm -f "$a" "$a2" || framework_failure_
+echo a > "$a" || framework_failure_
+echo a2 > "$a2" || framework_failure_

 # This mv command should exit nonzero.
 mv --b=simple "$a2" "$a" > out 2>&1 && fail=1
diff --git a/tests/mv/childproof b/tests/mv/childproof
index 40a923e..8c49de1 100755
--- a/tests/mv/childproof
+++ b/tests/mv/childproof
@@ -23,9 +23,9 @@ print_ver_ cp mv ln

 skip_if_root_

-mkdir a b c || framework_failure
-echo a > a/f || framework_failure
-echo b > b/f || framework_failure
+mkdir a b c || framework_failure_
+echo a > a/f || framework_failure_
+echo b > b/f || framework_failure_

 cp a/f b/f c 2> /dev/null && fail=1
diff --git a/tests/mv/diag b/tests/mv/diag
index ccf034e..2007ee0 100755
--- a/tests/mv/diag
+++ b/tests/mv/diag
@@ -19,9 +19,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-touch f1 || framework_failure
-touch f2 || framework_failure
-touch d || framework_failure
+touch f1 || framework_failure_
+touch f2 || framework_failure_
+touch d || framework_failure_

 # These mv commands should all exit nonzero.

diff --git a/tests/mv/dir-file b/tests/mv/dir-file
index 885f512..8c69255 100755
--- a/tests/mv/dir-file
+++ b/tests/mv/dir-file
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-mkdir -p dir/file || framework_failure
-> file || framework_failure
+mkdir -p dir/file || framework_failure_
+> file || framework_failure_

 # These should both fail, but until fileutils-4.0q only the second one did.
diff --git a/tests/mv/dir2dir b/tests/mv/dir2dir
index 4d6955e..452bb7d 100755
--- a/tests/mv/dir2dir
+++ b/tests/mv/dir2dir
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-mkdir -p a/t b/t || framework_failure
-touch a/t/f || framework_failure
+mkdir -p a/t b/t || framework_failure_
+touch a/t/f || framework_failure_

 # Expect this to fail with the expected diagnostic.
diff --git a/tests/mv/force b/tests/mv/force
index 984b46d..4aa7540 100755
--- a/tests/mv/force
+++ b/tests/mv/force
@@ -22,8 +22,8 @@ print_ver_ mv
 ff=mvforce
 ff2=mvforce2

-echo force-contents > $ff || framework_failure
-ln $ff $ff2 || framework_failure
+echo force-contents > $ff || framework_failure_
+ln $ff $ff2 || framework_failure_

 # This mv command should exit nonzero.
 mv $ff $ff > out 2>&1 && fail=1
diff --git a/tests/mv/hard-2 b/tests/mv/hard-2
index 27ff870..dbc412b 100755
--- a/tests/mv/hard-2
+++ b/tests/mv/hard-2
@@ -22,11 +22,11 @@ print_ver_ cp mv

 skip_if_root_

-mkdir dst || framework_failure
-(cd dst && touch a b c) || framework_failure
-touch a || framework_failure
-ln a b || framework_failure
-ln a c || framework_failure
+mkdir dst || framework_failure_
+(cd dst && touch a b c) || framework_failure_
+touch a || framework_failure_
+ln a b || framework_failure_
+ln a c || framework_failure_

 # ======================================
diff --git a/tests/mv/hard-3 b/tests/mv/hard-3
index 586c593..8b76c28 100755
--- a/tests/mv/hard-3
+++ b/tests/mv/hard-3
@@ -34,12 +34,12 @@
 print_ver_ cp
 skip_if_root_

-mkdir -p x dst/x || framework_failure
-touch dst/x/b || framework_failure
+mkdir -p x dst/x || framework_failure_
+touch dst/x/b || framework_failure_
 chmod a-w dst/x
-touch a || framework_failure
-ln a x/b || framework_failure
-ln a c || framework_failure
+touch a || framework_failure_
+ln a x/b || framework_failure_
+ln a c || framework_failure_

 # ======================================
diff --git a/tests/mv/hard-4 b/tests/mv/hard-4
index 6cc6404..013de0f 100755
--- a/tests/mv/hard-4
+++ b/tests/mv/hard-4
@@ -18,8 +18,8 @@

 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv
-touch a || framework_failure
-ln a b || framework_failure
+touch a || framework_failure_
+ln a b || framework_failure_

 mv a b || fail=1
diff --git a/tests/mv/hard-link-1 b/tests/mv/hard-link-1
index 7014196..3b6fe25 100755
--- a/tests/mv/hard-link-1
+++ b/tests/mv/hard-link-1
@@ -24,9 +24,9 @@ cleanup_() { rm -rf "$other_partition_tmpdir"; }

 dir=hlink

-mkdir $dir || framework_failure
-> $dir/a || framework_failure
-ln $dir/a $dir/b || framework_failure
+mkdir $dir || framework_failure_
+> $dir/a || framework_failure_
+ln $dir/a $dir/b || framework_failure_

 mv $dir "$other_partition_tmpdir" || fail=1

diff --git a/tests/mv/hard-verbose b/tests/mv/hard-verbose
index 27e8a92..95d959d 100755
--- a/tests/mv/hard-verbose
+++ b/tests/mv/hard-verbose
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-touch x || framework_failure
-ln x y || framework_failure
+touch x || framework_failure_
+ln x y || framework_failure_

 mv --verbose x y > out || fail=1
diff --git a/tests/mv/i-2 b/tests/mv/i-2
index 6eef6f6..538e128 100755
--- a/tests/mv/i-2
+++ b/tests/mv/i-2
@@ -23,10 +23,10 @@ print_ver_ cp mv
 skip_if_root_

 for i in a b c d e f g h; do
-  echo $i > $i || framework_failure
+  echo $i > $i || framework_failure_
 done
-chmod 0 b d f h || framework_failure
-echo y > y || framework_failure
+chmod 0 b d f h || framework_failure_
+echo y > y || framework_failure_

 mv -if a b || fail=1
 mv -fi c d < y >/dev/null 2>&1 || fail=1
diff --git a/tests/mv/i-3 b/tests/mv/i-3
index 867b7cb..a65c3b5 100755
--- a/tests/mv/i-3
+++ b/tests/mv/i-3
@@ -25,8 +25,8 @@ trap '' TTIN # Ignore SIGTTIN

 test "$(uname -s)" = FreeBSD && skip_ "known spurious failure on FreeBSD"

-touch f g h i || framework_failure
-chmod 0 g i || framework_failure
+touch f g h i || framework_failure_
+chmod 0 g i || framework_failure_

 ls /dev/stdin >/dev/null 2>&1 \
diff --git a/tests/mv/i-4 b/tests/mv/i-4
index f91f6bf..e7a381f 100755
--- a/tests/mv/i-4
+++ b/tests/mv/i-4
@@ -20,9 +20,9 @@
 print_ver_ mv

 for i in a b; do
-  echo $i > $i || framework_failure
+  echo $i > $i || framework_failure_
 done
-echo y > y || framework_failure
+echo y > y || framework_failure_

 mv -i a b < y >/dev/null 2>&1 || fail=1

diff --git a/tests/mv/i-5 b/tests/mv/i-5
index 64c06fe..82596b9 100755
--- a/tests/mv/i-5
+++ b/tests/mv/i-5
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-mkdir a || framework_failure
-touch b || framework_failure
+mkdir a || framework_failure_
+touch b || framework_failure_

 # coreutils 6.2 mv would neglect to prompt in this case.
diff --git a/tests/mv/i-link-no b/tests/mv/i-link-no
index 9ead3bc..7858eb9 100755
--- a/tests/mv/i-link-no
+++ b/tests/mv/i-link-no
@@ -19,13 +19,13 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-mkdir a b || framework_failure
-echo foo > a/foo || framework_failure
-ln a/foo a/bar || framework_failure
-echo FUBAR > b/FUBAR || framework_failure
-ln b/FUBAR b/bar || framework_failure
-chmod a-w b/bar || framework_failure
-echo n > no || framework_failure
+mkdir a b || framework_failure_
+echo foo > a/foo || framework_failure_
+ln a/foo a/bar || framework_failure_
+echo FUBAR > b/FUBAR || framework_failure_
+ln b/FUBAR b/bar || framework_failure_
+chmod a-w b/bar || framework_failure_
+echo n > no || framework_failure_

 mv a/bar a/foo b < no > out 2> err || fail=1
diff --git a/tests/mv/into-self b/tests/mv/into-self
index 67e6012..a4df10a 100755
--- a/tests/mv/into-self
+++ b/tests/mv/into-self
@@ -22,9 +22,9 @@ print_ver_ mv
 dir=toself-dir
 file=toself-file

-rm -rf $dir $file || framework_failure
-mkdir -p $dir/a/b || framework_failure
-touch $file || framework_failure
+rm -rf $dir $file || framework_failure_
+mkdir -p $dir/a/b || framework_failure_
+touch $file || framework_failure_

 # This mv command should fail.
diff --git a/tests/mv/into-self-2 b/tests/mv/into-self-2
index a2939d9..28e2127 100755
--- a/tests/mv/into-self-2
+++ b/tests/mv/into-self-2
@@ -27,8 +27,8 @@ file="$other_partition_tmpdir/file"
 symlink=symlink

-echo whatever > $file || framework_failure
-ln -s $file $symlink || framework_failure
+echo whatever > $file || framework_failure_
+ln -s $file $symlink || framework_failure_

 # This mv command should exit nonzero.
 mv $symlink $file > out 2>&1 && fail=1
diff --git a/tests/mv/into-self-3 b/tests/mv/into-self-3
index a934ea2..8d1eadb 100755
--- a/tests/mv/into-self-3
+++ b/tests/mv/into-self-3
@@ -22,7 +22,7 @@ print_ver_ mv
 dir1=is3-dir1
 dir2=is3-dir2

-mkdir $dir1 $dir2 || framework_failure
+mkdir $dir1 $dir2 || framework_failure_

 # This mv command should exit nonzero.
 mv $dir1 $dir2 $dir2 > out 2>&1 && fail=1
diff --git a/tests/mv/into-self-4 b/tests/mv/into-self-4
index 6af1f8a..7a3546e 100755
--- a/tests/mv/into-self-4
+++ b/tests/mv/into-self-4
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-touch file || framework_failure
-ln -s file s || framework_failure
+touch file || framework_failure_
+ln -s file s || framework_failure_

 # This must fail.
diff --git a/tests/mv/leak-fd b/tests/mv/leak-fd
index 095a843..881d7ee 100755
--- a/tests/mv/leak-fd
+++ b/tests/mv/leak-fd
@@ -38,11 +38,11 @@ for i in `echo $b`; do
     echo $i$j
   done
 done > .dirs
-mkdir `cat .dirs` || framework_failure
+mkdir `cat .dirs` || framework_failure_
 sed 's,$,/f,' .dirs | xargs touch

 last_file=`tail -n1 .dirs`/f
-test -f $last_file || framework_failure
+test -f $last_file || framework_failure_

 mv * "$other_partition_tmpdir" || fail=1
diff --git a/tests/mv/mv-n b/tests/mv/mv-n
index 8d9e0da..ada2ade 100755
--- a/tests/mv/mv-n
+++ b/tests/mv/mv-n
@@ -21,37 +21,37 @@ print_ver_ mv

 # test miscellaneous combinations of -f -i -n parameters
-touch a b || framework_failure
+touch a b || framework_failure_
 echo "\`a' -> \`b'" > out_move
 > out_empty

 # ask for overwrite, answer no
-touch a b || framework_failure
+touch a b || framework_failure_
 echo n | mv -vi a b 2>/dev/null > out1 || fail=1
 compare out1 out_empty || fail=1

 # ask for overwrite, answer yes
-touch a b || framework_failure
+touch a b || framework_failure_
 echo y | mv -vi a b 2>/dev/null > out2 || fail=1
 compare out2 out_move || fail=1

 # -n wins (as the last option)
-touch a b || framework_failure
+touch a b || framework_failure_
 echo y | mv -vin a b 2>/dev/null > out3 || fail=1
 compare out3 out_empty || fail=1

 # -n wins (as the last option)
-touch a b || framework_failure
+touch a b || framework_failure_
 echo y | mv -vfn a b 2>/dev/null > out4 || fail=1
 compare out4 out_empty || fail=1

 # -n wins (as the last option)
-touch a b || framework_failure
+touch a b || framework_failure_
 echo y | mv -vifn a b 2>/dev/null > out5 || fail=1
 compare out5 out_empty || fail=1

 # options --backup and --no-clobber are mutually exclusive
-touch a || framework_failure
+touch a || framework_failure_
 mv -bn a b 2>/dev/null && fail=1

 Exit $fail
diff --git a/tests/mv/mv-special-1 b/tests/mv/mv-special-1
index 4297953..f43a707 100755
--- a/tests/mv/mv-special-1
+++ b/tests/mv/mv-special-1
@@ -24,11 +24,11 @@ cleanup_() { rm -rf "$other_partition_tmpdir"; }
 null=mv-null
 dir=mv-dir

-rm -f $null || framework_failure
-mknod $null p || framework_failure
-test -p $null || framework_failure
-mkdir -p $dir/a/b/c $dir/d/e/f || framework_failure
-touch $dir/a/b/c/file1 $dir/d/e/f/file2 || framework_failure
+rm -f $null || framework_failure_
+mknod $null p || framework_failure_
+test -p $null || framework_failure_
+mkdir -p $dir/a/b/c $dir/d/e/f || framework_failure_
+touch $dir/a/b/c/file1 $dir/d/e/f/file2 || framework_failure_

 # We used to...
 # exit 77 here to indicate that we couldn't run the test.
diff --git a/tests/mv/no-target-dir b/tests/mv/no-target-dir
index a73fae9..1d800e1 100755
--- a/tests/mv/no-target-dir
+++ b/tests/mv/no-target-dir
@@ -20,11 +20,11 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-mkdir -p d/sub empty src d2/sub e2 || framework_failure
-touch f || framework_failure
+mkdir -p d/sub empty src d2/sub e2 || framework_failure_
+touch f || framework_failure_

 # Skip this test if there's an underlying kernel bug.
-mkdir a b b/a || framework_failure
+mkdir a b b/a || framework_failure_

 mv a b ||
   skip_ "your kernel's rename syscall is buggy"
diff --git a/tests/mv/part-fail b/tests/mv/part-fail
index 2c0d0e5..8d25669 100755
--- a/tests/mv/part-fail
+++ b/tests/mv/part-fail
@@ -25,8 +25,8 @@ skip_if_root_
 cleanup_() { t=$other_partition_tmpdir; chmod -R 700 "$t"; rm -rf "$t"; }
 . "$abs_srcdir/other-fs-tmpdir"

-touch k "$other_partition_tmpdir/k" || framework_failure
-chmod u-w "$other_partition_tmpdir" || framework_failure
+touch k "$other_partition_tmpdir/k" || framework_failure_
+chmod u-w "$other_partition_tmpdir" || framework_failure_

 mv -f k "$other_partition_tmpdir" 2> out && fail=1
diff --git a/tests/mv/part-hardlink b/tests/mv/part-hardlink
index 5c975fd..5e27ff3 100755
--- a/tests/mv/part-hardlink
+++ b/tests/mv/part-hardlink
@@ -24,11 +24,11 @@ print_ver_ mv
 cleanup_() { rm -rf "$other_partition_tmpdir"; }
 . "$abs_srcdir/other-fs-tmpdir"

-touch f || framework_failure
-ln f g || framework_failure
-mkdir a b || framework_failure
-touch a/1 || framework_failure
-ln a/1 b/1 || framework_failure
+touch f || framework_failure_
+ln f g || framework_failure_
+mkdir a b || framework_failure_
+touch a/1 || framework_failure_
+ln a/1 b/1 || framework_failure_

 mv f g "$other_partition_tmpdir" || fail=1
diff --git a/tests/mv/part-rename b/tests/mv/part-rename
index 9edb251..e3a7db1 100755
--- a/tests/mv/part-rename
+++ b/tests/mv/part-rename
@@ -23,7 +23,7 @@ print_ver_ mv
 cleanup_() { rm -rf "$other_partition_tmpdir"; }
 . "$abs_srcdir/other-fs-tmpdir"

-mkdir foo || framework_failure
+mkdir foo || framework_failure_

 mv foo/ "$other_partition_tmpdir/bar" || fail=1
diff --git a/tests/mv/perm-1 b/tests/mv/perm-1
index 2366bd7..cab0076 100755
--- a/tests/mv/perm-1
+++ b/tests/mv/perm-1
@@ -21,8 +21,8 @@
 print_ver_ mv
 skip_if_root_

-mkdir -p no-write/dir || framework_failure
-chmod u-w no-write || framework_failure
+mkdir -p no-write/dir || framework_failure_
+chmod u-w no-write || framework_failure_

 mv no-write/dir . > out 2>&1 && fail=1
diff --git a/tests/mv/sticky-to-xpart b/tests/mv/sticky-to-xpart
index f689d9d..3d61c3c 100755
--- a/tests/mv/sticky-to-xpart
+++ b/tests/mv/sticky-to-xpart
@@ -30,14 +30,14 @@ cleanup_() { rm -rf "$other_partition_tmpdir"; }
 # file from a sticky tmpdir to a directory owned by that user on
 # a different partition.

-mkdir t || framework_failure
-chmod a=rwx,o+t t || framework_failure
-echo > t/root-owned || framework_failure
-chmod a+r t/root-owned || framework_failure
-chown "$NON_ROOT_USERNAME" "$other_partition_tmpdir" || framework_failure
+mkdir t || framework_failure_
+chmod a=rwx,o+t t || framework_failure_
+echo > t/root-owned || framework_failure_
+chmod a+r t/root-owned || framework_failure_
+chown "$NON_ROOT_USERNAME" "$other_partition_tmpdir" || framework_failure_

 # We have to allow $NON_ROOT_USERNAME access to ".".
-chmod go+x . || framework_failure
+chmod go+x . || framework_failure_

 # Ensure that $NON_ROOT_USERNAME can access the required version of mv.
diff --git a/tests/mv/to-symlink b/tests/mv/to-symlink
index 600fde3..162ac55 100755
--- a/tests/mv/to-symlink
+++ b/tests/mv/to-symlink
@@ -26,9 +26,9 @@ rem_file="$other_partition_tmpdir/file"
 rem_symlink="$other_partition_tmpdir/symlink"
 file=to-sym

-echo local > $file || framework_failure
-echo remote > $rem_file || framework_failure
-ln -s $rem_file $rem_symlink || framework_failure
+echo local > $file || framework_failure_
+echo remote > $rem_file || framework_failure_
+ln -s $rem_file $rem_symlink || framework_failure_

 # This mv command should succeed, unlinking the symlink
 # before copying.
diff --git a/tests/mv/trailing-slash b/tests/mv/trailing-slash
index 6215b14..104cf59 100755
--- a/tests/mv/trailing-slash
+++ b/tests/mv/trailing-slash
@@ -22,7 +22,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ mv

-mkdir foo || framework_failure
+mkdir foo || framework_failure_

 mv foo/ bar || fail=1
@@ -30,8 +30,8 @@ mv foo/ bar || fail=1
 # mv and cp would misbehave for coreutils versions [5.3.0..5.97], 6.0 and 6.1
 for cmd in mv 'cp -r'; do
   for opt in '' -T -u; do
-    rm -rf d e || framework_failure
-    mkdir d    || framework_failure
+    rm -rf d e || framework_failure_
+    mkdir d    || framework_failure_

     $cmd $opt d e/ || fail=1
     if test "$cmd" = mv; then
diff --git a/tests/mv/update b/tests/mv/update
index 6a746ec..0f8ac89 100755
--- a/tests/mv/update
+++ b/tests/mv/update
@@ -19,9 +19,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ cp mv

-echo old > old || framework_failure
-touch -d yesterday old || framework_failure
-echo new > new || framework_failure
+echo old > old || framework_failure_
+touch -d yesterday old || framework_failure_
+echo new > new || framework_failure_

 for interactive in '' -i; do
diff --git a/tests/readlink/can-e b/tests/readlink/can-e
index c2ad504..9034a9a 100755
--- a/tests/readlink/can-e
+++ b/tests/readlink/can-e
@@ -23,18 +23,18 @@ pwd=`pwd`
 my_pwd=$("$abs_top_builddir/src/pwd")
 tmp=d

-mkdir $tmp || framework_failure
-cd $tmp || framework_failure
+mkdir $tmp || framework_failure_
+cd $tmp || framework_failure_

-mkdir subdir removed || framework_failure
-touch regfile || framework_failure
+mkdir subdir removed || framework_failure_
+touch regfile || framework_failure_

-ln -s regfile link1 || framework_failure
-ln -s subdir link2 || framework_failure
-ln -s missing link3 || framework_failure
-ln -s subdir/missing link4 || framework_failure
+ln -s regfile link1 || framework_failure_
+ln -s subdir link2 || framework_failure_
+ln -s missing link3 || framework_failure_
+ln -s subdir/missing link4 || framework_failure_

-cd "$pwd/$tmp/removed" || framework_failure
+cd "$pwd/$tmp/removed" || framework_failure_

 # Skip this test if the system doesn't let you remove the working directory.
 if rmdir ../removed 2>/dev/null; then
diff --git a/tests/readlink/can-f b/tests/readlink/can-f
index 40812f8..a557c22 100755
--- a/tests/readlink/can-f
+++ b/tests/readlink/can-f
@@ -23,19 +23,19 @@ pwd=`pwd`
 my_pwd=$("$abs_top_builddir/src/pwd")
 tmp=d

-mkdir $tmp || framework_failure
-cd $tmp || framework_failure
+mkdir $tmp || framework_failure_
+cd $tmp || framework_failure_

-mkdir subdir removed || framework_failure
-touch regfile || framework_failure
+mkdir subdir removed || framework_failure_
+touch regfile || framework_failure_

-ln -s regfile link1 || framework_failure
-ln -s subdir link2 || framework_failure
-ln -s missing link3 || framework_failure
-ln -s subdir/missing link4 || framework_failure
-ln -s link5 link5 || framework_failure
+ln -s regfile link1 || framework_failure_
+ln -s subdir link2 || framework_failure_
+ln -s missing link3 || framework_failure_
+ln -s subdir/missing link4 || framework_failure_
+ln -s link5 link5 || framework_failure_

-cd "$pwd/$tmp/removed" || framework_failure
+cd "$pwd/$tmp/removed" || framework_failure_

 # Skip this test if the system doesn't let you remove the working directory.
 if rmdir ../removed 2>/dev/null; then
diff --git a/tests/readlink/can-m b/tests/readlink/can-m
index 3551567..150d657 100755
--- a/tests/readlink/can-m
+++ b/tests/readlink/can-m
@@ -23,18 +23,18 @@ pwd=`pwd`
 my_pwd=$("$abs_top_builddir/src/pwd")
 tmp=d

-mkdir $tmp || framework_failure
-cd $tmp || framework_failure
+mkdir $tmp || framework_failure_
+cd $tmp || framework_failure_

-mkdir subdir removed || framework_failure
-touch regfile || framework_failure
+mkdir subdir removed || framework_failure_
+touch regfile || framework_failure_

-ln -s regfile link1 || framework_failure
-ln -s subdir link2 || framework_failure
-ln -s missing link3 || framework_failure
-ln -s subdir/missing link4 || framework_failure
+ln -s regfile link1 || framework_failure_
+ln -s subdir link2 || framework_failure_
+ln -s missing link3 || framework_failure_
+ln -s subdir/missing link4 || framework_failure_

-cd "$pwd/$tmp/removed" || framework_failure
+cd "$pwd/$tmp/removed" || framework_failure_

 # Skip this test if the system doesn't let you remove the working directory.
 if rmdir ../removed 2>/dev/null; then
diff --git a/tests/readlink/rl-1 b/tests/readlink/rl-1
index 957816e..f6a1085 100755
--- a/tests/readlink/rl-1
+++ b/tests/readlink/rl-1
@@ -19,10 +19,10 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ readlink

-mkdir subdir || framework_failure
-touch regfile || framework_failure
-ln -s regfile link1 || framework_failure
-ln -s missing link2 || framework_failure
+mkdir subdir || framework_failure_
+touch regfile || framework_failure_
+ln -s regfile link1 || framework_failure_
+ln -s missing link2 || framework_failure_

 v=`readlink link1` || fail=1
diff --git a/tests/rm/deep-2 b/tests/rm/deep-2
index eb624ee..b7651da 100755
--- a/tests/rm/deep-2
+++ b/tests/rm/deep-2
@@ -24,18 +24,18 @@ print_ver_ rm
 # the offending euidaccess_stat call.
 skip_if_root_

-mkdir x || framework_failure
-cd x || framework_failure
+mkdir x || framework_failure_
+cd x || framework_failure_

 # Construct a hierarchy containing a relative file with a name
 : ${PERL=perl}
 $PERL \
     -e 'my $d = "x" x 200; foreach my $i (1..52)' \
     -e '  { mkdir ($d, 0700) && chdir $d or die "$!" }' \
-  || framework_failure
+  || framework_failure_

-cd .. || framework_failure
-echo n > no || framework_failure
+cd .. || framework_failure_
+echo n > no || framework_failure_

 rm ---presume-input-tty -r x < no > out || fail=1

diff --git a/tests/rm/dir-no-w b/tests/rm/dir-no-w
index 292836b..b4721ad 100755
--- a/tests/rm/dir-no-w
+++ b/tests/rm/dir-no-w
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir --mode=0500 unwritable-dir || framework_failure
+mkdir --mode=0500 unwritable-dir || framework_failure_

 # For rm from coreutils-5.0.1, this would prompt.
diff --git a/tests/rm/dir-nonrecur b/tests/rm/dir-nonrecur
index 1b347d9..2e2f152 100755
--- a/tests/rm/dir-nonrecur
+++ b/tests/rm/dir-nonrecur
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir d || framework_failure
+mkdir d || framework_failure_

 rm d 2> out && fail=1
diff --git a/tests/rm/dot-rel b/tests/rm/dot-rel
index dd23b37..fdf4fc1 100755
--- a/tests/rm/dot-rel
+++ b/tests/rm/dot-rel
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir a b || framework_failure
-touch a/f b/f || framework_failure
+mkdir a b || framework_failure_
+touch a/f b/f || framework_failure_

 rm -r a b || fail=1
diff --git a/tests/rm/empty-inacc b/tests/rm/empty-inacc
index 20abd5c..f36c6f2 100755
--- a/tests/rm/empty-inacc
+++ b/tests/rm/empty-inacc
@@ -20,7 +20,7 @@
 print_ver_ rm
 skip_if_root_

-mkdir -m0 inacc || framework_failure
+mkdir -m0 inacc || framework_failure_

 # Also exercise the different code path that's taken for a directory
 # that is empty (hence removable) and unreadable.
diff --git a/tests/rm/ext3-perf b/tests/rm/ext3-perf
index 95cce33..1ee8bf9 100755
--- a/tests/rm/ext3-perf
+++ b/tests/rm/ext3-perf
@@ -44,7 +44,7 @@ df -T -t ext3 -t ext4dev -t ext4 . \
   || skip_ 'this test runs only on an ext3 or ext4 file system'

 # Skip if there are too few inodes free.  Require some slack.
-free_inodes=$(stat -f --format=%d .) || framework_failure
+free_inodes=$(stat -f --format=%d .) || framework_failure_
 min_free_inodes=$(expr 12 \* $n / 10)
 test $min_free_inodes -lt $free_inodes \
   || skip_ "too few free inodes on '.': $free_inodes;" \
@@ -59,7 +59,7 @@ mkdir d &&
     test -f $n &&
   cd .. &&
   ok=1
-test $ok = 1 || framework_failure
+test $ok = 1 || framework_failure_
 setup_duration=$(expr $(date +%s) - $start)
 echo creating a $n-entry directory took $setup_duration seconds

diff --git a/tests/rm/f-1 b/tests/rm/f-1
index 3b0d515..2d35364 100755
--- a/tests/rm/f-1
+++ b/tests/rm/f-1
@@ -21,7 +21,7 @@ test=f-1
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir -p d || framework_failure
+mkdir -p d || framework_failure_

 rm -f d/no-such-file || fail=1

diff --git a/tests/rm/fail-2eperm b/tests/rm/fail-2eperm
index 4137d9d..cd294c5 100755
--- a/tests/rm/fail-2eperm
+++ b/tests/rm/fail-2eperm
@@ -24,9 +24,9 @@ require_root_
 # The containing directory must be owned by the user who eventually runs rm.
 chown $NON_ROOT_USERNAME .

-mkdir a || framework_failure
-chmod 1777 a || framework_failure
-touch a/b || framework_failure
+mkdir a || framework_failure_
+chmod 1777 a || framework_failure_
+touch a/b || framework_failure_

 # Try to ensure that $NON_ROOT_USERNAME can access
diff --git a/tests/rm/fail-eacces b/tests/rm/fail-eacces
index 750924f..8e9b5b0 100755
--- a/tests/rm/fail-eacces
+++ b/tests/rm/fail-eacces
@@ -29,13 +29,13 @@ mkdir d           &&
   ln -s f d/slink &&
   chmod a-w d     &&
   ok=1
-test $ok = 1 || framework_failure
+test $ok = 1 || framework_failure_

 mkdir e           &&
   ln -s f e/slink &&
   chmod a-w e     &&
   ok=1
-test $ok = 1 || framework_failure
+test $ok = 1 || framework_failure_

 rm -rf d/f 2> out && fail=1
diff --git a/tests/rm/hash b/tests/rm/hash
index cdadbab..48560dd 100755
--- a/tests/rm/hash
+++ b/tests/rm/hash
@@ -27,7 +27,7 @@ echo "$0: creating 78 trees, each of depth 153; this will take a while..." >&2
 y=`seq 1 150|tr -sc '\n' y|tr '\n' /`
 for i in 1 2 3; do
   for j in a b c d e f g h i j k l m n o p q r s t u v w x y z; do
-    mkdir -p t/$i/$j/$y || framework_failure
+    mkdir -p t/$i/$j/$y || framework_failure_
   done
 done

diff --git a/tests/rm/i-1 b/tests/rm/i-1
index 369f912..e8e4876 100755
--- a/tests/rm/i-1
+++ b/tests/rm/i-1
@@ -22,9 +22,9 @@ test=i-1
 print_ver_ rm

 t=t
-mkdir -p $t || framework_failure
-echo > $t/a || framework_failure
-test -f $t/a || framework_failure
+mkdir -p $t || framework_failure_
+echo > $t/a || framework_failure_
+test -f $t/a || framework_failure_

 echo y > $t/$test.Iy
 echo n > $t/$test.In
diff --git a/tests/rm/i-never b/tests/rm/i-never
index c6dc080..5ffde73 100755
--- a/tests/rm/i-never
+++ b/tests/rm/i-never
@@ -21,9 +21,9 @@
 print_ver_ rm
 skip_if_root_

-touch f || framework_failure
-chmod 0 f || framework_failure
-touch exp || framework_failure
+touch f || framework_failure_
+chmod 0 f || framework_failure_
+touch exp || framework_failure_

 rm --interactive=never f > out || fail=1
diff --git a/tests/rm/i-no-r b/tests/rm/i-no-r
index 6e46d22..9316b82 100755
--- a/tests/rm/i-no-r
+++ b/tests/rm/i-no-r
@@ -21,8 +21,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir dir || framework_failure
-echo y > y || framework_failure
+mkdir dir || framework_failure_
+echo y > y || framework_failure_

 # This must fail.
diff --git a/tests/rm/ignorable b/tests/rm/ignorable
index 8c76f40..bff42f2 100755
--- a/tests/rm/ignorable
+++ b/tests/rm/ignorable
@@ -20,7 +20,7 @@
 print_ver_ rm
 skip_if_root_

-touch existing-non-dir || framework_failure
+touch existing-non-dir || framework_failure_

 # With coreutils-6.3, this would exit nonzero.  It should not.
diff --git a/tests/rm/inaccessible b/tests/rm/inaccessible
index b5fa588..e87ab79 100755
--- a/tests/rm/inaccessible
+++ b/tests/rm/inaccessible
@@ -26,7 +26,7 @@ require_openat_support_
 skip_if_root_

 p=`pwd`
-mkdir abs1 abs2 no-access || framework_failure
+mkdir abs1 abs2 no-access || framework_failure_

 set +x
diff --git a/tests/rm/interactive-always b/tests/rm/interactive-always
index 7b9130a..032c645 100755
--- a/tests/rm/interactive-always
+++ b/tests/rm/interactive-always
@@ -22,11 +22,11 @@ test=interactive-always
 print_ver_ rm

 touch file1-1 file1-2 file2-1 file2-2 file3-1 file3-2 file4-1 file4-2 \
-  || framework_failure
+  || framework_failure_
 # If asked, answer no to first question, then yes to second.
 echo 'n
-y' > $test.I || framework_failure
-rm -f out err || framework_failure
+y' > $test.I || framework_failure_
+rm -f out err || framework_failure_

 # The prompt has a trailing space, and no newline, so an extra
diff --git a/tests/rm/interactive-once b/tests/rm/interactive-once
index 4971fe5..fc1c76d 100755
--- a/tests/rm/interactive-once
+++ b/tests/rm/interactive-once
@@ -21,12 +21,12 @@ test=interactive-once
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir -p dir1-1 dir2-1 dir2-2 || framework_failure
+mkdir -p dir1-1 dir2-1 dir2-2 || framework_failure_
 touch file1-1 file2-1 file2-2 file2-3 file3-1 file3-2 file3-3 file3-4 \
-  || framework_failure
-echo y > $test.Iy || framework_failure
-echo n > $test.In || framework_failure
-rm -f out err || framework_failure
+  || framework_failure_
+echo y > $test.Iy || framework_failure_
+echo n > $test.In || framework_failure_
+rm -f out err || framework_failure_

 # The prompt has a trailing space, and no newline, so an extra
diff --git a/tests/rm/ir-1 b/tests/rm/ir-1
index bac607c..2287702 100755
--- a/tests/rm/ir-1
+++ b/tests/rm/ir-1
@@ -22,10 +22,10 @@ test=ir-1
 print_ver_ rm

 t=t
-mkdir -p $t $t/a $t/b $t/c || framework_failure
-> $t/a/a || framework_failure
-> $t/b/bb || framework_failure
-> $t/c/cc || framework_failure
+mkdir -p $t $t/a $t/b $t/c || framework_failure_
+> $t/a/a || framework_failure_
+> $t/b/bb || framework_failure_
+> $t/c/cc || framework_failure_

 cat <<EOF > $test.I
 y
diff --git a/tests/rm/no-give-up b/tests/rm/no-give-up
index 5ecd275..544b8c2 100755
--- a/tests/rm/no-give-up
+++ b/tests/rm/no-give-up
@@ -21,12 +21,12 @@
 print_ver_ rm
 require_root_

-mkdir d || framework_failure
-touch d/f || framework_failure
-chown -R $NON_ROOT_USERNAME d || framework_failure
+mkdir d || framework_failure_
+touch d/f || framework_failure_
+chown -R $NON_ROOT_USERNAME d || framework_failure_

 # Ensure that non-root can access files in root-owned ".".
-chmod go=x . || framework_failure
+chmod go=x . || framework_failure_

 # This must fail, since `.' is not writable by $NON_ROOT_USERNAME.
diff --git a/tests/rm/one-file-system b/tests/rm/one-file-system
index 1ef61a7..064d27c 100755
--- a/tests/rm/one-file-system
+++ b/tests/rm/one-file-system
@@ -35,7 +35,7 @@ mkdir -p a/b $t/y
 mount --bind $t a/b \
   || skip_ "This test requires mount with a working --bind option."

-cat <<\EOF > exp || framework_failure
+cat <<\EOF > exp || framework_failure_
 rm: skipping `a/b', since it's on a different device
 EOF

diff --git a/tests/rm/r-1 b/tests/rm/r-1
index c415a3b..c1d04bd 100755
--- a/tests/rm/r-1
+++ b/tests/rm/r-1
@@ -22,10 +22,10 @@ test=r-1
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir a a/a || framework_failure
-> b || framework_failure
+mkdir a a/a || framework_failure_
+> b || framework_failure_

-cat <<\EOF > $test.E || framework_failure
+cat <<\EOF > $test.E || framework_failure_
 removed directory: `a/a'
 removed directory: `a'
 removed `b'
diff --git a/tests/rm/r-2 b/tests/rm/r-2
index f38a181..71df2f0 100755
--- a/tests/rm/r-2
+++ b/tests/rm/r-2
@@ -20,12 +20,12 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir t t/a t/a/b || framework_failure
-> t/a/f || framework_failure
-> t/a/b/g || framework_failure
+mkdir t t/a t/a/b || framework_failure_
+> t/a/f || framework_failure_
+> t/a/b/g || framework_failure_

 # FIXME: if this fails, it's a framework failure
-cat <<\EOF | sort > t/E || framework_failure
+cat <<\EOF | sort > t/E || framework_failure_
 removed directory: `t/a'
 removed directory: `t/a/b'
 removed `t/a/b/g'
diff --git a/tests/rm/r-3 b/tests/rm/r-3
index 5372046..e47ee09 100755
--- a/tests/rm/r-3
+++ b/tests/rm/r-3
@@ -26,8 +26,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir t || framework_failure
-cd t || framework_failure
+mkdir t || framework_failure_
+cd t || framework_failure_

 # Create 500 files (20 * 25).
 for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j; do
@@ -35,12 +35,12 @@ for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j; do
   for j in a b c d e f g h i j k l m n o p q r s t u v w x y; do
     files="$files $i$j"
   done
-  touch $files || framework_failure
+  touch $files || framework_failure_
 done

-test -f 0a || framework_failure
-test -f by || framework_failure
-cd .. || framework_failure
+test -f 0a || framework_failure_
+test -f by || framework_failure_
+cd .. || framework_failure_

 rm -rf t || fail=1
 test -d t && fail=1
diff --git a/tests/rm/r-4 b/tests/rm/r-4
index 9c6824d..56135c4 100755
--- a/tests/rm/r-4
+++ b/tests/rm/r-4
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir d || framework_failure
-touch d/a || framework_failure
+mkdir d || framework_failure_
+touch d/a || framework_failure_

 rm -fr d/. 2>/dev/null && fail=1
 rm -fr d/./ 2>/dev/null && fail=1
diff --git a/tests/rm/readdir-bug b/tests/rm/readdir-bug
index 3f15967..41405eb 100755
--- a/tests/rm/readdir-bug
+++ b/tests/rm/readdir-bug
@@ -24,12 +24,12 @@ print_ver_ rm
 # What counts is a combination of the number of files and
 # the lengths of their names.  For details, see
 # http://lists.gnu.org/archive/html/bug-coreutils/2006-09/msg00326.html
-mkdir b || framework_failure
-cd b || framework_failure
+mkdir b || framework_failure_
+cd b || framework_failure_
 for i in `seq 1 250`; do
-  touch `printf %040d $i` || framework_failure
+  touch `printf %040d $i` || framework_failure_
 done
-cd .. || framework_failure
+cd .. || framework_failure_

 # On a buggy system, this would fail with the diagnostic,
diff --git a/tests/rm/rm1 b/tests/rm/rm1
index e90996d..ce0d871 100755
--- a/tests/rm/rm1
+++ b/tests/rm/rm1
@@ -20,8 +20,8 @@
 print_ver_ rm
 skip_if_root_

-mkdir -p b/a/p b/c b/d || framework_failure
-chmod u-w b/a || framework_failure
+mkdir -p b/a/p b/c b/d || framework_failure_
+chmod u-w b/a || framework_failure_

 # This should fail.
diff --git a/tests/rm/rm2 b/tests/rm/rm2
index c73349f..0cd0892 100755
--- a/tests/rm/rm2
+++ b/tests/rm/rm2
@@ -20,10 +20,10 @@
 print_ver_ rm
 skip_if_root_

-mkdir -p a/0 || framework_failure
-mkdir -p a/1/2 b/3 || framework_failure
-mkdir a/2 a/3 || framework_failure
-chmod u-x a/1 b || framework_failure
+mkdir -p a/0 || framework_failure_
+mkdir -p a/1/2 b/3 || framework_failure_
+mkdir a/2 a/3 || framework_failure_
+chmod u-x a/1 b || framework_failure_

 # Exercise two separate code paths -- though both result
diff --git a/tests/rm/rm3 b/tests/rm/rm3
index 5e1eb71..56aea8c 100755
--- a/tests/rm/rm3
+++ b/tests/rm/rm3
@@ -20,14 +20,14 @@
 print_ver_ rm
 skip_if_root_

-mkdir -p z || framework_failure
-cd z || framework_failure
-touch empty empty-u || framework_failure
+mkdir -p z || framework_failure_
+cd z || framework_failure_
+touch empty empty-u || framework_failure_
 echo not-empty > fu
 ln -s empty-f slink
 ln -s . slinkdot
-mkdir d du || framework_failure
-chmod u-w fu du empty-u || framework_failure
+mkdir d du || framework_failure_
+chmod u-w fu du empty-u || framework_failure_
 cd ..

diff --git a/tests/rm/rm4 b/tests/rm/rm4
index a02cf74..08ed64a 100755
--- a/tests/rm/rm4
+++ b/tests/rm/rm4
@@ -20,7 +20,7 @@
 print_ver_ rm
 skip_if_root_

-mkdir dir || framework_failure
+mkdir dir || framework_failure_

 # This should fail.
diff --git a/tests/rm/rm5 b/tests/rm/rm5
index 54d0e4c..5c33bf7 100755
--- a/tests/rm/rm5
+++ b/tests/rm/rm5
@@ -20,14 +20,14 @@
 print_ver_ rm
 skip_if_root_

-mkdir -p d/e || framework_failure
-cat <<EOF > in || framework_failure
+mkdir -p d/e || framework_failure_
+cat <<EOF > in || framework_failure_
 y
 y
 y
 EOF

-cat <<\EOF > exp || framework_failure
+cat <<\EOF > exp || framework_failure_
 rm: descend into directory `d'
 rm: remove directory `d/e'
 rm: remove directory `d'
diff --git a/tests/rm/unread2 b/tests/rm/unread2
index d41e7a7..ae3365f 100755
--- a/tests/rm/unread2
+++ b/tests/rm/unread2
@@ -20,7 +20,7 @@
 print_ver_ rm
 skip_if_root_

-mkdir -p a/b || framework_failure
+mkdir -p a/b || framework_failure_
 chmod u-r a

diff --git a/tests/rm/unread3 b/tests/rm/unread3
index 021662b..7553af5 100755
--- a/tests/rm/unread3
+++ b/tests/rm/unread3
@@ -20,7 +20,7 @@
 print_ver_ rm
 skip_if_root_

-mkdir -p a/1 b c d/2 e/3 || framework_failure
+mkdir -p a/1 b c d/2 e/3 || framework_failure_

 t=`pwd`
diff --git a/tests/rm/v-slash b/tests/rm/v-slash
index ba38553..6620742 100755
--- a/tests/rm/v-slash
+++ b/tests/rm/v-slash
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rm

-mkdir a || framework_failure
-touch a/x || framework_failure
+mkdir a || framework_failure_
+touch a/x || framework_failure_

 rm --verbose -r a/// > out || fail=1
diff --git a/tests/rmdir/fail-perm b/tests/rmdir/fail-perm
index 9af747b..8d012c0 100755
--- a/tests/rmdir/fail-perm
+++ b/tests/rmdir/fail-perm
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rmdir

-mkdir d d/e d/e/f || framework_failure
-chmod a-w d || framework_failure
+mkdir d d/e d/e/f || framework_failure_
+chmod a-w d || framework_failure_

 # This rmdir command outputs two diagnostics.
diff --git a/tests/rmdir/ignore b/tests/rmdir/ignore
index b6faaea..c8db224 100755
--- a/tests/rmdir/ignore
+++ b/tests/rmdir/ignore
@@ -20,7 +20,7 @@
 print_ver_ rmdir

 cwd=`pwd`
-mkdir -p "$cwd/a/b/c" "$cwd/a/x" || framework_failure
+mkdir -p "$cwd/a/b/c" "$cwd/a/x" || framework_failure_

 rmdir -p --ignore-fail-on-non-empty "$cwd/a/b/c" || fail=1
 # $cwd/a/x should remain
diff --git a/tests/rmdir/t-slash b/tests/rmdir/t-slash
index e7785c3..9027433 100755
--- a/tests/rmdir/t-slash
+++ b/tests/rmdir/t-slash
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ rmdir

-mkdir dir || framework_failure
+mkdir dir || framework_failure_

 # Prior to coreutils-4.5.2, this would fail with the following:
diff --git a/tests/split/b-chunk b/tests/split/b-chunk
index 48c57e0..3191620 100755
--- a/tests/split/b-chunk
+++ b/tests/split/b-chunk
@@ -29,7 +29,7 @@ rm x??
 split -e -n 10 /dev/null || fail=1
 stat x?? 2>/dev/null && fail=1

-printf '1\n2\n3\n4\n5\n' > in || framework_failure
+printf '1\n2\n3\n4\n5\n' > in || framework_failure_

 split -n 3 in > out || fail=1
 split -n 1/3 in > b1 || fail=1
diff --git a/tests/split/fail b/tests/split/fail
index 1fe368c..039f457 100755
--- a/tests/split/fail
+++ b/tests/split/fail
@@ -20,7 +20,7 @@
 print_ver_ split
 getlimits_

-touch in || framework_failure
+touch in || framework_failure_

 split -a 0 in 2> /dev/null || fail=1
diff --git a/tests/split/l-chunk b/tests/split/l-chunk
index 8b4d157..7bf6989 100755
--- a/tests/split/l-chunk
+++ b/tests/split/l-chunk
@@ -48,7 +48,7 @@ stat x?? 2>/dev/null && fail=1
 lines=\
 12345~1~12345~1~12345~1~12345~1~12345~~~12345~1~12345~1~12345~1~12345~1~12345~1~

-printf "%s" "$lines" | tr '~' '\n' > in || framework_failure
+printf "%s" "$lines" | tr '~' '\n' > in || framework_failure_

 echo 'split: 16: invalid chunk number' > exp
 split -n l/16/15 in 2>err && fail=1
@@ -60,9 +60,9 @@ printf '%s' "\
 06 08 08 02 06 08 08 02 06 08 08 10
 06 08 02 06 08 00 08 02 06 08 02 06 08 00 10
 06 00 08 00 02 06 00 02 06 00 08 00 01 07 00 02 06 00 08 00 02 16
-" > exp || framework_failure
+" > exp || framework_failure_

-sed 's/00 *//g' exp > exp.elide_empty || framework_failure
+sed 's/00 *//g' exp > exp.elide_empty || framework_failure_

 DEBUGGING=
 test "$DEBUGGING" && test "$VERBOSE" && set +x
diff --git a/tests/split/lines b/tests/split/lines
index 932c178..1612c2e 100755
--- a/tests/split/lines
+++ b/tests/split/lines
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ split

-printf '1\n2\n3\n4\n5\n' > in || framework_failure
+printf '1\n2\n3\n4\n5\n' > in || framework_failure_

 split --lines=2 in > out || fail=1
 cat <<\EOF > exp-1
diff --git a/tests/split/r-chunk b/tests/split/r-chunk
index d3165fb..ea2ac9f 100755
--- a/tests/split/r-chunk
+++ b/tests/split/r-chunk
@@ -31,7 +31,7 @@ rm x??
 split -e -n r/10 /dev/null || fail=1
 stat x?? 2>/dev/null && fail=1

-printf '1\n2\n3\n4\n5\n' > in || framework_failure
+printf '1\n2\n3\n4\n5\n' > in || framework_failure_

 split -n r/3 in > out || fail=1
 test -s out && fail=1
diff --git a/tests/split/suffix-length b/tests/split/suffix-length
index 7577aaa..efb0d81 100755
--- a/tests/split/suffix-length
+++ b/tests/split/suffix-length
@@ -22,7 +22,7 @@ print_ver_ split
 a_z='a b c d e f g h i j k l m n o p q r s t u v w x y z'

 # Generate a 27-byte file
-printf %s $a_z 0 |tr -d ' ' > in || framework_failure
+printf %s $a_z 0 |tr -d ' ' > in || framework_failure_

 files=
 for i in $a_z; do
@@ -32,10 +32,10 @@ files="${files}xba"

 for f in $files; do
   printf 'creating file `%s'\''\n' $f
-done > exp || framework_failure
+done > exp || framework_failure_

 echo split: output file suffixes exhausted \
-  > exp-too-short || framework_failure
+  > exp-too-short || framework_failure_

 # This should fail.
diff --git a/tests/tail-2/F-vs-rename b/tests/tail-2/F-vs-rename
index b615ad3..5b4223e 100755
--- a/tests/tail-2/F-vs-rename
+++ b/tests/tail-2/F-vs-rename
@@ -21,7 +21,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ tail

-touch a b || framework_failure
+touch a b || framework_failure_

 debug='---disable-inotify'
 debug=
diff --git a/tests/tail-2/big-4gb b/tests/tail-2/big-4gb
index 11faed5..8740811 100755
--- a/tests/tail-2/big-4gb
+++ b/tests/tail-2/big-4gb
@@ -25,8 +25,8 @@ expensive_
 # at the beginning and another set of 8 bytes at the end.
 # The rest will be NUL bytes.  On most modern systems, the following
 # creates a file that takes up only a few KB.  Here, du -sh says 16K.
-echo abcdefgh | tr -d '\n' > big || framework_failure
-echo 87654321 | tr -d '\n' > tmp || framework_failure
+echo abcdefgh | tr -d '\n' > big || framework_failure_
+echo 87654321 | tr -d '\n' > tmp || framework_failure_
 # Seek 4GB - 8
 dd bs=1 seek=4294967288 if=tmp of=big 2> err || dd_failed=1
 if test "$dd_failed" = 1; then
diff --git a/tests/tail-2/follow-stdin b/tests/tail-2/follow-stdin
index e79f8f0..51520ab 100755
--- a/tests/tail-2/follow-stdin
+++ b/tests/tail-2/follow-stdin
@@ -19,8 +19,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ tail

-echo line > exp || framework_failure
-echo line > in || framework_failure
+echo line > exp || framework_failure_
+echo line > in || framework_failure_

 timeout 1 tail -f < in > out 2> err

diff --git a/tests/tail-2/inotify-hash-abuse b/tests/tail-2/inotify-hash-abuse
index a01e574..9415f96 100755
--- a/tests/tail-2/inotify-hash-abuse
+++ b/tests/tail-2/inotify-hash-abuse
@@ -21,7 +21,7 @@ print_ver_ tail

 # 9 is a magic number, related to internal details of tail.c and hash.c
 n=9
-seq $n | xargs touch || framework_failure
+seq $n | xargs touch || framework_failure_

 debug='---disable-inotify'
 debug=
diff --git a/tests/tail-2/inotify-hash-abuse2 b/tests/tail-2/inotify-hash-abuse2
index fc2b24b..424c2eb 100755
--- a/tests/tail-2/inotify-hash-abuse2
+++ b/tests/tail-2/inotify-hash-abuse2
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ tail

-touch f || framework_failure
+touch f || framework_failure_

 debug='---disable-inotify -s .001'
 debug=
diff --git a/tests/tail-2/inotify-race b/tests/tail-2/inotify-race
index b88b847..6c4c02b 100755
--- a/tests/tail-2/inotify-race
+++ b/tests/tail-2/inotify-race
@@ -28,8 +28,8 @@ print_ver_ tail
 # cleanup and exit correctly when it receives a SIGTERM, thus hanging the test.
 very_expensive_

-touch file || framework_failure
-touch tail.out || framework_failure
+touch file || framework_failure_
+touch tail.out || framework_failure_

 ( timeout 10s gdb --version ) > gdb.out 2>&1
 case $(cat gdb.out) in
diff --git a/tests/tail-2/pid b/tests/tail-2/pid
index f75c3de..31594e2 100755
--- a/tests/tail-2/pid
+++ b/tests/tail-2/pid
@@ -20,7 +20,7 @@
 print_ver_ tail
 getlimits_

-touch empty here || framework_failure
+touch empty here || framework_failure_

 for inotify in ---disable-inotify ''; do
diff --git a/tests/tail-2/pipe-f2 b/tests/tail-2/pipe-f2
index 3422c23..f1ae470 100755
--- a/tests/tail-2/pipe-f2
+++ b/tests/tail-2/pipe-f2
@@ -22,7 +22,7 @@ print_ver_ tail
 mkfifo_or_skip_ fifo

 echo 1 > fifo &
-echo 1 > exp || framework_failure
+echo 1 > exp || framework_failure_

 timeout 10 tail -f fifo > out
 test $? = 124 || fail=1
diff --git a/tests/tail-2/start-middle b/tests/tail-2/start-middle
index ab6ad57..3dcbacb 100755
--- a/tests/tail-2/start-middle
+++ b/tests/tail-2/start-middle
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ tail

-(echo 1; echo 2) > k || framework_failure
+(echo 1; echo 2) > k || framework_failure_

 sh -c 'read x; tail' < k > out || fail=1
diff --git a/tests/tail-2/tail-n0f b/tests/tail-2/tail-n0f
index d17a6c2..1720a6e 100755
--- a/tests/tail-2/tail-n0f
+++ b/tests/tail-2/tail-n0f
@@ -26,8 +26,8 @@ print_ver_ tail

 require_proc_pid_status_

-touch empty || framework_failure
-echo anything > nonempty || framework_failure
+touch empty || framework_failure_
+echo anything > nonempty || framework_failure_

 for inotify in ---disable-inotify ''; do
diff --git a/tests/tail-2/wait b/tests/tail-2/wait
index 8fd1994..a111970 100755
--- a/tests/tail-2/wait
+++ b/tests/tail-2/wait
@@ -20,8 +20,8 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ tail

-touch here || framework_failure
-{ touch unreadable && chmod a-r unreadable; } || framework_failure
+touch here || framework_failure_
+{ touch unreadable && chmod a-r unreadable; } || framework_failure_

 for inotify in ---disable-inotify ''; do
@@ -58,7 +58,7 @@ for inotify in ---disable-inotify ''; do
   {
     local delay="$1"

-    touch k || framework_failure
+    touch k || framework_failure_
     tail -s.1 --max-unchanged-stats=2 -F $inotify k > tail.out &
     pid=$!
     sleep $delay
diff --git a/tests/touch/60-seconds b/tests/touch/60-seconds
index 1bf3123..578aedc 100755
--- a/tests/touch/60-seconds
+++ b/tests/touch/60-seconds
@@ -19,7 +19,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ touch

-echo 60.000000000 > exp || framework_failure
+echo 60.000000000 > exp || framework_failure_

 # Before coreutils-7.7, this would fail, complaining of
diff --git a/tests/touch/empty-file b/tests/touch/empty-file
index 9c98043..9af34e1 100755
--- a/tests/touch/empty-file
+++ b/tests/touch/empty-file
@@ -36,12 +36,12 @@ SLEEP_SECONDS=${SLEEP_SECONDS=$DEFAULT_SLEEP_SECONDS}

 for d in $TOUCH_DIR_LIST; do
   rm -rf $d/a $d/b $d/c
-  > $d/a || framework_failure
-  test -f $d/a || framework_failure
-  > $d/b || framework_failure
-  test -f $d/b || framework_failure
-  > $d/c || framework_failure
-  test -f $d/c || framework_failure
+  > $d/a || framework_failure_
+  test -f $d/a || framework_failure_
+  > $d/b || framework_failure_
+  test -f $d/b || framework_failure_
+  > $d/c || framework_failure_
+  test -f $d/c || framework_failure_
 done

 echo sleeping for $SLEEP_SECONDS seconds...
diff --git a/tests/touch/no-dereference b/tests/touch/no-dereference
index b732746..cf69ffc 100755
--- a/tests/touch/no-dereference
+++ b/tests/touch/no-dereference
@@ -19,9 +19,9 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ touch

-ln -s nowhere dangling || framework_failure
-touch file || framework_failure
-ln -s file link || framework_failure
+ln -s nowhere dangling || framework_failure_
+touch file || framework_failure_
+ln -s file link || framework_failure_

 # These first tests should work on every platform.
diff --git a/tests/touch/no-rights b/tests/touch/no-rights
index 159062b..d8b4ae6 100755
--- a/tests/touch/no-rights
+++ b/tests/touch/no-rights
@@ -21,11 +21,11 @@
 print_ver_ touch

 # Make sure t2 is newer than t1.
-touch -d '2000-01-01 00:00' t1 || framework_failure
-touch -d '2000-01-02 00:00' t2 || framework_failure
+touch -d '2000-01-01 00:00' t1 || framework_failure_
+touch -d '2000-01-02 00:00' t2 || framework_failure_

 set x `ls -t t1 t2`
-test "$*" = "x t2 t1" || framework_failure
+test "$*" = "x t2 t1" || framework_failure_

 chmod 0 t1
diff --git a/tests/touch/now-owned-by-other b/tests/touch/now-owned-by-other
index b4d5d04..23c245d 100755
--- a/tests/touch/now-owned-by-other
+++ b/tests/touch/now-owned-by-other
@@ -23,8 +23,8 @@ require_root_
 group_num=$(id -g $NON_ROOT_USERNAME)

 # Create a file owned by root, and writable by $NON_ROOT_USERNAME.
-echo > root-owned || framework_failure
-chgrp +$group_num . root-owned || framework_failure
+echo > root-owned || framework_failure_
+chgrp +$group_num . root-owned || framework_failure_
 chmod g+w root-owned

 # Ensure that the current directory is searchable by $NON_ROOT_USERNAME.
diff --git a/tests/touch/read-only b/tests/touch/read-only
index 4745786..5854554 100755
--- a/tests/touch/read-only
+++ b/tests/touch/read-only
@@ -20,8 +20,8 @@
 print_ver_ touch
 skip_if_root_

-: > read-only || framework_failure
-chmod 444 read-only || framework_failure
+: > read-only || framework_failure_
+chmod 444 read-only || framework_failure_

 touch read-only || fail=1
diff --git a/tests/touch/relative b/tests/touch/relative
index 47f358b..a530eaa 100755
--- a/tests/touch/relative
+++ b/tests/touch/relative
@@ -20,7 +20,7 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ touch

-TZ=UTC0 touch --date='2004-01-16 12:00 +0000' f || framework_failure
+TZ=UTC0 touch --date='2004-01-16 12:00 +0000' f || framework_failure_

 # Set times back by 5 days.
diff --git a/tests/touch/trailing-slash b/tests/touch/trailing-slash
index 2e2d2a7..605668f 100755
--- a/tests/touch/trailing-slash
+++ b/tests/touch/trailing-slash
@@ -19,12 +19,12 @@
 . "${srcdir=.}/init.sh"; path_prepend_ ../src
 print_ver_ touch

-ln -s nowhere dangling || framework_failure
-ln -s loop loop || framework_failure
-touch file || framework_failure
-ln -s file link1 || framework_failure
-mkdir dir || framework_failure
-ln -s dir link2 || framework_failure
+ln -s nowhere dangling || framework_failure_
+ln -s loop loop || framework_failure_
+touch file || framework_failure_
+ln -s file link1 || framework_failure_
+mkdir dir || framework_failure_
+ln -s dir link2 || framework_failure_

 # Trailing slash can only appear on directory or symlink-to-directory.
--
1.7.6.351.gb35ac