mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
![Jeff King](/assets/img/avatar_default.png)
When we put literal ANSI terminal codes into our test scripts, it makes diffs on those scripts hard to read (the colors may be indistinguishable from diff coloring, or in the case of a reset, may not be visible at all). Some scripts get around this by including human-readable names and converting to literal codes with a git-config hack. This makes the actual code diffs look OK, but test_cmp output suffers from the same problem. Let's use test_decode_color instead, which turns the codes into obvious text tags. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
63 lines
1.8 KiB
Bash
Executable file
63 lines
1.8 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2010 Nazri Ramliy
|
|
#
|
|
|
|
test_description='Test for "git log --decorate" colors'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success setup '
|
|
git config diff.color.commit yellow &&
|
|
git config color.decorate.branch green &&
|
|
git config color.decorate.remoteBranch red &&
|
|
git config color.decorate.tag "reverse bold yellow" &&
|
|
git config color.decorate.stash magenta &&
|
|
git config color.decorate.HEAD cyan &&
|
|
|
|
c_reset="<RESET>" &&
|
|
|
|
c_commit="<YELLOW>" &&
|
|
c_branch="<GREEN>" &&
|
|
c_remoteBranch="<RED>" &&
|
|
c_tag="<BOLD;REVERSE;YELLOW>" &&
|
|
c_stash="<MAGENTA>" &&
|
|
c_HEAD="<CYAN>" &&
|
|
|
|
test_commit A &&
|
|
git clone . other &&
|
|
(
|
|
cd other &&
|
|
test_commit A1
|
|
) &&
|
|
|
|
git remote add -f other ./other &&
|
|
test_commit B &&
|
|
git tag v1.0 &&
|
|
echo >>A.t &&
|
|
git stash save Changes to A.t
|
|
'
|
|
|
|
cat >expected <<EOF
|
|
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_HEAD}HEAD ->\
|
|
${c_reset}${c_branch}master${c_reset}${c_commit},\
|
|
${c_reset}${c_tag}tag: v1.0${c_reset}${c_commit},\
|
|
${c_reset}${c_tag}tag: B${c_reset}${c_commit})${c_reset} B
|
|
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A1${c_reset}${c_commit},\
|
|
${c_reset}${c_remoteBranch}other/master${c_reset}${c_commit})${c_reset} A1
|
|
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_stash}refs/stash${c_reset}${c_commit})${c_reset}\
|
|
On master: Changes to A.t
|
|
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A${c_reset}${c_commit})${c_reset} A
|
|
EOF
|
|
|
|
# We want log to show all, but the second parent to refs/stash is irrelevant
|
|
# to this test since it does not contain any decoration, hence --first-parent
|
|
test_expect_success 'Commit Decorations Colored Correctly' '
|
|
git log --first-parent --abbrev=10 --all --decorate --oneline --color=always |
|
|
sed "s/[0-9a-f]\{10,10\}/COMMIT_ID/" |
|
|
test_decode_color >out &&
|
|
test_cmp expected out
|
|
'
|
|
|
|
test_done
|