Merge branch 'jc/maint-blank-at-eof'
* jc/maint-blank-at-eof: diff -B: colour whitespace errors diff.c: emit_add_line() takes only the rest of the line diff.c: split emit_line() from the first char and the rest of the line diff.c: shuffling code around diff --whitespace: fix blank lines at end core.whitespace: split trailing-space into blank-at-{eol,eof} diff --color: color blank-at-eof diff --whitespace=warn/error: fix blank-at-eof check diff --whitespace=warn/error: obey blank-at-eof diff.c: the builtin_diff() deals with only two-file comparison apply --whitespace: warn blank but not necessarily empty lines at EOF apply --whitespace=warn/error: diagnose blank at EOF apply.c: split check_whitespace() into two apply --whitespace=fix: detect new blank lines at eof correctly apply --whitespace=fix: fix handling of blank lines at the eof
This commit is contained in:
@ -362,10 +362,17 @@ test_expect_success 'line numbers in --check output are correct' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'checkdiff detects trailing blank lines' '
|
||||
test_expect_success 'checkdiff detects new trailing blank lines (1)' '
|
||||
echo "foo();" >x &&
|
||||
echo "" >>x &&
|
||||
git diff --check | grep "ends with blank"
|
||||
git diff --check | grep "new blank line"
|
||||
'
|
||||
|
||||
test_expect_success 'checkdiff detects new trailing blank lines (2)' '
|
||||
{ echo a; echo b; echo; echo; } >x &&
|
||||
git add x &&
|
||||
{ echo a; echo; echo; echo; echo; } >x &&
|
||||
git diff --check | grep "new blank line"
|
||||
'
|
||||
|
||||
test_expect_success 'checkdiff allows new blank lines' '
|
||||
|
@ -165,7 +165,7 @@ test_expect_success 'trailing empty lines (1)' '
|
||||
|
||||
rm -f .gitattributes &&
|
||||
test_must_fail git diff --check >output &&
|
||||
grep "ends with blank lines." output &&
|
||||
grep "new blank line at" output &&
|
||||
grep "trailing whitespace" output
|
||||
|
||||
'
|
||||
@ -190,4 +190,13 @@ test_expect_success 'do not color trailing cr in context' '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'color new trailing blank lines' '
|
||||
{ echo a; echo b; echo; echo; } >x &&
|
||||
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) &&
|
||||
test $cnt = 2
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -170,4 +170,95 @@ test_expect_success 'trailing whitespace & no newline at the end of file' '
|
||||
grep "^$" target
|
||||
'
|
||||
|
||||
test_expect_success 'blank at EOF with --whitespace=fix (1)' '
|
||||
: these can fail depending on what we did before
|
||||
git config --unset core.whitespace
|
||||
rm -f .gitattributes
|
||||
|
||||
{ echo a; echo b; echo c; } >one &&
|
||||
git add one &&
|
||||
{ echo a; echo b; echo c; } >expect &&
|
||||
{ cat expect; echo; } >one &&
|
||||
git diff -- one >patch &&
|
||||
|
||||
git checkout one &&
|
||||
git apply --whitespace=fix patch &&
|
||||
test_cmp expect one
|
||||
'
|
||||
|
||||
test_expect_success 'blank at EOF with --whitespace=fix (2)' '
|
||||
{ echo a; echo b; echo c; } >one &&
|
||||
git add one &&
|
||||
{ echo a; echo c; } >expect &&
|
||||
{ cat expect; echo; echo; } >one &&
|
||||
git diff -- one >patch &&
|
||||
|
||||
git checkout one &&
|
||||
git apply --whitespace=fix patch &&
|
||||
test_cmp expect one
|
||||
'
|
||||
|
||||
test_expect_success 'blank at EOF with --whitespace=fix (3)' '
|
||||
{ echo a; echo b; echo; } >one &&
|
||||
git add one &&
|
||||
{ echo a; echo c; echo; } >expect &&
|
||||
{ cat expect; echo; echo; } >one &&
|
||||
git diff -- one >patch &&
|
||||
|
||||
git checkout one &&
|
||||
git apply --whitespace=fix patch &&
|
||||
test_cmp expect one
|
||||
'
|
||||
|
||||
test_expect_success 'blank at end of hunk, not at EOF with --whitespace=fix' '
|
||||
{ echo a; echo b; echo; echo; echo; echo; echo; echo d; } >one &&
|
||||
git add one &&
|
||||
{ echo a; echo c; echo; echo; echo; echo; echo; echo; echo d; } >expect &&
|
||||
cp expect one &&
|
||||
git diff -- one >patch &&
|
||||
|
||||
git checkout one &&
|
||||
git apply --whitespace=fix patch &&
|
||||
test_cmp expect one
|
||||
'
|
||||
|
||||
test_expect_success 'blank at EOF with --whitespace=warn' '
|
||||
{ echo a; echo b; echo c; } >one &&
|
||||
git add one &&
|
||||
echo >>one &&
|
||||
cat one >expect &&
|
||||
git diff -- one >patch &&
|
||||
|
||||
git checkout one &&
|
||||
git apply --whitespace=warn patch 2>error &&
|
||||
test_cmp expect one &&
|
||||
grep "new blank line at EOF" error
|
||||
'
|
||||
|
||||
test_expect_success 'blank at EOF with --whitespace=error' '
|
||||
{ echo a; echo b; echo c; } >one &&
|
||||
git add one &&
|
||||
cat one >expect &&
|
||||
echo >>one &&
|
||||
git diff -- one >patch &&
|
||||
|
||||
git checkout one &&
|
||||
test_must_fail git apply --whitespace=error patch 2>error &&
|
||||
test_cmp expect one &&
|
||||
grep "new blank line at EOF" error
|
||||
'
|
||||
|
||||
test_expect_success 'blank but not empty at EOF' '
|
||||
{ echo a; echo b; echo c; } >one &&
|
||||
git add one &&
|
||||
echo " " >>one &&
|
||||
cat one >expect &&
|
||||
git diff -- one >patch &&
|
||||
|
||||
git checkout one &&
|
||||
git apply --whitespace=warn patch 2>error &&
|
||||
test_cmp expect one &&
|
||||
grep "new blank line at EOF" error
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Reference in New Issue
Block a user