-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
When whitespace or whitespace change was ignored, the function xdl_recmatch() returned memcmp() style differences, which is wrong, since it should return 0 on non-match. Also, there were three horrible off-by-one bugs, even leading to wrong hashes in the whitespace special handling. The issue was noticed by Ray Lehtiniemi. For good measure, this commit adds a test. Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
- Loading branch information
Johannes Schindelin
authored and
Junio C Hamano
committed
Oct 12, 2006
1 parent
854de5a
commit 2344d47
Showing
2 changed files
with
134 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2006 Johannes E. Schindelin | ||
# | ||
|
||
test_description='Test special whitespace in diff engine. | ||
' | ||
. ./test-lib.sh | ||
. ../diff-lib.sh | ||
|
||
# Ray Lehtiniemi's example | ||
|
||
cat << EOF > x | ||
do { | ||
nothing; | ||
} while (0); | ||
EOF | ||
|
||
git-update-index --add x | ||
|
||
cat << EOF > x | ||
do | ||
{ | ||
nothing; | ||
} | ||
while (0); | ||
EOF | ||
|
||
cat << EOF > expect | ||
diff --git a/x b/x | ||
index adf3937..6edc172 100644 | ||
--- a/x | ||
+++ b/x | ||
@@ -1,3 +1,5 @@ | ||
-do { | ||
+do | ||
+{ | ||
nothing; | ||
-} while (0); | ||
+} | ||
+while (0); | ||
EOF | ||
|
||
git-diff > out | ||
test_expect_success "Ray's example without options" 'diff -u expect out' | ||
|
||
git-diff -w > out | ||
test_expect_success "Ray's example with -w" 'diff -u expect out' | ||
|
||
git-diff -b > out | ||
test_expect_success "Ray's example with -b" 'diff -u expect out' | ||
|
||
cat << EOF > x | ||
whitespace at beginning | ||
whitespace change | ||
whitespace in the middle | ||
whitespace at end | ||
unchanged line | ||
CR at end | ||
EOF | ||
|
||
git-update-index x | ||
|
||
cat << EOF > x | ||
whitespace at beginning | ||
whitespace change | ||
white space in the middle | ||
whitespace at end | ||
unchanged line | ||
CR at end | ||
EOF | ||
|
||
cat << EOF > expect | ||
diff --git a/x b/x | ||
index d99af23..8b32fb5 100644 | ||
--- a/x | ||
+++ b/x | ||
@@ -1,6 +1,6 @@ | ||
-whitespace at beginning | ||
-whitespace change | ||
-whitespace in the middle | ||
-whitespace at end | ||
+ whitespace at beginning | ||
+whitespace change | ||
+white space in the middle | ||
+whitespace at end | ||
unchanged line | ||
-CR at end | ||
+CR at end | ||
EOF | ||
git-diff > out | ||
test_expect_success 'another test, without options' 'diff -u expect out' | ||
|
||
cat << EOF > expect | ||
diff --git a/x b/x | ||
index d99af23..8b32fb5 100644 | ||
EOF | ||
git-diff -w > out | ||
test_expect_success 'another test, with -w' 'diff -u expect out' | ||
|
||
cat << EOF > expect | ||
diff --git a/x b/x | ||
index d99af23..8b32fb5 100644 | ||
--- a/x | ||
+++ b/x | ||
@@ -1,6 +1,6 @@ | ||
-whitespace at beginning | ||
+ whitespace at beginning | ||
whitespace change | ||
-whitespace in the middle | ||
-whitespace at end | ||
+white space in the middle | ||
+whitespace at end | ||
unchanged line | ||
-CR at end | ||
+CR at end | ||
EOF | ||
git-diff -b > out | ||
test_expect_success 'another test, with -b' 'diff -u expect out' | ||
|
||
test_done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters