Code

test_terminal: catch use without TTY prerequisite
authorJonathan Nieder <jrnieder@gmail.com>
Sat, 16 Oct 2010 18:36:59 +0000 (02:36 +0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 18 Oct 2010 23:20:19 +0000 (16:20 -0700)
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>
t/lib-terminal.sh
t/t7006-pager.sh

index 3258b8f0d5c36e0450ac5421b39b1ff4b3c379d0..5e7ee9a5c7ea33a5911006d6a19de0f3cbe121b9 100644 (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_ "$@"
+}
index 17e54d3e684f4ad786964694596be3723be5a7dd..5641b595596ea462ec649c531e7173709a012274 100755 (executable)
@@ -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 ||