>From fb99de8a29cb783a112be774ca671bcde15a310c Mon Sep 17 00:00:00 2001
From: Bernhard Voelker
Date: Wed, 9 Jan 2019 00:24:34 +0100
Subject: [PATCH 09/12] tests: migrate 'refuse-noop' to the new testsuite
* find/testsuite/sv-48180-refuse-noop.sh: Move to ...
* tests/find/refuse-noop.sh: ... this, and apply the above.
Simplify, and make more robust.
* find/testsuite/Makefile.am (tests_shell_progs): Remove the reference
to this test ...
* tests/local.mk (all_tests): .. and add it here.
---
find/testsuite/Makefile.am | 1 -
find/testsuite/sv-48180-refuse-noop.sh | 118 -------------------------
tests/find/refuse-noop.sh | 36 ++++++++
tests/local.mk | 1 +
4 files changed, 37 insertions(+), 119 deletions(-)
delete mode 100755 find/testsuite/sv-48180-refuse-noop.sh
create mode 100755 tests/find/refuse-noop.sh
diff --git a/find/testsuite/Makefile.am b/find/testsuite/Makefile.am
index f8217828..dad736ff 100644
--- a/find/testsuite/Makefile.am
+++ b/find/testsuite/Makefile.am
@@ -253,7 +253,6 @@ find.posix/user-missing.exp
test_shell_progs = \
test_type-list.sh \
-sv-48180-refuse-noop.sh \
sv-52220.sh
EXTRA_DIST = $(EXTRA_DIST_EXP) $(EXTRA_DIST_XO) \
diff --git a/find/testsuite/sv-48180-refuse-noop.sh b/find/testsuite/sv-48180-refuse-noop.sh
deleted file mode 100755
index bb4ca724..00000000
--- a/find/testsuite/sv-48180-refuse-noop.sh
+++ /dev/null
@@ -1,118 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2016-2019 Free Software Foundation, Inc.
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-
-# This test verifies that find refuses the internal -noop, ---noop option.
-# Between findutils-4.3.1 and 4.6, find dumped core ($? = 139).
-
-testname="$(basename $0)"
-
-. "${srcdir}"/binary_locations.sh
-
-die() {
- echo "$@" >&2
- exit 1
-}
-
-# This is used to simplify checking of the return value
-# which is useful when ensuring a command fails as desired.
-# I.e., just doing `command ... &&fail=1` will not catch
-# a segfault in command for example. With this helper you
-# instead check an explicit exit code like
-# returns_ 1 command ... || fail
-returns_ () {
- # Disable tracing so it doesn't interfere with stderr of the wrapped command
- { set +x; } 2>/dev/null
-
- local exp_exit="$1"
- shift
- "$@"
- test $? -eq $exp_exit && ret_=0 || ret_=1
-
- set -x
- { return $ret_; } 2>/dev/null
-}
-
-# Define the nicest compare available (borrowed from gnulib).
-if diff_out_=`exec 2>/dev/null; diff -u "$0" "$0" < /dev/null` \
- && diff -u Makefile "$0" 2>/dev/null | grep '^[+]#!' >/dev/null; then
- # diff accepts the -u option and does not (like AIX 7 'diff') produce an
- # extra space on column 1 of every content line.
- if test -z "$diff_out_"; then
- compare () { diff -u "$@"; }
- else
- compare ()
- {
- if diff -u "$@" > diff.out; then
- # No differences were found, but Solaris 'diff' produces output
- # "No differences encountered". Hide this output.
- rm -f diff.out
- true
- else
- cat diff.out
- rm -f diff.out
- false
- fi
- }
- fi
-elif diff_out_=`exec 2>/dev/null; diff -c "$0" "$0" < /dev/null`; then
- if test -z "$diff_out_"; then
- compare () { diff -c "$@"; }
- else
- compare ()
- {
- if diff -c "$@" > diff.out; then
- # No differences were found, but AIX and HP-UX 'diff' produce output
- # "No differences encountered" or "There are no differences between the
- # files.". Hide this output.
- rm -f diff.out
- true
- else
- cat diff.out
- rm -f diff.out
- false
- fi
- }
- fi
-elif cmp -s /dev/null /dev/null 2>/dev/null; then
- compare () { cmp -s "$@"; }
-else
- compare () { cmp "$@"; }
-fi
-
-set -x
-tmpdir="$(mktemp -d)" \
- && cd "$tmpdir" \
- || die "FAIL: failed to set up the test in ${tmpdir}"
-
-fail=0
-# Exercise both the previous name of the pseudo-option '-noop',
-# and the now renamed '---noop' option for both find executables.
-for exe in "${ftsfind}" "${oldfind}"; do
- for opt in 'noop' '--noop'; do
- e="$(basename "$exe")"
- out="${e}${opt}.out"
- err="${e}${opt}.err"
- returns_ 1 "$exe" "-${opt}" >"$out" 2> "$err" || fail=1
- compare /dev/null "$out" || fail=1
- grep "find: unknown predicate .-${opt}." "$err" \
- || { cat "$err"; fail=1; }
- done
-done
-
-cd ..
-rm -rf "$tmpdir" || exit 1
-exit $fail
diff --git a/tests/find/refuse-noop.sh b/tests/find/refuse-noop.sh
new file mode 100755
index 00000000..856cf2db
--- /dev/null
+++ b/tests/find/refuse-noop.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+# This test verifies that find refuses the internal -noop, ---noop option.
+# Between findutils-4.3.1 and 4.6, find dumped core ($? = 139).
+# See Savannah bug #48180.
+
+# Copyright (C) 2016-2019 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+. "${srcdir=.}/tests/init.sh"
+print_ver_ find oldfind
+
+# Exercise both the previous name of the pseudo-option '-noop',
+# and the now renamed '---noop' option for both find executables.
+for exe in find oldfind; do
+ for opt in 'noop' '--noop'; do
+ rm -f out err || framework_failure_
+ returns_ 1 "$exe" "-${opt}" > out 2> err || fail=1
+ compare /dev/null out || fail=1
+ grep "find: unknown predicate .-${opt}." err \
+ || { cat err; fail=1; }
+ done
+done
+
+Exit $fail
diff --git a/tests/local.mk b/tests/local.mk
index fc345572..01176031 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -111,6 +111,7 @@ all_tests = \
tests/find/printf_inode.sh \
tests/find/execdir-fd-leak.sh \
tests/find/exec-plus-last-file.sh \
+ tests/find/refuse-noop.sh \
$(all_root_tests)
$(TEST_LOGS): $(PROGRAMS)
--
2.20.1