mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
![Junio C Hamano](/assets/img/avatar_default.png)
This new error mode allows a line to have a carriage return at the end of the line when checking and fixing trailing whitespace errors. Some people like to keep CRLF line ending recorded in the repository, and still want to take advantage of the automated trailing whitespace stripping. We still show ^M in the diff output piped to "less" to remind them that they do have the CR at the end, but these carriage return characters at the end are no longer flagged as errors. Signed-off-by: Junio C Hamano <gitster@pobox.com>
164 lines
3.6 KiB
Bash
Executable file
164 lines
3.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 "Carriage ReturnQ" | tr Q "\015" >>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 Return 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 Return 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 Return 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 Return 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 Return 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 Return 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 Return normal >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_expect_success 'with cr-at-eol' '
|
|
|
|
rm -f .gitattributes
|
|
git config core.whitespace cr-at-eol
|
|
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 Return normal >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_expect_success 'with cr-at-eol (attribute)' '
|
|
|
|
git config --unset core.whitespace
|
|
echo "F whitespace=trailing,cr-at-eol" >.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 error >/dev/null &&
|
|
grep Return normal >/dev/null &&
|
|
grep No normal >/dev/null
|
|
|
|
'
|
|
|
|
test_done
|