t7006 (pager): introduce helper for parameterized tests

The current tests test pager configuration for ‘git log’, but other
commands use a different setup procedure and should therefore be
tested separately.  Add a helper to make this easier.

This patch introduces the helper and changes some existing tests to
use it.  The only functional change should be the introduction of ‘git
log - ’ to a few test descriptions.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jonathan Nieder 2010-06-26 14:23:02 -05:00 committed by Junio C Hamano
parent 492b10766f
commit 3c7406d4b5

View File

@ -172,58 +172,94 @@ then
test_set_prereq SIMPLEPAGER test_set_prereq SIMPLEPAGER
fi fi
test_expect_success SIMPLEPAGER 'default pager is used by default' ' # Use this helper to make it easy for the caller of your
# terminal-using function to specify whether it should fail.
# If you write
#
# your_test() {
# parse_args "$@"
#
# $test_expectation "$cmd - behaves well" "
# ...
# $full_command &&
# ...
# "
# }
#
# then your test can be used like this:
#
# your_test expect_(success|failure) [test_must_fail] 'git foo'
#
parse_args() {
test_expectation="test_$1"
shift
if test "$1" = test_must_fail
then
full_command="test_must_fail test_terminal "
shift
else
full_command="test_terminal "
fi
cmd=$1
full_command="$full_command $1"
}
parse_args expect_success 'git log'
$test_expectation SIMPLEPAGER "$cmd - default pager is used by default" "
unset PAGER GIT_PAGER; 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 &&
cat >$less <<-\EOF && cat >\$less <<-\EOF &&
#!/bin/sh #!/bin/sh
wc >default_pager_used wc >default_pager_used
EOF EOF
chmod +x $less && chmod +x \$less &&
( (
PATH=.:$PATH && PATH=.:\$PATH &&
export PATH && export PATH &&
test_terminal git log $full_command
) && ) &&
test -e default_pager_used test -e default_pager_used
' "
test_expect_success TTY 'PAGER overrides default pager' ' parse_args expect_success 'git log'
$test_expectation TTY "$cmd - PAGER overrides default pager" "
unset GIT_PAGER; 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 &&
PAGER="wc >PAGER_used" && PAGER='wc >PAGER_used' &&
export PAGER && export PAGER &&
test_terminal git log && $full_command &&
test -e PAGER_used test -e PAGER_used
' "
test_expect_success TTY 'core.pager overrides PAGER' ' parse_args expect_success 'git log'
$test_expectation TTY "$cmd - core.pager overrides PAGER" "
unset GIT_PAGER; unset GIT_PAGER;
rm -f core.pager_used || rm -f core.pager_used ||
cleanup_fail && cleanup_fail &&
PAGER=wc && PAGER=wc &&
export PAGER && export PAGER &&
git config core.pager "wc >core.pager_used" && git config core.pager 'wc >core.pager_used' &&
test_terminal git log && $full_command &&
test -e core.pager_used test -e core.pager_used
' "
test_expect_success TTY 'GIT_PAGER overrides core.pager' ' parse_args expect_success 'git log'
$test_expectation TTY "$cmd - GIT_PAGER overrides core.pager" "
rm -f GIT_PAGER_used || rm -f GIT_PAGER_used ||
cleanup_fail && cleanup_fail &&
git config core.pager wc && git config core.pager wc &&
GIT_PAGER="wc >GIT_PAGER_used" && GIT_PAGER='wc >GIT_PAGER_used' &&
export GIT_PAGER && export GIT_PAGER &&
test_terminal git log && $full_command &&
test -e GIT_PAGER_used test -e GIT_PAGER_used
' "
test_done test_done