Subject: Re: [PATCH v2] t0027: check the eol conversion warnings

From: Junio C Hamano <[email-masked]>
Date: Fri, 05 Dec 2014 15:15:21 -0800

Torsten Bögershausen <[email-masked]> writes:

> Depending on the file content, eol parameters and .gitattributes
> "git add" may give a warning when the eol of a file will change
> when the file is checked out again.
>
> There are 2 different warnings, either "CRLF will be replaced..." or
> "LF will be replaced...".
>
> Let t0027 check for these warnings:
> call create_file_in_repo() with additional parameters,
> which will be used to call check_warning().
>
> When a file has eol=lf or eol=crlf in .gitattributes, it is handled
> as text and should be normalized.
> Add missing test cases in t0027.
>
> Signed-off-by: Torsten Bögershausen <[email-masked]>
> ---

Thanks; nobody seems to have shown interest in this and it fell
through the cracks it seems.  I didn't make a connection to the
previous discussion when I saw this v2, and backburnered it.

The patch is clear that the change to check the expected "X will be
replaced by Y" is added to existing combinations, and also for the
lf & crlf cases the existing tests were not checking earlier.

Will queue.

> Changes since V1:
> - Simplified the diff
> - Fixed a bug (LF_mix_CR.err was mixed with CRLF_mix_LF)
> - Changed the commit message
>  t/t0027-auto-crlf.sh | 82 ++++++++++++++++++++++++++++++++++++++++++----------
>  1 file changed, 66 insertions(+), 16 deletions(-)
>
> diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh
> index 2a4a6c1..452320d 100755
> --- a/t/t0027-auto-crlf.sh
> +++ b/t/t0027-auto-crlf.sh
> @@ -55,16 +55,41 @@ create_gitattributes () {
>  	esac
>  }
>  
> +check_warning () {
> +	case "$1" in
> +	LF_CRLF) grep "LF will be replaced by CRLF" $2;;
> +	CRLF_LF) grep "CRLF will be replaced by LF" $2;;
> +	'')
> +		>expect
> +		grep "will be replaced by" $2 >actual
> +		test_cmp expect actual
> +		;;
> +	*) false ;;
> +	esac
> +}
> +
>  create_file_in_repo () {
>  	crlf=$1
>  	attr=$2
> +	lfname=$3
> +	crlfname=$4
> +	lfmixcrlf=$5
> +	lfmixcr=$6
> +	crlfnul=$7
>  	create_gitattributes "$attr" &&
> +	pfx=crlf_${crlf}_attr_${attr}
>  	for f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul
>  	do
> -		pfx=crlf_${crlf}_attr_${attr}_$f.txt &&
> -		cp $f $pfx && git -c core.autocrlf=$crlf add $pfx
> +		fname=${pfx}_$f.txt &&
> +		cp $f $fname &&
> +		git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err"
>  	done &&
> -	git commit -m "core.autocrlf $crlf"
> +	git commit -m "core.autocrlf $crlf" &&
> +	check_warning "$lfname" ${pfx}_LF.err &&
> +	check_warning "$crlfname" ${pfx}_CRLF.err &&
> +	check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err &&
> +	check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err &&
> +	check_warning "$crlfnul" ${pfx}_CRLF_nul.err
>  }
>  
>  check_files_in_repo () {
> @@ -140,22 +165,47 @@ test_expect_success 'setup master' '
>  '
>  
>  
> -test_expect_success 'create files' '
> -	create_file_in_repo false "" &&
> -	create_file_in_repo true  "" &&
> -	create_file_in_repo input "" &&
>  
> -	create_file_in_repo false "auto" &&
> -	create_file_in_repo true  "auto" &&
> -	create_file_in_repo input "auto" &&
> +warn_LF_CRLF="LF will be replaced by CRLF"
> +warn_CRLF_LF="CRLF will be replaced by LF"
> +
> +test_expect_success 'add files empty attr' '
> +	create_file_in_repo false ""     ""        ""        ""        ""        "" &&
> +	create_file_in_repo true  ""     "LF_CRLF" ""        "LF_CRLF" ""        "" &&
> +	create_file_in_repo input ""     ""        "CRLF_LF" "CRLF_LF" ""        ""
> +'
> +
> +test_expect_success 'add files attr=auto' '
> +	create_file_in_repo false "auto" ""        "CRLF_LF" "CRLF_LF" ""        "" &&
> +	create_file_in_repo true  "auto" "LF_CRLF" ""        "LF_CRLF" ""        "" &&
> +	create_file_in_repo input "auto" ""        "CRLF_LF" "CRLF_LF" ""        ""
> +'
> +
> +test_expect_success 'add files attr=text' '
> +	create_file_in_repo false "text" ""        "CRLF_LF" "CRLF_LF" ""        "CRLF_LF" &&
> +	create_file_in_repo true  "text" "LF_CRLF" ""        "LF_CRLF" "LF_CRLF" ""        &&
> +	create_file_in_repo input "text" ""        "CRLF_LF" "CRLF_LF" ""        "CRLF_LF"
> +'
> +
> +test_expect_success 'add files attr=-text' '
> +	create_file_in_repo false "-text" ""       ""        ""        ""        "" &&
> +	create_file_in_repo true  "-text" ""       ""        ""        ""        "" &&
> +	create_file_in_repo input "-text" ""       ""        ""        ""        ""
> +'
> +
> +test_expect_success 'add files attr=lf' '
> +	create_file_in_repo false "lf"    ""       "CRLF_LF" "CRLF_LF"  ""       "CRLF_LF" &&
> +	create_file_in_repo true  "lf"    ""       "CRLF_LF" "CRLF_LF"  ""       "CRLF_LF" &&
> +	create_file_in_repo input "lf"    ""       "CRLF_LF" "CRLF_LF"  ""       "CRLF_LF"
> +'
>  
> -	create_file_in_repo false "text" &&
> -	create_file_in_repo true  "text" &&
> -	create_file_in_repo input "text" &&
> +test_expect_success 'add files attr=crlf' '
> +	create_file_in_repo false "crlf" "LF_CRLF" ""        "LF_CRLF" "LF_CRLF" "" &&
> +	create_file_in_repo true  "crlf" "LF_CRLF" ""        "LF_CRLF" "LF_CRLF" "" &&
> +	create_file_in_repo input "crlf" "LF_CRLF" ""        "LF_CRLF" "LF_CRLF" ""
> +'
>  
> -	create_file_in_repo false "-text" &&
> -	create_file_in_repo true  "-text" &&
> -	create_file_in_repo input "-text" &&
> +test_expect_success 'create files cleanup' '
>  	rm -f *.txt &&
>  	git reset --hard
>  '