t0027: improve test for not-normalized files

When a text file with mixed line endings is commited into the repo,
it is called "not normalized" (or NNO) in t0027.  The existing test
case using repoMIX did not fully test all combinations: (Especially
when core.autocrlf = true) Files with NL are not converted at
commit, but at checkout, so a warning NL->CRLF is given.  Files with
CRLF are not converted at all (so no warning will be given), unless
they are marked as "text" or "auto".

Remove repoMIX introduced in commit 8eeab92f02, and replace it with
a combination of NNO tests.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
This commit is contained in:
Torsten Bögershausen 2015-10-10 06:23:53 +02:00 коммит произвёл Junio C Hamano
Родитель 8eeab92f02
Коммит 710b4e8a16
1 изменённых файлов: 157 добавлений и 34 удалений

Просмотреть файл

@ -55,6 +55,26 @@ create_gitattributes () {
esac
}
create_NNO_files () {
lfname=$1
crlfname=$2
lfmixcrlf=$3
lfmixcr=$4
crlfnul=$5
for crlf in false true input
do
for attr in "" auto text -text lf crlf
do
pfx=NNO_${crlf}_attr_${attr} &&
cp $lfname ${pfx}_LF.txt &&
cp $crlfname ${pfx}_CRLF.txt &&
cp $lfmixcrlf ${pfx}_CRLF_mix_LF.txt &&
cp $lfmixcr ${pfx}_LF_mix_CR.txt &&
cp $crlfnul ${pfx}_CRLF_nul.txt
done
done
}
check_warning () {
case "$1" in
LF_CRLF) echo "warning: LF will be replaced by CRLF" >"$2".expect ;;
@ -62,7 +82,7 @@ check_warning () {
'') >"$2".expect ;;
*) echo >&2 "Illegal 1": "$1" ; return false ;;
esac
grep "will be replaced by" "$2" | sed -e "s/\(.*\) in [^ ]*$/\1/" >"$2".actual
grep "will be replaced by" "$2" | sed -e "s/\(.*\) in [^ ]*$/\1/" | uniq >"$2".actual
test_cmp "$2".expect "$2".actual
}
@ -71,19 +91,10 @@ commit_check_warn () {
attr=$2
lfname=$3
crlfname=$4
repoMIX=$5
lfmixcrlf=$6
lfmixcr=$7
crlfnul=$8
lfmixcrlf=$5
lfmixcr=$6
crlfnul=$7
pfx=crlf_${crlf}_attr_${attr}
# 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
@ -99,6 +110,45 @@ commit_check_warn () {
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
}
commit_chk_wrnNNO () {
crlf=$1
attr=$2
lfwarn=$3
crlfwarn=$4
lfmixcrlf=$5
lfmixcr=$6
crlfnul=$7
pfx=NNO_${crlf}_attr_${attr}
#Commit files on top of existing file
create_gitattributes "$attr" &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $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
test_expect_success "commit NNO files crlf=$crlf attr=$attr LF" '
check_warning "$lfwarn" ${pfx}_LF.err
'
test_expect_success "commit NNO files crlf=$crlf attr=$attr CRLF" '
check_warning "$crlfwarn" ${pfx}_CRLF.err
'
test_expect_success "commit NNO files crlf=$crlf attr=$attr CRLF_mix_LF" '
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
'
test_expect_success "commit NNO files crlf=$crlf attr=$attr LF_mix_cr" '
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
'
test_expect_success "commit NNO files crlf=$crlf attr=$attr CRLF_nul" '
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
'
}
check_files_in_repo () {
crlf=$1
attr=$2
@ -115,6 +165,31 @@ check_files_in_repo () {
compare_files $crlfnul ${pfx}CRLF_nul.txt
}
check_in_repo_NNO () {
crlf=$1
attr=$2
lfname=$3
crlfname=$4
lfmixcrlf=$5
lfmixcr=$6
crlfnul=$7
pfx=NNO_${crlf}_attr_${attr}_
test_expect_success "compare_files $lfname ${pfx}LF.txt" '
compare_files $lfname ${pfx}LF.txt
'
test_expect_success "compare_files $crlfname ${pfx}CRLF.txt" '
compare_files $crlfname ${pfx}CRLF.txt
'
test_expect_success "compare_files $lfmixcrlf ${pfx}CRLF_mix_LF.txt" '
compare_files $lfmixcrlf ${pfx}CRLF_mix_LF.txt
'
test_expect_success "compare_files $lfmixcr ${pfx}LF_mix_CR.txt" '
compare_files $lfmixcr ${pfx}LF_mix_CR.txt
'
test_expect_success "compare_files $crlfnul ${pfx}CRLF_nul.txt" '
compare_files $crlfnul ${pfx}CRLF_nul.txt
'
}
checkout_files () {
eol=$1
@ -169,7 +244,11 @@ test_expect_success 'setup master' '
printf "line1\nline2\rline3" >LF_mix_CR &&
printf "line1\r\nline2\rline3" >CRLF_mix_CR &&
printf "line1Q\r\nline2\r\nline3" | q_to_nul >CRLF_nul &&
printf "line1Q\nline2\nline3" | q_to_nul >LF_nul
printf "line1Q\nline2\nline3" | q_to_nul >LF_nul &&
create_NNO_files CRLF_mix_LF CRLF_mix_LF CRLF_mix_LF CRLF_mix_LF CRLF_mix_LF &&
git -c core.autocrlf=false add NNO_*.txt &&
git commit -m "mixed line endings" &&
test_tick
'
@ -191,46 +270,72 @@ else
WAMIX=CRLF_LF
fi
# attr LF CRLF repoMIX CRLFmixLF LFmixCR CRLFNUL
# attr LF CRLF CRLFmixLF LFmixCR CRLFNUL
test_expect_success 'commit files empty attr' '
commit_check_warn false "" "" "" "" "" "" "" &&
commit_check_warn true "" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" "" &&
commit_check_warn input "" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" ""
commit_check_warn false "" "" "" "" "" "" &&
commit_check_warn true "" "LF_CRLF" "" "LF_CRLF" "" "" &&
commit_check_warn input "" "" "CRLF_LF" "CRLF_LF" "" ""
'
test_expect_success 'commit files attr=auto' '
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" "" ""
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" "" ""
'
test_expect_success 'commit files attr=text' '
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"
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"
'
test_expect_success 'commit files attr=-text' '
commit_check_warn false "-text" "" "" "" "" "" "" &&
commit_check_warn true "-text" "" "" "" "" "" "" &&
commit_check_warn input "-text" "" "" "" "" "" ""
commit_check_warn false "-text" "" "" "" "" "" &&
commit_check_warn true "-text" "" "" "" "" "" &&
commit_check_warn input "-text" "" "" "" "" ""
'
test_expect_success 'commit files attr=lf' '
commit_check_warn false "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" &&
commit_check_warn true "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" &&
commit_check_warn input "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"
commit_check_warn false "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" &&
commit_check_warn true "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" &&
commit_check_warn input "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"
'
test_expect_success 'commit files attr=crlf' '
commit_check_warn false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" &&
commit_check_warn true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" &&
commit_check_warn input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" ""
commit_check_warn false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" &&
commit_check_warn true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" &&
commit_check_warn input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" ""
'
# attr LF CRLF CRLFmixLF LF_mix_CR CRLFNUL
commit_chk_wrnNNO false "" "" "" "" "" ""
commit_chk_wrnNNO true "" "LF_CRLF" "" "" "" ""
commit_chk_wrnNNO input "" "" "" "" "" ""
commit_chk_wrnNNO false "auto" "$WILC" "$WICL" "$WAMIX" "" ""
commit_chk_wrnNNO true "auto" "LF_CRLF" "" "LF_CRLF" "" ""
commit_chk_wrnNNO input "auto" "" "CRLF_LF" "CRLF_LF" "" ""
commit_chk_wrnNNO false "text" "$WILC" "$WICL" "$WAMIX" "$WILC" "$WICL"
commit_chk_wrnNNO true "text" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" ""
commit_chk_wrnNNO input "text" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"
commit_chk_wrnNNO false "-text" "" "" "" "" ""
commit_chk_wrnNNO true "-text" "" "" "" "" ""
commit_chk_wrnNNO input "-text" "" "" "" "" ""
commit_chk_wrnNNO false "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"
commit_chk_wrnNNO true "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"
commit_chk_wrnNNO input "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"
commit_chk_wrnNNO false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" ""
commit_chk_wrnNNO true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" ""
commit_chk_wrnNNO input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" ""
test_expect_success 'create files cleanup' '
rm -f *.txt &&
git reset --hard
git -c core.autocrlf=false reset --hard
'
test_expect_success 'commit empty gitattribues' '
@ -257,6 +362,24 @@ test_expect_success 'commit -text' '
check_files_in_repo input "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
'
# attr LF CRLF CRLF_mix_LF LF_mix_CR CRLFNUL
check_in_repo_NNO false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
check_in_repo_NNO true "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
check_in_repo_NNO input "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
check_in_repo_NNO false "auto" LF LF LF LF_mix_CR CRLF_nul
check_in_repo_NNO true "auto" LF LF LF LF_mix_CR CRLF_nul
check_in_repo_NNO input "auto" LF LF LF LF_mix_CR CRLF_nul
check_in_repo_NNO false "text" LF LF LF LF_mix_CR LF_nul
check_in_repo_NNO true "text" LF LF LF LF_mix_CR LF_nul
check_in_repo_NNO input "text" LF LF LF LF_mix_CR LF_nul
check_in_repo_NNO false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
check_in_repo_NNO true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
check_in_repo_NNO input "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
################################################################################
# Check how files in the repo are changed when they are checked out
# How to read the table below: