cf1b7869f0
The `core.whitespace` configuration variable allows you to define what `diff` and `apply` should consider whitespace errors for all paths in the project (See gitlink:git-config[1]). This attribute gives you finer control per path. For example, if you have these in the .gitattributes: frotz whitespace nitfol -whitespace xyzzy whitespace=-trailing all types of whitespace problems known to git are noticed in path 'frotz' (i.e. diff shows them in diff.whitespace color, and apply warns about them), no whitespace problem is noticed in path 'nitfol', and the default types of whitespace problems except "trailing whitespace" are noticed for path 'xyzzy'. A project with mixed Python and C might want to have: *.c whitespace *.py whitespace=-indent-with-non-tab in its toplevel .gitattributes file. Signed-off-by: Junio C Hamano <gitster@pobox.com>
124 lines
2.6 KiB
Bash
Executable File
124 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='diff whitespace error detection'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success setup '
|
|
|
|
git config diff.color.whitespace "blue reverse" &&
|
|
>F &&
|
|
git add F &&
|
|
echo " Eight SP indent" >>F &&
|
|
echo " HT and SP indent" >>F &&
|
|
echo "With trailing SP " >>F &&
|
|
echo "No problem" >>F
|
|
|
|
'
|
|
|
|
blue_grep='7;34m' ;# ESC [ 7 ; 3 4 m
|
|
|
|
test_expect_success default '
|
|
|
|
git diff --color >output
|
|
grep "$blue_grep" output >error
|
|
grep -v "$blue_grep" output >normal
|
|
|
|
grep Eight normal >/dev/null &&
|
|
grep HT error >/dev/null &&
|
|
grep With error >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_expect_success 'without -trail' '
|
|
|
|
git config core.whitespace -trail
|
|
git diff --color >output
|
|
grep "$blue_grep" output >error
|
|
grep -v "$blue_grep" output >normal
|
|
|
|
grep Eight normal >/dev/null &&
|
|
grep HT error >/dev/null &&
|
|
grep With normal >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_expect_success 'without -trail (attribute)' '
|
|
|
|
git config --unset core.whitespace
|
|
echo "F whitespace=-trail" >.gitattributes
|
|
git diff --color >output
|
|
grep "$blue_grep" output >error
|
|
grep -v "$blue_grep" output >normal
|
|
|
|
grep Eight normal >/dev/null &&
|
|
grep HT error >/dev/null &&
|
|
grep With normal >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_expect_success 'without -space' '
|
|
|
|
rm -f .gitattributes
|
|
git config core.whitespace -space
|
|
git diff --color >output
|
|
grep "$blue_grep" output >error
|
|
grep -v "$blue_grep" output >normal
|
|
|
|
grep Eight normal >/dev/null &&
|
|
grep HT normal >/dev/null &&
|
|
grep With error >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_expect_success 'without -space (attribute)' '
|
|
|
|
git config --unset core.whitespace
|
|
echo "F whitespace=-space" >.gitattributes
|
|
git diff --color >output
|
|
grep "$blue_grep" output >error
|
|
grep -v "$blue_grep" output >normal
|
|
|
|
grep Eight normal >/dev/null &&
|
|
grep HT normal >/dev/null &&
|
|
grep With error >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_expect_success 'with indent-non-tab only' '
|
|
|
|
rm -f .gitattributes
|
|
git config core.whitespace indent,-trailing,-space
|
|
git diff --color >output
|
|
grep "$blue_grep" output >error
|
|
grep -v "$blue_grep" output >normal
|
|
|
|
grep Eight error >/dev/null &&
|
|
grep HT normal >/dev/null &&
|
|
grep With normal >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_expect_success 'with indent-non-tab only (attribute)' '
|
|
|
|
git config --unset core.whitespace
|
|
echo "F whitespace=indent,-trailing,-space" >.gitattributes
|
|
git diff --color >output
|
|
grep "$blue_grep" output >error
|
|
grep -v "$blue_grep" output >normal
|
|
|
|
grep Eight error >/dev/null &&
|
|
grep HT normal >/dev/null &&
|
|
grep With normal >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_done
|