Several functions in test/test-lib.sh used variable names that are also used outside of those functions (e.g. $output and $expected are used in many of the test scripts), but they are not expected to communicate via those variables.
We mark those variables "local" within test-lib.sh so that they do not get clobbered when used outside test-lib. Signed-off-by: Daniel Kahn Gillmor <d...@fifthhorseman.net> --- test/test-lib.sh | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/test/test-lib.sh b/test/test-lib.sh index 5c8eab7c..e8feab3b 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -109,7 +109,6 @@ unset ALTERNATE_EDITOR add_gnupg_home () { - local output [ -e "${GNUPGHOME}/gpg.conf" ] && return _gnupg_exit () { gpgconf --kill all 2>/dev/null || true; } at_exit_function _gnupg_exit @@ -427,7 +426,7 @@ emacs_fcc_message () # number of messages. add_email_corpus () { - corpus=${1:-default} + local corpus=${1:-default} rm -rf ${MAIL_DIR} cp -a $NOTMUCH_SRCDIR/test/corpora/$corpus ${MAIL_DIR} @@ -465,14 +464,14 @@ test_expect_equal () test "$#" = 2 || error "bug in the test script: not 2 parameters to test_expect_equal" - output="$1" - expected="$2" + local output="$1" + local expected="$2" if ! test_skip "$test_subtest_name" then if [ "$output" = "$expected" ]; then test_ok_ else - testname=$this_test.$test_count + local testname=$this_test.$test_count echo "$expected" > $testname.expected echo "$output" > $testname.output test_failure_ "$(diff -u $testname.expected $testname.output)" @@ -491,16 +490,16 @@ test_expect_equal_file () test "$#" = 2 || error "bug in the test script: not 2 parameters to test_expect_equal_file" - file1="$1" - file2="$2" + local file1="$1" + local file2="$2" if ! test_skip "$test_subtest_name" then if diff -q "$file1" "$file2" >/dev/null ; then test_ok_ else - testname=$this_test.$test_count - basename1=`basename "$file1"` - basename2=`basename "$file2"` + local testname=$this_test.$test_count + local basename1=`basename "$file1"` + local basename2=`basename "$file2"` cp "$file1" "$testname.$basename1" cp "$file2" "$testname.$basename2" test_failure_ "$(diff -u "$testname.$basename1" "$testname.$basename2")" @@ -516,9 +515,9 @@ test_expect_equal_json () { # decode stdin as ASCII. We need to read JSON in UTF-8, so # override Python's stdio encoding defaults. local script='import json, sys; json.dump(json.load(sys.stdin), sys.stdout, sort_keys=True, indent=4)' - output=$(echo "$1" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -c "$script" \ + local output=$(echo "$1" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -c "$script" \ || echo "$1") - expected=$(echo "$2" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -c "$script" \ + local expected=$(echo "$2" | PYTHONIOENCODING=utf-8 $NOTMUCH_PYTHON -c "$script" \ || echo "$2") shift 2 test_expect_equal "$output" "$expected" "$@" @@ -540,6 +539,7 @@ test_sort_json () { # read the source of test/json_check_nodes.py (or the output when # invoking it without arguments) for an explanation of the syntax. test_json_nodes () { + local output exec 1>&6 2>&7 # Restore stdout and stderr if [ -z "$inside_subtest" ]; then error "bug in the test script: test_json_eval without test_begin_subtest" @@ -577,7 +577,7 @@ test_emacs_expect_t () { inside_subtest= # Report success/failure. - result=$(cat OUTPUT) + local result=$(cat OUTPUT) if [ "$result" = t ] then test_ok_ @@ -717,7 +717,7 @@ declare -A test_subtest_missing_external_prereq_ # declare prerequisite for the given external binary test_declare_external_prereq () { - binary="$1" + local binary="$1" test "$#" = 2 && name=$2 || name="$binary(1)" if ! hash $binary 2>/dev/null; then @@ -734,7 +734,7 @@ $binary () { # called indirectly (e.g. from emacs). # Returns success if dependency is available, failure otherwise. test_require_external_prereq () { - binary="$1" + local binary="$1" if [[ ${test_missing_external_prereq_["${binary}"]} == t ]]; then # dependency is missing, call the replacement function to note it eval "$binary" @@ -1075,8 +1075,8 @@ test_ruby() { } test_C () { - exec_file="test${test_count}" - test_file="${exec_file}.c" + local exec_file="test${test_count}" + local test_file="${exec_file}.c" cat > ${test_file} ${TEST_CC} ${TEST_CFLAGS} -I${NOTMUCH_SRCDIR}/test -I${NOTMUCH_SRCDIR}/lib -o ${exec_file} ${test_file} -L${NOTMUCH_BUILDDIR}/lib/ -lnotmuch -ltalloc echo "== stdout ==" > OUTPUT.stdout @@ -1086,17 +1086,17 @@ test_C () { } make_shim () { - base_name="$1" - test_file="${base_name}.c" - shim_file="${base_name}.so" + local base_name="$1" + local test_file="${base_name}.c" + local shim_file="${base_name}.so" cat > ${test_file} ${TEST_CC} ${TEST_CFLAGS} ${TEST_SHIM_CFLAGS} -I${NOTMUCH_SRCDIR}/test -I${NOTMUCH_SRCDIR}/lib -o ${shim_file} ${test_file} ${TEST_SHIM_LDFLAGS} } notmuch_with_shim () { - base_name="$1" + local base_name="$1" shift - shim_file="${base_name}.so" + local shim_file="${base_name}.so" LD_PRELOAD=./${shim_file}${LD_PRELOAD:+:$LD_PRELOAD} notmuch-shared "$@" } -- 2.26.2 _______________________________________________ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch