[PATCH] Add test for correct coloring of git log --decoration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Nazri Ramliy <ayiehere@xxxxxxxxx>
---
On Tue, Jun 29, 2010 at 1:43 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote:
> Let's not expand a single-line description needlessly into a multi-line
> one.

Fixed.

>> +test_expect_success setup '
>> +  echo foo > foo.txt &&
>
> Indent these with <TAB>, like:
>
>        echo foo >foo.txt &&

Fixed.

> I think "EDITOR=cat" is doubly wrong.

Fixed.

> Do not chdir around inside test scripts without having that in a subshell,
> as people typically write "cd .." at the very end of a && chain, which may
> not be called when anything in between fails, throwing the later tests
> into chaos.

Fixed.

> In this case your excuse will be that you will run everything after this
> point in that local-clone subdirectory, but still this is not a good style
> we would want to keep around, risking to be copied by other people who do
> not think carefully.
[snip]
> I think the set-up sequence for this test script should probably be
> structured like this:
[snip]
> so that the main test is done inside the top-level directory (you wanted
> the clone only because you wanted to have remote tracking branches, not
> because you didn't want to touch the top-level directory).

Thanks for taking the time to explain it well.

I should have familiarized myself more with the utility functions in
test-lib.sh (so that I would know about test_commit).

I've updated the test to also test for the need to print 'reset' right before
restoring the commit color.  This is done by setting the tag color to "reverse
bold yellow".  Without the 'reset', the next decoration would be wrongly
printed in reverse.

nazri

 t/t4207-log-decoration-colors.sh |   65 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 0 deletions(-)
 create mode 100755 t/t4207-log-decoration-colors.sh

diff --git a/t/t4207-log-decoration-colors.sh b/t/t4207-log-decoration-colors.sh
new file mode 100755
index 0000000..5ea5865
--- /dev/null
+++ b/t/t4207-log-decoration-colors.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+#
+# Copyright (c) 2010 Nazri Ramliy
+#
+
+test_description='Test for "git log --decorate" colors'
+
+. ./test-lib.sh
+
+get_color ()
+{
+	git config --get-color no.such.slot "$1"
+}
+
+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=$(get_color reset) &&
+
+	c_commit=$(get_color yellow) &&
+	c_branch=$(get_color green) &&
+	c_remoteBranch=$(get_color red) &&
+	c_tag=$(get_color "reverse bold yellow") &&
+	c_stash=$(get_color magenta) &&
+	c_HEAD=$(get_color 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_HEAD}HEAD${c_reset}${c_commit},\
+ ${c_tag}tag: v1.0${c_reset}${c_commit},\
+ ${c_tag}tag: B${c_reset}${c_commit},\
+ ${c_branch}master${c_reset}${c_commit})${c_reset} B
+${c_commit}COMMIT_ID (${c_tag}tag: A1${c_reset}${c_commit},\
+ ${c_remoteBranch}other/master${c_reset}${c_commit})${c_reset} A1
+${c_commit}COMMIT_ID (${c_stash}refs/stash${c_reset}${c_commit})${c_reset}\
+ On master: Changes to A.t
+${c_commit}COMMIT_ID (${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/" > out &&
+	test_cmp expected out
+'
+
+test_done
-- 
1.7.1.245.g7c42e.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]