examples: beware of portability issues with sh's trap

On AIX 7.2, when invoking "exit 77", we actually exit with 127.  The
"cleanup" function, called via trap, received an incorrect exit
status, something described in Autoconf's doc.
Reported by Bruno Haible.
https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00029.html
https://lists.gnu.org/archive/html/bug-bison/2020-05/msg00047.html

* examples/test (skip): New.
* examples/c/bistromathic/bistromathic.test,
* examples/c/reccalc/reccalc.test: Use it, to ensure $? is set to 77
when the trap is called.
This commit is contained in:
Akim Demaille
2020-05-04 06:25:04 +02:00
parent f1497356e8
commit 6135fdc152
3 changed files with 16 additions and 3 deletions

View File

@@ -46,8 +46,7 @@ if diff perfect effective >/dev/null 2>&1; then
elif diff ok effective >/dev/null 2>&1; then
strip_prompt=true
else
echo "SKIP: this is not the GNU Readline we expect"
exit 77
skip "this is not the GNU Readline we expect"
fi

View File

@@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
(seq 0) >/dev/null 2>&1 || exit 77
(seq 0) >/dev/null 2>&1 || skip "gimme one seq"
cat >input <<EOF
1+2*3

View File

@@ -68,6 +68,20 @@ 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 [-noerr, -n] EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS]
# ----------------------------------------------------------------------
# -noerr: ignore stderr, otherwise merge it into effective output.