From c0a121c9bccc6175dc3cdb705e2ec8cb2be9f71c Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Sat, 30 Jan 2010 16:02:36 +0000 Subject: tests: fix exit status of signal handlers in shell scripts The value of `$?' on entrance to signal handlers in shell scripts cannot be relied upon, so set the exit code explicitly. * cfg.mk (sc_always_defined_macros, sc_system_h_headers): Set the exit code in signal handler explicitly to 128 + SIG. * src/Makefile.am (sc_tight_scope): Likewise. * tests/test-lib.sh: Likewise. --- cfg.mk | 10 ++++++++-- src/Makefile.am | 5 ++++- tests/test-lib.sh | 5 ++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/cfg.mk b/cfg.mk index 753393099..71bcb5573 100644 --- a/cfg.mk +++ b/cfg.mk @@ -134,7 +134,10 @@ headers_with_interesting_macro_defs = \ # Don't define macros that we already get from gnulib header files. sc_always_defined_macros: .re-defmac @if test -f $(srcdir)/src/system.h; then \ - trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0 1 2 3 15; \ + trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0; \ + am__exit='(exit $rc); exit $rc'; \ + trap "rc=129; $$am__exit" 1; trap "rc=130; $$am__exit" 2; \ + trap "rc=131; $$am__exit" 3; trap "rc=143; $$am__exit" 15; \ grep -f .re-defmac $$($(VC_LIST)) \ && { echo '$(ME): define the above via some gnulib .h file' \ 1>&2; exit 1; } || :; \ @@ -153,7 +156,10 @@ sc_always_defined_macros: .re-defmac # the headers already included via system.h. sc_system_h_headers: .re-list @if test -f $(srcdir)/src/system.h; then \ - trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \ + trap 'rc=$$?; rm -f .re-list; exit $$rc' 0; \ + am__exit='(exit $rc); exit $rc'; \ + trap "rc=129; $$am__exit" 1; trap "rc=130; $$am__exit" 2; \ + trap "rc=131; $$am__exit" 3; trap "rc=143; $$am__exit" 15; \ grep -nE -f .re-list \ $$($(VC_LIST_EXCEPT) | grep '^src/') \ && { echo '$(ME): the above are already included via system.h'\ diff --git a/src/Makefile.am b/src/Makefile.am index 20b306dbc..db5359bdc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -721,7 +721,10 @@ sc_check-AUTHORS: $(all_programs) .PHONY: sc_tight_scope sc_tight_scope: $(bin_PROGRAMS) @t=exceptions-$$$$; \ - trap "s=$$?; rm -f $$t; exit $$s" 0 1 2 13 15; \ + trap 's=$$?; rm -f $$t; exit $$s' 0; \ + am__exit='(exit $s); exit $s'; \ + trap "s=129; $$am__exit" 1; trap "s=130; $$am__exit" 2; \ + trap "s=141; $$am__exit" 13; trap "s=143; $$am__exit" 15; \ src=`for f in $(SOURCES); do \ test -f $$f && d= || d=$(srcdir)/; echo $$d$$f; done`; \ hdr=`for f in $(noinst_HEADERS); do \ diff --git a/tests/test-lib.sh b/tests/test-lib.sh index 7ad4331b6..8bf5601e5 100644 --- a/tests/test-lib.sh +++ b/tests/test-lib.sh @@ -408,7 +408,10 @@ remove_tmp_() # Run each test from within a temporary sub-directory named after the # test itself, and arrange to remove it upon exception or normal exit. trap remove_tmp_ 0 -trap 'Exit $?' 1 2 13 15 +trap 'Exit 129' 1 +trap 'Exit 130' 2 +trap 'Exit 141' 13 +trap 'Exit 143' 15 cd "$t_" || error_ "failed to cd to $t_" -- cgit v1.2.3-54-g00ecf