. ./test-lib.sh
rm -f stdout_is_tty
-test_expect_success 'is stdout a terminal?' '
+test_expect_success 'set up terminal for tests' '
if test -t 1
then
: > stdout_is_tty
+ elif
+ test_have_prereq PERL &&
+ "$PERL_PATH" "$TEST_DIRECTORY"/t7006/test-terminal.perl \
+ sh -c "test -t 1"
+ then
+ : > test_terminal_works
fi
'
if test -e stdout_is_tty
then
+ test_terminal() { "$@"; }
+ test_set_prereq TTY
+elif test -e test_terminal_works
+then
+ test_terminal() {
+ "$PERL_PATH" "$TEST_DIRECTORY"/t7006/test-terminal.perl "$@"
+ }
test_set_prereq TTY
else
- say stdout is not a terminal, so skipping some tests.
+ say no usable terminal, so skipping some tests
fi
unset GIT_PAGER GIT_PAGER_IN_USE
rm -f paginated.out
test_expect_success TTY 'some commands use a pager' '
- git log &&
+ test_terminal git log &&
test -e paginated.out
'
rm -f paginated.out
test_expect_success TTY 'some commands do not use a pager' '
- git rev-list HEAD &&
+ test_terminal git rev-list HEAD &&
! test -e paginated.out
'
rm -f paginated.out
test_expect_success TTY 'git --paginate rev-list uses a pager' '
- git --paginate rev-list HEAD &&
+ test_terminal git --paginate rev-list HEAD &&
test -e paginated.out
'
rm -f paginated.out
test_expect_success TTY 'no pager with --no-pager' '
- git --no-pager log &&
+ test_terminal git --no-pager log &&
! test -e paginated.out
'
rm -f paginated.out
git config color.ui auto
test_expect_success TTY 'color when writing to a pager' '
- TERM=vt100 git log &&
+ TERM=vt100 test_terminal git log &&
colorful paginated.out
'
test_expect_success SIMPLEPAGER 'default pager is used by default' '
cat > $less <<-EOF &&
#!$SHELL_PATH
- : > default_pager_used
+ wc > default_pager_used
EOF
chmod +x $less &&
- PATH=.:$PATH git log &&
+ PATH=.:$PATH test_terminal git log &&
test -e default_pager_used
'
git config --unset core.pager
rm -f PAGER_used
test_expect_success TTY 'PAGER overrides default pager' '
- PAGER=": > PAGER_used" &&
+ PAGER="wc > PAGER_used" &&
export PAGER &&
- git log &&
+ test_terminal git log &&
test -e PAGER_used
'
unset GIT_PAGER
rm -f core.pager_used
test_expect_success TTY 'core.pager overrides PAGER' '
- PAGER=: &&
+ PAGER=wc &&
export PAGER &&
- git config core.pager ": > core.pager_used" &&
- git log &&
+ git config core.pager "wc > core.pager_used" &&
+ test_terminal git log &&
test -e core.pager_used
'
rm -f GIT_PAGER_used
test_expect_success TTY 'GIT_PAGER overrides core.pager' '
- git config core.pager : &&
- GIT_PAGER=": > GIT_PAGER_used" &&
+ git config core.pager wc &&
+ GIT_PAGER="wc > GIT_PAGER_used" &&
export GIT_PAGER &&
- git log &&
+ test_terminal git log &&
test -e GIT_PAGER_used
'