[PATCH v2] t0027: Improve test for not-normalized files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxx>
---
This is marked as V2, but is the same as V1
Probably my mail program mangled the V1 patch,
I'll try a different one (mail instead of thunderbird)


t/t0027-auto-crlf.sh | 191 ++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 157 insertions(+), 34 deletions(-)

diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh
index 1a56e5e..b343651 100755
--- a/t/t0027-auto-crlf.sh
+++ b/t/t0027-auto-crlf.sh
@@ -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:
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]