>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