Some tests (e.g. crypto) do a common initialization required for all subtests. The patch adds a check for missing external dependencies during this initialization. If any prerequisites are missing, all subtests are skipped.
The check is run on the first call of test_reset_state_ function, so no changes for the tests are needed. --- test/test-lib.sh | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/test/test-lib.sh b/test/test-lib.sh index acac8ca..c11493d 100755 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -880,44 +880,54 @@ test_emacs () { # start a detached session with an emacs server # user's TERM is given to dtach which assumes a minimally # VT100-compatible terminal -- and emacs inherits that TERM=$ORIGINAL_TERM dtach -n "$TMP_DIRECTORY/emacs-dtach-socket.$$" \ sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \ --no-window-system \ --eval '(setq server-name \"$server_name\")' \ --eval '(server-start)' \ --eval '(orphan-watchdog $$)'" || return EMACS_SERVER="$server_name" # wait until the emacs server is up until test_emacs '()' 2>/dev/null; do sleep 1 done fi emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)" } test_reset_state_ () { + test -z "$test_init_done_" && test_init_ + test_subtest_known_broken_= test_subtest_missing_external_prereqs_= } +# called once before the first subtest +test_init_ () { + test_init_done_=t + + # skip all tests if there were external prerequisites missing during init + test_check_missing_external_prereqs_ "all tests in $this_test" && test_done +} + find_notmuch_path () { dir="$1" while [ -n "$dir" ]; do bin="$dir/notmuch" if [ -x "$bin" ]; then echo "$dir" return fi dir="$(dirname "$dir")" if [ "$dir" = "/" ]; then break fi done } # Test the binaries we have just built. The tests are kept in # test/ subdirectory and are run in 'trash directory' subdirectory. -- 1.7.7.2