From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id YIF5DllOs15afQAA0tVLHw (envelope-from ) for ; Wed, 06 May 2020 23:55:05 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id 0GA7DGVOs14DNgAA1q6Kng (envelope-from ) for ; Wed, 06 May 2020 23:55:17 +0000 Received: from arlo.cworth.org (arlo.cworth.org [50.126.95.6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 0E1C7941030 for ; Wed, 6 May 2020 23:55:13 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id 3F7436DE102E; Wed, 6 May 2020 16:55:06 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BlnyAmG5ZagK; Wed, 6 May 2020 16:55:05 -0700 (PDT) Received: from arlo.cworth.org (localhost [IPv6:::1]) by arlo.cworth.org (Postfix) with ESMTP id 40CC76DE0F33; Wed, 6 May 2020 16:55:04 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id 5DFB76DE0F39 for ; Wed, 6 May 2020 16:55:02 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SsnbYE9HMzcP for ; Wed, 6 May 2020 16:55:00 -0700 (PDT) Received: from che.mayfirst.org (unknown [162.247.75.117]) by arlo.cworth.org (Postfix) with ESMTPS id C78A46DE0A7E for ; Wed, 6 May 2020 16:54:59 -0700 (PDT) DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019; t=1588809297; h=from : to : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : from; bh=4bv+3AbxExB+mQco/TIlSdw+ANrOfzELxB3pgZT0BAQ=; b=1pK34tvXacJBR1f99/jjKYPsWokDWMz8PuUAco41H0f6h5+0zgOvmW5tJiLm4PENmHes2 YtQJ6pP4lsIJY55AA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019rsa; t=1588809297; h=from : to : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : from; bh=4bv+3AbxExB+mQco/TIlSdw+ANrOfzELxB3pgZT0BAQ=; b=4FzaekS8gxBG0gaWdI3mDMu+ZdR+hH5mpIbMpmhQsmg4SzKdF9AE0f8CJXQbhbuPihoAD fVYgzm2ftGktmVrJDKa14H2kqQLEapvsilkBVJRbLfm1b41wMqXWr7+f+cH5UAwuONzjmgN 1cxGX7Dq2JUn7uK82zb/TU79BL9LqJKttZtWIorQM4+F87Ix2wSGwLm9PxiobQ2CZ6/NsK8 Eg35xXAtTfg2ZnnE6r6UnSiFvpkGd6LqE55PnWrvTZIeYuM8EHRgVjv1Ygd48Tqhwi/qbzk 0H0ON3A1ERNFT/YN3OG88bZps3Nxa2UvcRjLm/PvSN8npdcAcqqIZQowvFMQ== Received: from fifthhorseman.net (unknown [IPv6:2001:470:1f07:60d:f2de:f1ff:fec3:d109]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by che.mayfirst.org (Postfix) with ESMTPSA id 0F4C8F9A6 for ; Wed, 6 May 2020 19:54:57 -0400 (EDT) Received: by fifthhorseman.net (Postfix, from userid 1000) id 34A122029F; Wed, 6 May 2020 19:54:38 -0400 (EDT) From: Daniel Kahn Gillmor To: Notmuch Mail Subject: [PATCH 1/2] test-lib: mark function variables as local Date: Wed, 6 May 2020 19:54:37 -0400 Message-Id: <20200506235438.100518-1-dkg@fifthhorseman.net> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: notmuch-bounces@notmuchmail.org Sender: "notmuch" X-Scanner: scn0 X-Spam-Score: 2.59 Authentication-Results: aspmx1.migadu.com; dkim=fail (body hash did not verify) header.d=fifthhorseman.net header.s=2019 header.b=1pK34tvX; dkim=fail (body hash did not verify) header.d=fifthhorseman.net header.s=2019rsa header.b=4FzaekS8; dmarc=fail reason="SPF not aligned (relaxed)" header.from=fifthhorseman.net (policy=none); spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 50.126.95.6 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Scan-Result: default: False [2.59 / 13.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; GENERIC_REPUTATION(0.00)[-0.4664974289589]; MX_INVALID(1.00)[]; DWL_DNSWL_FAIL(0.00)[50.126.95.6:server fail]; R_SPF_ALLOW(-0.20)[+a]; IP_REPUTATION_HAM(0.00)[asn: 27017(-0.18), country: US(-0.00), ip: 50.126.95.6(-0.47)]; R_DKIM_REJECT(1.00)[fifthhorseman.net:s=2019,fifthhorseman.net:s=2019rsa]; TO_DN_ALL(0.00)[]; DKIM_TRACE(0.00)[fifthhorseman.net:-]; MAILLIST(-0.20)[mailman]; RCVD_IN_DNSWL_FAIL(0.00)[50.126.95.6:server fail]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; ASN(0.00)[asn:27017, ipnet:50.126.64.0/18, country:US]; FROM_NEQ_ENVFROM(0.00)[dkg@fifthhorseman.net,notmuch-bounces@notmuchmail.org]; ARC_NA(0.00)[]; URIBL_BLOCKED(0.00)[fifthhorseman.net:email,notmuchmail.org:email,test-lib.sh:url]; FROM_HAS_DN(0.00)[]; SPF_REPUTATION_HAM(0.00)[-0.44268054415243]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[notmuch@notmuchmail.org]; HAS_LIST_UNSUB(-0.01)[]; RCPT_COUNT_ONE(0.00)[1]; MID_CONTAINS_FROM(1.00)[]; RCVD_COUNT_SEVEN(0.00)[8]; FORGED_SENDER_MAILLIST(0.00)[]; DMARC_POLICY_SOFTFAIL(0.10)[fifthhorseman.net : SPF not aligned (relaxed),none] X-TUID: eM88FzF6k4je 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 --- 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