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>
38 lines
694 B
Bash
38 lines
694 B
Bash
#!/bin/sh
|
|
|
|
test_expect_success 'set up terminal for tests' '
|
|
if test -t 1 && test -t 2
|
|
then
|
|
>have_tty
|
|
elif
|
|
test_have_prereq PERL &&
|
|
"$PERL_PATH" "$TEST_DIRECTORY"/test-terminal.perl \
|
|
sh -c "test -t 1 && test -t 2"
|
|
then
|
|
>test_terminal_works
|
|
fi
|
|
'
|
|
|
|
if test -e have_tty
|
|
then
|
|
test_terminal_() { "$@"; }
|
|
test_set_prereq TTY
|
|
elif test -e test_terminal_works
|
|
then
|
|
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_ "$@"
|
|
}
|