Merge branch 'tr/line-log'
[gitweb.git] / t / t6006-rev-list-format.sh
index f94f0c48e6337f6bd718b4fc6859a52411e09326..0393c9fd0b1c155817855857d7476d1638d2296f 100755 (executable)
@@ -3,6 +3,7 @@
 test_description='git rev-list --pretty=format test'
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY"/lib-terminal.sh
 
 test_tick
 test_expect_success 'setup' '
@@ -11,12 +12,24 @@ touch foo && git add foo && git commit -m "added foo" &&
 '
 
 # usage: test_format name format_string <expected_output
-test_format() {
+test_format () {
        cat >expect.$1
        test_expect_success "format $1" "
-git rev-list --pretty=format:'$2' master >output.$1 &&
-test_cmp expect.$1 output.$1
-"
+               git rev-list --pretty=format:'$2' master >output.$1 &&
+               test_cmp expect.$1 output.$1
+       "
+}
+
+# Feed to --format to provide predictable colored sequences.
+AUTO_COLOR='%C(auto,red)foo%C(auto,reset)'
+has_color () {
+       printf '\033[31mfoo\033[m\n' >expect &&
+       test_cmp expect "$1"
+}
+
+has_no_color () {
+       echo foo >expect &&
+       test_cmp expect "$1"
 }
 
 test_format percent %%h <<'EOF'
@@ -124,12 +137,54 @@ commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
 \e[1;31;43mfoo\e[m
 EOF
 
+test_expect_success '%C(auto) does not enable color by default' '
+       git log --format=$AUTO_COLOR -1 >actual &&
+       has_no_color actual
+'
+
+test_expect_success '%C(auto) enables colors for color.diff' '
+       git -c color.diff=always log --format=$AUTO_COLOR -1 >actual &&
+       has_color actual
+'
+
+test_expect_success '%C(auto) enables colors for color.ui' '
+       git -c color.ui=always log --format=$AUTO_COLOR -1 >actual &&
+       has_color actual
+'
+
+test_expect_success '%C(auto) respects --color' '
+       git log --format=$AUTO_COLOR -1 --color >actual &&
+       has_color actual
+'
+
+test_expect_success '%C(auto) respects --no-color' '
+       git -c color.ui=always log --format=$AUTO_COLOR -1 --no-color >actual &&
+       has_no_color actual
+'
+
+test_expect_success TTY '%C(auto) respects --color=auto (stdout is tty)' '
+       (
+               TERM=vt100 && export TERM &&
+               test_terminal \
+                       git log --format=$AUTO_COLOR -1 --color=auto >actual &&
+               has_color actual
+       )
+'
+
+test_expect_success '%C(auto) respects --color=auto (stdout not tty)' '
+       (
+               TERM=vt100 && export TERM &&
+               git log --format=$AUTO_COLOR -1 --color=auto >actual &&
+               has_no_color actual
+       )
+'
+
 cat >commit-msg <<'EOF'
 Test printing of complex bodies
 
 This commit message is much longer than the others,
 and it will be encoded in iso8859-1. We should therefore
-include an iso8859 character: Â¡bueno!
+include an iso8859 character: ¡bueno!
 EOF
 test_expect_success 'setup complex body' '
 git config i18n.commitencoding iso8859-1 &&
@@ -137,14 +192,14 @@ git config i18n.commitencoding iso8859-1 &&
 '
 
 test_format complex-encoding %e <<'EOF'
-commit f58db70b055c5718631e5c61528b28b12090cdea
+commit 1ed88da4a5b5ed8c449114ac131efc62178734c3
 iso8859-1
 commit 131a310eb913d107dd3c09a65d1651175898735d
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
 EOF
 
 test_format complex-subject %s <<'EOF'
-commit f58db70b055c5718631e5c61528b28b12090cdea
+commit 1ed88da4a5b5ed8c449114ac131efc62178734c3
 Test printing of complex bodies
 commit 131a310eb913d107dd3c09a65d1651175898735d
 changed foo
@@ -153,17 +208,17 @@ added foo
 EOF
 
 test_format complex-body %b <<'EOF'
-commit f58db70b055c5718631e5c61528b28b12090cdea
+commit 1ed88da4a5b5ed8c449114ac131efc62178734c3
 This commit message is much longer than the others,
 and it will be encoded in iso8859-1. We should therefore
-include an iso8859 character: Â¡bueno!
+include an iso8859 character: ¡bueno!
 
 commit 131a310eb913d107dd3c09a65d1651175898735d
 commit 86c75cfd708a0e5868dc876ed5b8bb66c80b4873
 EOF
 
 test_expect_success '%x00 shows NUL' '
-       echo  >expect commit f58db70b055c5718631e5c61528b28b12090cdea &&
+       echo  >expect commit 1ed88da4a5b5ed8c449114ac131efc62178734c3 &&
        echo >>expect fooQbar &&
        git rev-list -1 --format=foo%x00bar HEAD >actual.nul &&
        nul_to_q <actual.nul >actual &&