t0027: make commit_chk_wrnNNO() reliable
authorTorsten Bögershausen <tboegi@web.de>
Mon, 25 Apr 2016 16:56:27 +0000 (18:56 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 Apr 2016 19:10:48 +0000 (12:10 -0700)
When the content of a commited file is unchanged and the attributes
are changed, Git may not detect that the next commit must treat the
file as changed. This happens when lstat() doesn't detect a change,
since neither inode, mtime nor size are changed.

Add a single "Z" character to change the file size and content.
When the files are compared later in checkout_files(), the "Z" is
removed before the comparison.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0027-auto-crlf.sh
index f33962b178238126d4cbe88cfbda7dd7bb747490..9fe539b13d2d6df2e416438fcfe3f9116ccc996c 100755 (executable)
@@ -12,7 +12,7 @@ fi
 
 compare_files () {
        tr '\015\000' QN <"$1" >"$1".expect &&
-       tr '\015\000' QN <"$2" >"$2".actual &&
+       tr '\015\000' QN <"$2" | tr -d 'Z' >"$2".actual &&
        test_cmp "$1".expect "$2".actual &&
        rm "$1".expect "$2".actual
 }
@@ -114,6 +114,7 @@ commit_chk_wrnNNO () {
        do
                fname=${pfx}_$f.txt &&
                cp $f $fname &&
+               printf Z >>"$fname" &&
                git -c core.autocrlf=$crlf add $fname 2>/dev/null &&
                git -c core.autocrlf=$crlf commit -m "commit_$fname" $fname >"${pfx}_$f.err" 2>&1
        done