Merge branch 'jk/color-and-pager'
* jk/color-and-pager: want_color: automatically fallback to color.ui diff: don't load color config in plumbing config: refactor get_colorbool function color: delay auto-color decision until point of use git_config_colorbool: refactor stdout_is_tty handling diff: refactor COLOR_DIFF from a flag into an int setup_pager: set GIT_PAGER_IN_USE t7006: use test_config helpers test-lib: add helper functions for config t7006: modernize calls to unset Conflicts: builtin/commit.c parse-options.c
This commit is contained in:
@ -13,7 +13,7 @@ cleanup_fail() {
|
||||
|
||||
test_expect_success 'setup' '
|
||||
sane_unset GIT_PAGER GIT_PAGER_IN_USE &&
|
||||
test_might_fail git config --unset core.pager &&
|
||||
test_unconfig core.pager &&
|
||||
|
||||
PAGER="cat >paginated.out" &&
|
||||
export PAGER &&
|
||||
@ -94,21 +94,19 @@ test_expect_success TTY 'no pager with --no-pager' '
|
||||
|
||||
test_expect_success TTY 'configuration can disable pager' '
|
||||
rm -f paginated.out &&
|
||||
test_might_fail git config --unset pager.grep &&
|
||||
test_unconfig pager.grep &&
|
||||
test_terminal git grep initial &&
|
||||
test -e paginated.out &&
|
||||
|
||||
rm -f paginated.out &&
|
||||
git config pager.grep false &&
|
||||
test_when_finished "git config --unset pager.grep" &&
|
||||
test_config pager.grep false &&
|
||||
test_terminal git grep initial &&
|
||||
! test -e paginated.out
|
||||
'
|
||||
|
||||
test_expect_success TTY 'git config uses a pager if configured to' '
|
||||
rm -f paginated.out &&
|
||||
git config pager.config true &&
|
||||
test_when_finished "git config --unset pager.config" &&
|
||||
test_config pager.config true &&
|
||||
test_terminal git config --list &&
|
||||
test -e paginated.out
|
||||
'
|
||||
@ -116,8 +114,7 @@ test_expect_success TTY 'git config uses a pager if configured to' '
|
||||
test_expect_success TTY 'configuration can enable pager (from subdir)' '
|
||||
rm -f paginated.out &&
|
||||
mkdir -p subdir &&
|
||||
git config pager.bundle true &&
|
||||
test_when_finished "git config --unset pager.bundle" &&
|
||||
test_config pager.bundle true &&
|
||||
|
||||
git bundle create test.bundle --all &&
|
||||
rm -f paginated.out subdir/paginated.out &&
|
||||
@ -150,7 +147,7 @@ test_expect_success 'tests can detect color' '
|
||||
|
||||
test_expect_success 'no color when stdout is a regular file' '
|
||||
rm -f colorless.log &&
|
||||
git config color.ui auto ||
|
||||
test_config color.ui auto ||
|
||||
cleanup_fail &&
|
||||
|
||||
git log >colorless.log &&
|
||||
@ -159,7 +156,7 @@ test_expect_success 'no color when stdout is a regular file' '
|
||||
|
||||
test_expect_success TTY 'color when writing to a pager' '
|
||||
rm -f paginated.out &&
|
||||
git config color.ui auto ||
|
||||
test_config color.ui auto ||
|
||||
cleanup_fail &&
|
||||
|
||||
(
|
||||
@ -170,9 +167,21 @@ 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 &&
|
||||
git config color.ui auto ||
|
||||
test_config color.ui auto ||
|
||||
cleanup_fail &&
|
||||
|
||||
(
|
||||
@ -184,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
|
||||
@ -221,7 +241,7 @@ test_default_pager() {
|
||||
|
||||
$test_expectation SIMPLEPAGER,TTY "$cmd - default pager is used by default" "
|
||||
sane_unset PAGER GIT_PAGER &&
|
||||
test_might_fail git config --unset core.pager &&
|
||||
test_unconfig core.pager &&
|
||||
rm -f default_pager_used ||
|
||||
cleanup_fail &&
|
||||
|
||||
@ -244,7 +264,7 @@ test_PAGER_overrides() {
|
||||
|
||||
$test_expectation TTY "$cmd - PAGER overrides default pager" "
|
||||
sane_unset GIT_PAGER &&
|
||||
test_might_fail git config --unset core.pager &&
|
||||
test_unconfig core.pager &&
|
||||
rm -f PAGER_used ||
|
||||
cleanup_fail &&
|
||||
|
||||
@ -277,7 +297,7 @@ test_core_pager() {
|
||||
|
||||
PAGER=wc &&
|
||||
export PAGER &&
|
||||
git config core.pager 'wc >core.pager_used' &&
|
||||
test_config core.pager 'wc >core.pager_used' &&
|
||||
$full_command &&
|
||||
${if_local_config}test -e core.pager_used
|
||||
"
|
||||
@ -307,7 +327,7 @@ test_pager_subdir_helper() {
|
||||
PAGER=wc &&
|
||||
stampname=\$(pwd)/core.pager_used &&
|
||||
export PAGER stampname &&
|
||||
git config core.pager 'wc >\"\$stampname\"' &&
|
||||
test_config core.pager 'wc >\"\$stampname\"' &&
|
||||
mkdir sub &&
|
||||
(
|
||||
cd sub &&
|
||||
@ -324,7 +344,7 @@ test_GIT_PAGER_overrides() {
|
||||
rm -f GIT_PAGER_used ||
|
||||
cleanup_fail &&
|
||||
|
||||
git config core.pager wc &&
|
||||
test_config core.pager wc &&
|
||||
GIT_PAGER='wc >GIT_PAGER_used' &&
|
||||
export GIT_PAGER &&
|
||||
$full_command &&
|
||||
@ -402,21 +422,21 @@ test_core_pager_subdir expect_success test_must_fail \
|
||||
'git -p apply </dev/null'
|
||||
|
||||
test_expect_success TTY 'command-specific pager' '
|
||||
unset PAGER GIT_PAGER;
|
||||
sane_unset PAGER GIT_PAGER &&
|
||||
echo "foo:initial" >expect &&
|
||||
>actual &&
|
||||
git config --unset core.pager &&
|
||||
git config pager.log "sed s/^/foo:/ >actual" &&
|
||||
test_unconfig core.pager &&
|
||||
test_config pager.log "sed s/^/foo:/ >actual" &&
|
||||
test_terminal git log --format=%s -1 &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success TTY 'command-specific pager overrides core.pager' '
|
||||
unset PAGER GIT_PAGER;
|
||||
sane_unset PAGER GIT_PAGER &&
|
||||
echo "foo:initial" >expect &&
|
||||
>actual &&
|
||||
git config core.pager "exit 1"
|
||||
git config pager.log "sed s/^/foo:/ >actual" &&
|
||||
test_config core.pager "exit 1"
|
||||
test_config pager.log "sed s/^/foo:/ >actual" &&
|
||||
test_terminal git log --format=%s -1 &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
@ -425,7 +445,7 @@ test_expect_success TTY 'command-specific pager overridden by environment' '
|
||||
GIT_PAGER="sed s/^/foo:/ >actual" && export GIT_PAGER &&
|
||||
>actual &&
|
||||
echo "foo:initial" >expect &&
|
||||
git config pager.log "exit 1" &&
|
||||
test_config pager.log "exit 1" &&
|
||||
test_terminal git log --format=%s -1 &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
@ -361,6 +361,24 @@ test_chmod () {
|
||||
git update-index --add "--chmod=$@"
|
||||
}
|
||||
|
||||
# Unset a configuration variable, but don't fail if it doesn't exist.
|
||||
test_unconfig () {
|
||||
git config --unset-all "$@"
|
||||
config_status=$?
|
||||
case "$config_status" in
|
||||
5) # ok, nothing to unset
|
||||
config_status=0
|
||||
;;
|
||||
esac
|
||||
return $config_status
|
||||
}
|
||||
|
||||
# Set git config, automatically unsetting it after the test is over.
|
||||
test_config () {
|
||||
test_when_finished "test_unconfig '$1'" &&
|
||||
git config "$@"
|
||||
}
|
||||
|
||||
# Use test_set_prereq to tell that a particular prerequisite is available.
|
||||
# The prerequisite can later be checked for in two ways:
|
||||
#
|
||||
|
Reference in New Issue
Block a user