From: Junio C Hamano Date: Wed, 16 Jun 2010 23:22:57 +0000 (-0700) Subject: Merge branch 'jn/t7006-fixup' into maint X-Git-Tag: v1.7.2-rc0~63^2~8 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/82df0ef1c33a077313d29bd1d4692c0fadc29624?ds=inline;hp=-c Merge branch 'jn/t7006-fixup' into maint * jn/t7006-fixup: t7006: guard cleanup with test_expect_success --- 82df0ef1c33a077313d29bd1d4692c0fadc29624 diff --combined t/test-lib.sh index 7422bba47e,a596f2aa02..9bfa14be7f --- a/t/test-lib.sh +++ b/t/test-lib.sh @@@ -2,18 -2,6 +2,18 @@@ # # Copyright (c) 2005 Junio C Hamano # +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/ . # if --tee was passed, write the output not only to the terminal, but # additionally to the file test-results/$BASENAME.out, too. @@@ -66,10 -54,6 +66,10 @@@ unset GIT_OBJECT_DIRECTOR unset GIT_CEILING_DIRECTORIES unset SHA1_FILE_DIRECTORIES unset SHA1_FILE_DIRECTORY +unset GIT_NOTES_REF +unset GIT_NOTES_DISPLAY_REF +unset GIT_NOTES_REWRITE_REF +unset GIT_NOTES_REWRITE_MODE GIT_MERGE_VERBOSITY=5 export GIT_MERGE_VERBOSITY export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME @@@ -366,10 -350,8 +366,10 @@@ test_debug () } test_run_ () { + test_cleanup=: eval >&3 2>&4 "$1" - eval_ret="$?" + eval_ret=$? + eval >&3 2>&4 "$test_cleanup" return 0 } @@@ -530,6 -512,22 +530,22 @@@ test_must_fail () test $? -gt 0 -a $? -le 129 -o $? -gt 192 } + # Similar to test_must_fail, but tolerates success, too. This is + # meant to be used in contexts like: + # + # test_expect_success 'some command works without configuration' ' + # test_might_fail git config --unset all.configuration && + # do something + # ' + # + # Writing "git config --unset all.configuration || :" would be wrong, + # because we want to notice if it fails due to segv. + + test_might_fail () { + "$@" + test $? -ge 0 -a $? -le 129 -o $? -gt 192 + } + # test_cmp is a helper function to compare actual and expected output. # You can use it like: # @@@ -547,31 -545,6 +563,31 @@@ test_cmp() $GIT_TEST_CMP "$@" } +# This function can be used to schedule some commands to be run +# unconditionally at the end of the test to restore sanity: +# +# test_expect_success 'test core.capslock' ' +# git config core.capslock true && +# test_when_finished "git config --unset core.capslock" && +# hello world +# ' +# +# That would be roughly equivalent to +# +# test_expect_success 'test core.capslock' ' +# git config core.capslock true && +# hello world +# git config --unset core.capslock +# ' +# +# except that the greeting and config --unset must both succeed for +# the test to pass. + +test_when_finished () { + test_cleanup="{ $* + } && (exit \"\$eval_ret\"); eval_ret=\$?; $test_cleanup" +} + # Most tests can use the created repository, but some may need to create more. # Usage: test_create_repo test_create_repo () {