Introduce sane_unset and use it to ensure proper && chaining

Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Elijah Newren 2010-10-03 14:00:14 -06:00 committed by Junio C Hamano
parent bc0f35ca23
commit 00648ba050
5 changed files with 37 additions and 29 deletions

View File

@ -259,14 +259,11 @@ Do:
test ... test ...
That way all of the commands in your tests will succeed or fail. If That way all of the commands in your tests will succeed or fail. If
you must ignore the return value of something (e.g., the return you must ignore the return value of something, consider using a
after unsetting a variable that was already unset is unportable) it's helper function (e.g. use sane_unset instead of unset, in order
best to indicate so explicitly with a semicolon: to avoid unportable return value for unsetting a variable that was
already unset), or prepending the command with test_might_fail or
unset HLAGH; test_must_fail.
git merge hla &&
git push gh &&
test ...
- Check the test coverage for your tests. See the "Test coverage" - Check the test coverage for your tests. See the "Test coverage"
below. below.

View File

@ -25,7 +25,7 @@ check_config () {
test_expect_success 'plain' ' test_expect_success 'plain' '
( (
unset GIT_DIR GIT_WORK_TREE sane_unset GIT_DIR GIT_WORK_TREE &&
mkdir plain && mkdir plain &&
cd plain && cd plain &&
git init git init
@ -35,7 +35,7 @@ test_expect_success 'plain' '
test_expect_success 'plain with GIT_WORK_TREE' ' test_expect_success 'plain with GIT_WORK_TREE' '
if ( if (
unset GIT_DIR sane_unset GIT_DIR &&
mkdir plain-wt && mkdir plain-wt &&
cd plain-wt && cd plain-wt &&
GIT_WORK_TREE=$(pwd) git init GIT_WORK_TREE=$(pwd) git init
@ -48,7 +48,7 @@ test_expect_success 'plain with GIT_WORK_TREE' '
test_expect_success 'plain bare' ' test_expect_success 'plain bare' '
( (
unset GIT_DIR GIT_WORK_TREE GIT_CONFIG sane_unset GIT_DIR GIT_WORK_TREE GIT_CONFIG &&
mkdir plain-bare-1 && mkdir plain-bare-1 &&
cd plain-bare-1 && cd plain-bare-1 &&
git --bare init git --bare init
@ -58,7 +58,7 @@ test_expect_success 'plain bare' '
test_expect_success 'plain bare with GIT_WORK_TREE' ' test_expect_success 'plain bare with GIT_WORK_TREE' '
if ( if (
unset GIT_DIR GIT_CONFIG sane_unset GIT_DIR GIT_CONFIG &&
mkdir plain-bare-2 && mkdir plain-bare-2 &&
cd plain-bare-2 && cd plain-bare-2 &&
GIT_WORK_TREE=$(pwd) git --bare init GIT_WORK_TREE=$(pwd) git --bare init
@ -72,7 +72,7 @@ test_expect_success 'plain bare with GIT_WORK_TREE' '
test_expect_success 'GIT_DIR bare' ' test_expect_success 'GIT_DIR bare' '
( (
unset GIT_CONFIG sane_unset GIT_CONFIG &&
mkdir git-dir-bare.git && mkdir git-dir-bare.git &&
GIT_DIR=git-dir-bare.git git init GIT_DIR=git-dir-bare.git git init
) && ) &&
@ -82,7 +82,7 @@ test_expect_success 'GIT_DIR bare' '
test_expect_success 'init --bare' ' test_expect_success 'init --bare' '
( (
unset GIT_DIR GIT_WORK_TREE GIT_CONFIG sane_unset GIT_DIR GIT_WORK_TREE GIT_CONFIG &&
mkdir init-bare.git && mkdir init-bare.git &&
cd init-bare.git && cd init-bare.git &&
git init --bare git init --bare
@ -93,7 +93,7 @@ test_expect_success 'init --bare' '
test_expect_success 'GIT_DIR non-bare' ' test_expect_success 'GIT_DIR non-bare' '
( (
unset GIT_CONFIG sane_unset GIT_CONFIG &&
mkdir non-bare && mkdir non-bare &&
cd non-bare && cd non-bare &&
GIT_DIR=.git git init GIT_DIR=.git git init
@ -104,7 +104,7 @@ test_expect_success 'GIT_DIR non-bare' '
test_expect_success 'GIT_DIR & GIT_WORK_TREE (1)' ' test_expect_success 'GIT_DIR & GIT_WORK_TREE (1)' '
( (
unset GIT_CONFIG sane_unset GIT_CONFIG &&
mkdir git-dir-wt-1.git && mkdir git-dir-wt-1.git &&
GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-1.git git init GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-1.git git init
) && ) &&
@ -114,7 +114,7 @@ test_expect_success 'GIT_DIR & GIT_WORK_TREE (1)' '
test_expect_success 'GIT_DIR & GIT_WORK_TREE (2)' ' test_expect_success 'GIT_DIR & GIT_WORK_TREE (2)' '
if ( if (
unset GIT_CONFIG sane_unset GIT_CONFIG &&
mkdir git-dir-wt-2.git && mkdir git-dir-wt-2.git &&
GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-2.git git --bare init GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-2.git git --bare init
) )
@ -127,7 +127,7 @@ test_expect_success 'GIT_DIR & GIT_WORK_TREE (2)' '
test_expect_success 'reinit' ' test_expect_success 'reinit' '
( (
unset GIT_CONFIG GIT_WORK_TREE GIT_CONFIG sane_unset GIT_CONFIG GIT_WORK_TREE GIT_CONFIG &&
mkdir again && mkdir again &&
cd again && cd again &&
@ -175,8 +175,8 @@ test_expect_success 'init with init.templatedir set' '
git config -f "$test_config" init.templatedir "${HOME}/templatedir-source" && git config -f "$test_config" init.templatedir "${HOME}/templatedir-source" &&
mkdir templatedir-set && mkdir templatedir-set &&
cd templatedir-set && cd templatedir-set &&
unset GIT_CONFIG_NOGLOBAL && sane_unset GIT_CONFIG_NOGLOBAL &&
unset GIT_TEMPLATE_DIR && sane_unset GIT_TEMPLATE_DIR &&
NO_SET_GIT_TEMPLATE_DIR=t && NO_SET_GIT_TEMPLATE_DIR=t &&
export NO_SET_GIT_TEMPLATE_DIR && export NO_SET_GIT_TEMPLATE_DIR &&
git init git init
@ -187,7 +187,7 @@ test_expect_success 'init with init.templatedir set' '
test_expect_success 'init --bare/--shared overrides system/global config' ' test_expect_success 'init --bare/--shared overrides system/global config' '
( (
test_config="$HOME"/.gitconfig && test_config="$HOME"/.gitconfig &&
unset GIT_CONFIG_NOGLOBAL && sane_unset GIT_CONFIG_NOGLOBAL &&
git config -f "$test_config" core.bare false && git config -f "$test_config" core.bare false &&
git config -f "$test_config" core.sharedRepository 0640 && git config -f "$test_config" core.sharedRepository 0640 &&
mkdir init-bare-shared-override && mkdir init-bare-shared-override &&
@ -202,7 +202,7 @@ test_expect_success 'init --bare/--shared overrides system/global config' '
test_expect_success 'init honors global core.sharedRepository' ' test_expect_success 'init honors global core.sharedRepository' '
( (
test_config="$HOME"/.gitconfig && test_config="$HOME"/.gitconfig &&
unset GIT_CONFIG_NOGLOBAL && sane_unset GIT_CONFIG_NOGLOBAL &&
git config -f "$test_config" core.sharedRepository 0666 && git config -f "$test_config" core.sharedRepository 0666 &&
mkdir shared-honor-global && mkdir shared-honor-global &&
cd shared-honor-global && cd shared-honor-global &&

View File

@ -41,7 +41,7 @@ else
fi fi
test_expect_success 'setup' ' test_expect_success 'setup' '
unset GIT_PAGER GIT_PAGER_IN_USE; sane_unset GIT_PAGER GIT_PAGER_IN_USE &&
test_might_fail git config --unset core.pager && test_might_fail git config --unset core.pager &&
PAGER="cat >paginated.out" && PAGER="cat >paginated.out" &&
@ -254,7 +254,7 @@ test_default_pager() {
parse_args "$@" parse_args "$@"
$test_expectation SIMPLEPAGERTTY "$cmd - default pager is used by default" " $test_expectation SIMPLEPAGERTTY "$cmd - default pager is used by default" "
unset PAGER GIT_PAGER; sane_unset PAGER GIT_PAGER &&
test_might_fail git config --unset core.pager && test_might_fail git config --unset core.pager &&
rm -f default_pager_used || rm -f default_pager_used ||
cleanup_fail && cleanup_fail &&
@ -277,7 +277,7 @@ test_PAGER_overrides() {
parse_args "$@" parse_args "$@"
$test_expectation TTY "$cmd - PAGER overrides default pager" " $test_expectation TTY "$cmd - PAGER overrides default pager" "
unset GIT_PAGER; sane_unset GIT_PAGER &&
test_might_fail git config --unset core.pager && test_might_fail git config --unset core.pager &&
rm -f PAGER_used || rm -f PAGER_used ||
cleanup_fail && cleanup_fail &&
@ -305,7 +305,7 @@ test_core_pager() {
parse_args "$@" parse_args "$@"
$test_expectation TTY "$cmd - repository-local core.pager setting $used_if_wanted" " $test_expectation TTY "$cmd - repository-local core.pager setting $used_if_wanted" "
unset GIT_PAGER; sane_unset GIT_PAGER &&
rm -f core.pager_used || rm -f core.pager_used ||
cleanup_fail && cleanup_fail &&
@ -333,7 +333,7 @@ test_pager_subdir_helper() {
parse_args "$@" parse_args "$@"
$test_expectation TTY "$cmd - core.pager $used_if_wanted from subdirectory" " $test_expectation TTY "$cmd - core.pager $used_if_wanted from subdirectory" "
unset GIT_PAGER; sane_unset GIT_PAGER &&
rm -f core.pager_used && rm -f core.pager_used &&
rm -fr sub || rm -fr sub ||
cleanup_fail && cleanup_fail &&

View File

@ -252,8 +252,8 @@ test_expect_success 'committer is automatic' '
echo >>negative && echo >>negative &&
( (
unset GIT_COMMITTER_EMAIL sane_unset GIT_COMMITTER_EMAIL &&
unset GIT_COMMITTER_NAME sane_unset GIT_COMMITTER_NAME &&
# must fail because there is no change # must fail because there is no change
test_must_fail git commit -e -m "sample" test_must_fail git commit -e -m "sample"
) && ) &&

View File

@ -268,6 +268,17 @@ remove_cr () {
tr '\015' Q | sed -e 's/Q$//' tr '\015' Q | sed -e 's/Q$//'
} }
# In some bourne shell implementations, the "unset" builtin returns
# nonzero status when a variable to be unset was not set in the first
# place.
#
# Use sane_unset when that should not be considered an error.
sane_unset () {
unset "$@"
return 0
}
test_tick () { test_tick () {
if test -z "${test_tick+set}" if test -z "${test_tick+set}"
then then