fix: noconfirm auto-selects first AUR match
This commit is contained in:
Executable
+176
@@ -0,0 +1,176 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2005-2015, 2018-2021 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 <https://www.gnu.org/licenses/>.
|
||||
|
||||
SHELL=/bin/sh
|
||||
export SHELL
|
||||
|
||||
me=$(basename "$1" .test)
|
||||
medir=$(dirname "$1" | sed -e 's,.*examples/,,')
|
||||
|
||||
# Number of the current test.
|
||||
number=1
|
||||
|
||||
# Exit status of this script.
|
||||
status=0
|
||||
|
||||
# top_builddir.
|
||||
cwd=$(pwd)
|
||||
|
||||
# Whether to strip '> ...' lines from the expected output.
|
||||
# See bistromathic.test.
|
||||
strip_prompt=false
|
||||
|
||||
# If diff supports --strip-trailing-cr, use it, to avoid EOL issues
|
||||
# when testing Java programs on Windows.
|
||||
echo "checking for diff --strip-trailing-cr..."
|
||||
diff_opts=
|
||||
if diff --strip-trailing-cr "$1" "$1"; then
|
||||
diff_opts=--strip-trailing-cr
|
||||
fi
|
||||
echo "checking for diff --strip-trailing-cr... $diff_opts"
|
||||
|
||||
# The exercised program.
|
||||
abs_medir=$cwd/examples/$medir
|
||||
if test -x "$abs_medir/$me"; then
|
||||
prog ()
|
||||
{
|
||||
"$abs_medir/$me" "$@"
|
||||
}
|
||||
elif test -f "$abs_medir/$me.class"; then
|
||||
prog ()
|
||||
{
|
||||
"$SHELL" "$cwd/javaexec.sh" -cp "$abs_medir" "$me" "$@"
|
||||
}
|
||||
else
|
||||
echo "$me: ERROR: cannot find program to exercise in:"
|
||||
echo "$me: ERROR: $cwd/examples/$medir/$me"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# cleanup
|
||||
# -------
|
||||
cleanup ()
|
||||
{
|
||||
status=$?
|
||||
if test -z "$DEBUG"; then
|
||||
cd "$cwd"
|
||||
rm -rf $$.dir
|
||||
fi
|
||||
exit $status
|
||||
}
|
||||
trap cleanup 0 1 2 13 15
|
||||
mkdir $$.dir
|
||||
cd $$.dir
|
||||
|
||||
|
||||
# skip [MSG]
|
||||
# ----------
|
||||
# Skip this test.
|
||||
skip ()
|
||||
{
|
||||
if test x"$1" != x; then
|
||||
echo "SKIP: $1"
|
||||
fi
|
||||
# See Autoconf's doc on 'trap'.
|
||||
(exit 77); exit 77
|
||||
}
|
||||
|
||||
|
||||
# run [-n, -noerr, -t] EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS]
|
||||
# --------------------------------------------------------------------------
|
||||
# -n: no final end-of-line in expected-output
|
||||
# -noerr: ignore stderr, otherwise merge it into effective output.
|
||||
# -t: nuke the possible trailing white spaces in the effective output.
|
||||
run ()
|
||||
{
|
||||
echo=echo
|
||||
noerr=false
|
||||
rstrip=false
|
||||
while true; do
|
||||
case $1 in
|
||||
(-n) echo=printf; shift;;
|
||||
(-noerr) noerr=true; shift;;
|
||||
(-t) rstrip=true; shift;;
|
||||
(*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Expected exit status.
|
||||
sta_exp=$1
|
||||
shift
|
||||
|
||||
# Expected output.
|
||||
$echo "$1" |
|
||||
sed -e 's/Reducing stack by rule .* (line .*):/Reducing stack by rule XX (line XXX):/g' |
|
||||
if $strip_prompt; then
|
||||
# An extra EOL added in bistromathic's main. Keep that empty line.
|
||||
sed -e '/^> ./d;s/^> $//g'
|
||||
else
|
||||
cat
|
||||
fi >exp
|
||||
shift
|
||||
|
||||
# Effective exit status.
|
||||
sta_eff=0
|
||||
|
||||
prog "$@" - <input >out_eff 2>err_eff || sta_eff=$?
|
||||
|
||||
# Combine effective output and error streams.
|
||||
{
|
||||
if $rstrip; then
|
||||
sed -e 's/ *$//g' out_eff
|
||||
else
|
||||
cat out_eff
|
||||
fi
|
||||
if ! $noerr; then
|
||||
sed -e 's/^/err: /g' \
|
||||
-e 's/Reducing stack by rule .* (line .*):/Reducing stack by rule XX (line XXX):/g' \
|
||||
err_eff
|
||||
fi
|
||||
} >eff
|
||||
|
||||
if test $sta_eff -eq $sta_exp; then
|
||||
if diff $diff_opts eff exp >/dev/null 2>&1; then
|
||||
echo "$me: PASS: $number"
|
||||
else
|
||||
echo "$me: FAIL: $number"
|
||||
echo "$me: input:"
|
||||
sed -e 's/^/ /' input
|
||||
echo "$me: expected output:"
|
||||
sed -e 's/^/ /' exp
|
||||
echo "$me: effective output:"
|
||||
sed -e 's/^/ /' eff
|
||||
echo "$me: diff:"
|
||||
diff $diff_opts -u exp eff | sed -e 's/^/ /'
|
||||
status=1
|
||||
fi
|
||||
else
|
||||
echo "$me: FAIL: $number (expected status: $sta_exp, effective: $sta_eff)"
|
||||
cat err_eff
|
||||
status=1
|
||||
fi
|
||||
number=$(expr $number + 1)
|
||||
}
|
||||
|
||||
# We have cd'd one level deeper.
|
||||
case $1 in
|
||||
/*) . "$1" || status=2;;
|
||||
*) . "../$1" || status=2;;
|
||||
esac
|
||||
|
||||
exit $status
|
||||
Reference in New Issue
Block a user