new safer autocrlf handling:
Check if eols in a file are converted at commit, when the file has
CR (or CLLF) in the repo (technically speaking in the index).
Add a test-file repoMIX with mixed line-endings.
When converting LF-CRLF or CRLF-LF: check the warnings
checkout_files():
Checking out CRLF_nul and checking for eol coversion does not
make much sense (CRLF will stay CRLF).
Use the file LF_nul instead: It is handled a binary in auto modes,
and when declared as text the LF may be replaced with CRLF, depending
on the configuration
Signed-off-by: Torsten Bögershausen tbo...@web.de
---
t/t0027-auto-crlf.sh | 157 ---
1 file changed, 85 insertions(+), 72 deletions(-)
diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh
index 810934b..2482b2c 100755
--- a/t/t0027-auto-crlf.sh
+++ b/t/t0027-auto-crlf.sh
@@ -71,12 +71,21 @@ commit_check_warn () {
attr=$2
lfname=$3
crlfname=$4
- lfmixcrlf=$5
- lfmixcr=$6
- crlfnul=$7
- create_gitattributes $attr
+ repoMIX=$5
+ lfmixcrlf=$6
+ lfmixcr=$7
+ crlfnul=$8
pfx=crlf_${crlf}_attr_${attr}
- for f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul
+ # Special handling for repoMIX: It should already be in the repo
+ # with CRLF
+ f=repoMIX
+ fname=${pfx}_$f.txt
+ echo .gitattributes
+ cp $f $fname
+ git -c core.autocrlf=false add $fname 2${pfx}_$f.err
+ git commit -m repoMIX
+ create_gitattributes $attr
+ for f in LF CRLF repoMIX LF_mix_CR CRLF_mix_LF LF_nul CRLF_nul
do
fname=${pfx}_$f.txt
cp $f $fname
@@ -120,7 +129,7 @@ checkout_files () {
git config core.autocrlf $crlf
pfx=eol_${eol}_crlf_${crlf}_attr_${attr}_
src=crlf_false_attr__
- for f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul
+ for f in LF CRLF LF_mix_CR CRLF_mix_LF LF_nul
do
rm $src$f.txt
if test -z $eol; then
@@ -142,8 +151,8 @@ checkout_files () {
test_expect_success checkout core.eol=$eol core.autocrlf=$crlf
gitattributes=$attr file=LF_mix_CR
compare_ws_file $pfx $lfmixcr ${src}LF_mix_CR.txt
- test_expect_success checkout core.eol=$eol core.autocrlf=$crlf
gitattributes=$attr file=CRLF_nul
- compare_ws_file $pfx $crlfnul ${src}CRLF_nul.txt
+ test_expect_success checkout core.eol=$eol core.autocrlf=$crlf
gitattributes=$attr file=LF_nul
+ compare_ws_file $pfx $crlfnul ${src}LF_nul.txt
}
@@ -155,6 +164,7 @@ test_expect_success 'setup master' '
git commit -m add .gitattributes
printf line1\nline2\nline3 LF
printf line1\r\nline2\r\nline3 CRLF
+ printf line1\r\nline2\nline3 repoMIX
printf line1\r\nline2\nline3 CRLF_mix_LF
printf line1\nline2\rline3 LF_mix_CR
printf line1\r\nline2\rline3 CRLF_mix_CR
@@ -181,40 +191,41 @@ else
WAMIX=CRLF_LF
fi
+# attr LFCRLF repoMIX CRLFmixLF
LFmixCR CRLFNUL
test_expect_success 'commit files empty attr' '
- commit_check_warn false
- commit_check_warn true LF_CRLF LF_CRLF
- commit_check_warn input CRLF_LF CRLF_LF
+ commit_check_warn false
+ commit_check_warn true LF_CRLF LF_CRLF LF_CRLF
+ commit_check_warn input CRLF_LF CRLF_LF CRLF_LF
'
test_expect_success 'commit files attr=auto' '
- commit_check_warn false auto $WILC $WICL$WAMIX
- commit_check_warn true auto LF_CRLF LF_CRLF
- commit_check_warn input auto CRLF_LF CRLF_LF
+ commit_check_warn false auto $WILC $WICL $WAMIX $WAMIX
+ commit_check_warn true auto LF_CRLF LF_CRLF LF_CRLF
+ commit_check_warn input auto CRLF_LF CRLF_LF CRLF_LF
'
test_expect_success 'commit files attr=text' '
- commit_check_warn false text $WILC $WICL$WAMIX $WILC
$WICL
- commit_check_warn true text LF_CRLF LF_CRLF LF_CRLF
- commit_check_warn input text CRLF_LF CRLF_LF
CRLF_LF
+ commit_check_warn false text $WILC $WICL $WAMIX $WAMIX
$WILC $WICL
+ commit_check_warn true text LF_CRLF LF_CRLF LF_CRLF
LF_CRLF
+ commit_check_warn input text CRLF_LF CRLF_LF CRLF_LF
CRLF_LF
'
test_expect_success 'commit files attr=-text' '
- commit_check_warn false -text
- commit_check_warn true -text
- commit_check_warn input -text