test_terminal: catch use without TTY prerequisite

It is easy to forget to declare the TTY prerequisite when
writing tests on a system where it would always be satisfied
(because IO::Pty is installed; see v1.7.3-rc0~33^2, 2010-08-16
for example).  Automatically detect this problem so there is
no need to remember.

	test_terminal: need to declare TTY prerequisite
	test_must_fail: command not found: test_terminal echo hi

test_terminal returns status 127 in this case to simulate
not being available.

Also replace the SIMPLEPAGERTTY prerequisite on one test with
"SIMPLEPAGER,TTY", since (1) the latter is supported now and
(2) the prerequisite detection relies on the TTY prereq being
explicitly declared.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jonathan Nieder 2010-10-17 02:36:59 +08:00 committed by Junio C Hamano
parent 05236a5e9d
commit 996621eb4d
2 changed files with 12 additions and 8 deletions

View File

@ -15,14 +15,23 @@ test_expect_success 'set up terminal for tests' '
if test -e have_tty
then
test_terminal() { "$@"; }
test_terminal_() { "$@"; }
test_set_prereq TTY
elif test -e test_terminal_works
then
test_terminal() {
test_terminal_() {
"$PERL_PATH" "$TEST_DIRECTORY"/test-terminal.perl "$@"
}
test_set_prereq TTY
else
say "# no usable terminal, so skipping some tests"
fi
test_terminal () {
if ! test_declared_prereq TTY
then
echo >&2 'test_terminal: need to declare TTY prerequisite'
return 127
fi
test_terminal_ "$@"
}

View File

@ -184,11 +184,6 @@ test_expect_success 'color when writing to a file intended for a pager' '
colorful colorful.log
'
if test_have_prereq SIMPLEPAGER && test_have_prereq TTY
then
test_set_prereq SIMPLEPAGERTTY
fi
# Use this helper to make it easy for the caller of your
# terminal-using function to specify whether it should fail.
# If you write
@ -224,7 +219,7 @@ parse_args() {
test_default_pager() {
parse_args "$@"
$test_expectation SIMPLEPAGERTTY "$cmd - default pager is used by default" "
$test_expectation SIMPLEPAGER,TTY "$cmd - default pager is used by default" "
unset PAGER GIT_PAGER;
test_might_fail git config --unset core.pager &&
rm -f default_pager_used ||