summaryrefslogtreecommitdiff
path: root/log-tree.h
diff options
context:
space:
mode:
authorLibravatar Jonathan Nieder <jrnieder@gmail.com>2011-08-08 03:17:09 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-08-08 11:28:42 -0700
commita7c58f280a57ce64e058111b0adbcd6ea846cbdc (patch)
treef4ed4010c804f2fc6668ae2f9742d7aab98f552f /log-tree.h
parenttest: simplify return value of test_run_ (diff)
downloadtgif-a7c58f280a57ce64e058111b0adbcd6ea846cbdc.tar.xz
test: cope better with use of return for errors
In olden times, tests would quietly exit the script when they failed at an inconvenient moment, which was a little disconcerting. Therefore v0.99.5~24^2~4 (Trapping exit in tests, using return for errors, 2005-08-10) switched to an idiom of using "return" instead, wrapping evaluation of test code in a function to make that safe: test_run_ () { eval >&3 2>&4 "$1" eval_ret="$?" return 0 } Years later, the implementation of test_when_finished (v1.7.1.1~95, 2010-05-02) and v1.7.2-rc2~1^2~13 (test-lib: output a newline before "ok" under a TAP harness, 2010-06-24) took advantage of test_run_ as a place to put code shared by all test assertion functions, without paying attention to the function's former purpose: test_run_ () { ... eval >&3 2>&4 "$1" eval_ret=$? if should run cleanup then eval >&3 2>&4 "$test_cleanup" fi if TAP format requires a newline here then echo fi return 0 } That means cleanup commands and the newline to put TAP output at column 0 are skipped when tests use "return" to fail early. Fix it by introducing a test_eval_ function to catch the "return", with a comment explaining the new function's purpose for the next person who might touch this code. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'log-tree.h')
0 files changed, 0 insertions, 0 deletions