diff options
author | Junio C Hamano <junio@pobox.com> | 2008-01-02 01:50:11 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-01-06 22:44:44 -0800 |
commit | 23707811c56a7756cbd6188e510f0a486c35c929 (patch) | |
tree | 013ac44e706c265e2543c5afca53dad4afefe591 /t/t4025-hunk-header.sh | |
parent | utf8_width(): allow non NUL-terminated input (diff) | |
download | tgif-23707811c56a7756cbd6188e510f0a486c35c929.tar.xz |
diff: do not chomp hunk-header in the middle of a character
We truncate hunk-header line at 80 bytes, but that 80th byte
could be in the middle of a character, which is bad. This uses
pick_one_utf8_char() function to make sure we do not cut a character
in the middle.
This assumes that the internal representation of the text is
UTF-8. This needs to be extended in the future but the optimal
direction has not been decided yet.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t4025-hunk-header.sh')
-rwxr-xr-x | t/t4025-hunk-header.sh | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/t/t4025-hunk-header.sh b/t/t4025-hunk-header.sh new file mode 100755 index 0000000000..9ba06b74ce --- /dev/null +++ b/t/t4025-hunk-header.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +test_description='diff hunk header truncation' + +. ./test-lib.sh + +N='日本語' +N1='日' +N2='日本' +NS="$N$N$N$N$N$N$N$N$N$N$N$N$N" + +test_expect_success setup ' + + ( + echo "A $NS" + for c in B C D E F G H I J K + do + echo " $c" + done + echo "L $NS" + for c in M N O P Q R S T U V + do + echo " $c" + done + ) >file && + git add file && + + sed -e "/^ [EP]/s/$/ modified/" <file >file+ && + mv file+ file + +' + +test_expect_success 'hunk header truncation with an overly long line' ' + + git diff | sed -n -e "s/^.*@@//p" >actual && + ( + echo " A $N$N$N$N$N$N$N$N$N2" + echo " L $N$N$N$N$N$N$N$N$N1" + ) >expected && + diff -u actual expected + +' + +test_done |