Merge branch 'tr/doc-note-rewrite'
[gitweb.git] / t / t7006-pager.sh
index 2ac729f40c730746d799a3c02c4f86ddb89cae57..320e1d1dbe62c81e29186d7a32b73447d2f998b8 100755 (executable)
@@ -167,6 +167,18 @@ test_expect_success TTY 'color when writing to a pager' '
        colorful paginated.out
 '
 
+test_expect_success TTY 'colors are suppressed by color.pager' '
+       rm -f paginated.out &&
+       test_config color.ui auto &&
+       test_config color.pager false &&
+       (
+               TERM=vt100 &&
+               export TERM &&
+               test_terminal git log
+       ) &&
+       ! colorful paginated.out
+'
+
 test_expect_success 'color when writing to a file intended for a pager' '
        rm -f colorful.log &&
        test_config color.ui auto ||
@@ -181,6 +193,17 @@ test_expect_success 'color when writing to a file intended for a pager' '
        colorful colorful.log
 '
 
+test_expect_success TTY 'colors are sent to pager for external commands' '
+       test_config alias.externallog "!git log" &&
+       test_config color.ui auto &&
+       (
+               TERM=vt100 &&
+               export TERM &&
+               test_terminal git -p externallog
+       ) &&
+       colorful paginated.out
+'
+
 # Use this helper to make it easy for the caller of your
 # terminal-using function to specify whether it should fail.
 # If you write
@@ -427,4 +450,40 @@ test_expect_success TTY 'command-specific pager overridden by environment' '
        test_cmp expect actual
 '
 
+test_expect_success 'setup external command' '
+       cat >git-external <<-\EOF &&
+       #!/bin/sh
+       git "$@"
+       EOF
+       chmod +x git-external
+'
+
+test_expect_success TTY 'command-specific pager works for external commands' '
+       sane_unset PAGER GIT_PAGER &&
+       echo "foo:initial" >expect &&
+       >actual &&
+       test_config pager.external "sed s/^/foo:/ >actual" &&
+       test_terminal git --exec-path="`pwd`" external log --format=%s -1 &&
+       test_cmp expect actual
+'
+
+test_expect_success TTY 'sub-commands of externals use their own pager' '
+       sane_unset PAGER GIT_PAGER &&
+       echo "foo:initial" >expect &&
+       >actual &&
+       test_config pager.log "sed s/^/foo:/ >actual" &&
+       test_terminal git --exec-path=. external log --format=%s -1 &&
+       test_cmp expect actual
+'
+
+test_expect_success TTY 'external command pagers override sub-commands' '
+       sane_unset PAGER GIT_PAGER &&
+       >expect &&
+       >actual &&
+       test_config pager.external false &&
+       test_config pager.log "sed s/^/log:/ >actual" &&
+       test_terminal git --exec-path=. external log --format=%s -1 &&
+       test_cmp expect actual
+'
+
 test_done