Matthieu Moy wrote: > Jonathan Nieder <jrnieder@xxxxxxxxx> writes: >> ( >> IFS== >> while read key value >> do >> ... >> done >> ) [...] > I don't think so since the "..." contains > > eval "$key=$value" Oh, whoops. Thanks for noticing. Here's an updated patch, for amusement value. No functional change intended. I don't think it's actually worth applying unless people actively working on this file find the result easier to work with. -- >8 -- Subject: t0300 (credentials): shell scripting style cleanups As Ben noticed, the helper used by this test script assigns a temporary value to IFS while calling the "read" builtin, which in ancient shells causes the value to leak into the environment and affect later code in the same script. Explicitly save and restore IFS to avoid rekindling old memories. While at it, put the "do" associated to a "while" statement on its own line to match the house style and define helper scripts in the test data section above all test assertions so the "setup" test itself is less cluttered and we can worry a little less about quoting issues. Inspired-by: Ben Walton <bwalton@xxxxxxxxxxxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- t/t0300-credentials.sh | 36 ++++++++++++++++++++---------------- 1 files changed, 20 insertions(+), 16 deletions(-) diff --git a/t/t0300-credentials.sh b/t/t0300-credentials.sh index edf65478..780d5dcb 100755 --- a/t/t0300-credentials.sh +++ b/t/t0300-credentials.sh @@ -4,33 +4,37 @@ test_description='basic credential helper tests' . ./test-lib.sh . "$TEST_DIRECTORY"/lib-credential.sh -test_expect_success 'setup helper scripts' ' - cat >dump <<-\EOF && +cat >dump <<-\EOF whoami=`echo $0 | sed s/.*git-credential-//` echo >&2 "$whoami: $*" - while IFS== read key value; do + save_IFS=$IFS + IFS== + while read key value + do echo >&2 "$whoami: $key=$value" eval "$key=$value" done - EOF + IFS=$save_IFS +EOF - cat >git-credential-useless <<-EOF && +cat >git-credential-useless <<-EOF #!$SHELL_PATH . ./dump exit 0 - EOF +EOF + +cat >git-credential-verbatim <<-EOF + #!$SHELL_PATH + user=\$1; shift + pass=\$1; shift + . ./dump + test -z "\$user" || echo username=\$user + test -z "\$pass" || echo password=\$pass +EOF + +test_expect_success setup ' chmod +x git-credential-useless && - - echo "#!$SHELL_PATH" >git-credential-verbatim && - cat >>git-credential-verbatim <<-\EOF && - user=$1; shift - pass=$1; shift - . ./dump - test -z "$user" || echo username=$user - test -z "$pass" || echo password=$pass - EOF chmod +x git-credential-verbatim && - PATH="$PWD:$PATH" ' -- 1.7.9 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html