t4019 "grep" portability fix
Input to "grep" is supposed to be "text", but we deliberately feed output from "git diff --color" to sift it into two sets of lines (ones with errors, the other without). Some implementations of "grep" only report matches with the exit status, without showing the matched lines in their output (e.g. OpenBSD 4.6, which says "Binary file .. matches"). Fortunately, "grep -a" is often a way to force the command to treat its input as text. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
15caa41053
commit
eca4460eeb
@ -20,11 +20,27 @@ test_expect_success setup '
|
||||
|
||||
blue_grep='7;34m' ;# ESC [ 7 ; 3 4 m
|
||||
|
||||
printf "\033[%s" "$blue_grep" >check-grep
|
||||
if (grep "$blue_grep" <check-grep | grep "$blue_grep") >/dev/null 2>&1
|
||||
then
|
||||
grep_a=grep
|
||||
elif (grep -a "$blue_grep" <check-grep | grep -a "$blue_grep") >/dev/null 2>&1
|
||||
then
|
||||
grep_a='grep -a'
|
||||
else
|
||||
grep_a=grep ;# expected to fail...
|
||||
fi
|
||||
rm -f check-grep
|
||||
|
||||
prepare_output () {
|
||||
git diff --color >output
|
||||
$grep_a "$blue_grep" output >error
|
||||
$grep_a -v "$blue_grep" output >normal
|
||||
}
|
||||
|
||||
test_expect_success default '
|
||||
|
||||
git diff --color >output
|
||||
grep "$blue_grep" output >error
|
||||
grep -v "$blue_grep" output >normal
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@ -37,9 +53,7 @@ test_expect_success default '
|
||||
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
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@ -53,9 +67,7 @@ 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
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@ -69,9 +81,7 @@ 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
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT normal >/dev/null &&
|
||||
@ -85,9 +95,7 @@ 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
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT normal >/dev/null &&
|
||||
@ -101,9 +109,7 @@ 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
|
||||
prepare_output
|
||||
|
||||
grep Eight error >/dev/null &&
|
||||
grep HT normal >/dev/null &&
|
||||
@ -117,9 +123,7 @@ 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
|
||||
prepare_output
|
||||
|
||||
grep Eight error >/dev/null &&
|
||||
grep HT normal >/dev/null &&
|
||||
@ -133,9 +137,7 @@ 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
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@ -149,9 +151,7 @@ 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
|
||||
prepare_output
|
||||
|
||||
grep Eight normal >/dev/null &&
|
||||
grep HT error >/dev/null &&
|
||||
@ -195,7 +195,7 @@ test_expect_success 'color new trailing blank lines' '
|
||||
git add x &&
|
||||
{ echo a; echo; echo; echo; echo c; echo; echo; echo; echo; } >x &&
|
||||
git diff --color x >output &&
|
||||
cnt=$(grep "${blue_grep}" output | wc -l) &&
|
||||
cnt=$($grep_a "${blue_grep}" output | wc -l) &&
|
||||
test $cnt = 2
|
||||
'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user