git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v1 1/6] t0027: Add tests for get_stream_filter()

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 2, 2016, 21:18 UTC
Message-ID
<xmqqk2mmretb.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<1454431988-1941-1-git-send-email-tboegi@web.de>
tboegi@web.de writes:
Show 31 quoted lines
> From: Torsten Bögershausen <tboegi@web.de>
>
> When a filter is configured, a different code-path is used in convert.c
> and entry.c via get_stream_filter(), but there are no test cases yet.
>
> Add tests for the filter API by configuring the ident filter.
> The result of the SHA1 conversion is not checked, this is already
> done in other TC.
>
> Add a parameter to checkout_files() in t0027.
> While changing the signature, add another parameter for the eol= attribute.
> This is currently unused, tests for e.g.
> "* text=auto eol=lf" will be added in a separate commit.
>
> Signed-off-by: Torsten Bögershausen <tboegi@web.de>
> ---
>  t/t0027-auto-crlf.sh | 262 ++++++++++++++++++++++++++++-----------------------
>  1 file changed, 146 insertions(+), 116 deletions(-)
>
> diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh
> index 504e5a0..681f0c5 100755
> --- a/t/t0027-auto-crlf.sh
> +++ b/t/t0027-auto-crlf.sh
> @@ -21,32 +21,45 @@ compare_ws_file () {
>  	pfx=$1
>  	exp=$2.expect
>  	act=$pfx.actual.$3
> -	tr '\015\000' QN <"$2" >"$exp" &&
> -	tr '\015\000' QN <"$3" >"$act" &&
> +	tr '\015\000abcdef01234567890' QN00000000000000000 <"$2" >"$exp" &&
> +	tr '\015\000abcdef01234567890' QN00000000000000000 <"$3" >"$act" &&
'0' is listed twice on purpose?
>  	test_cmp $exp $act &&
>  	rm $exp $act

As we are not forcing all the future callers of this helper functions to feed only non problematic pathnames, we should quote these variable references, but this is not a new issue this patch introduces.

Show 15 quoted lines
>  }
>  
>  create_gitattributes () {
>  	attr=$1
> +	ident=$2
> +	case "$2" in
> +		"")
> +			>.gitattributes
> +			;;
> +		i)
> +			echo "* ident" >.gitattributes
> +			;;
> +		*)
> +			echo >&2 invalid ident: $2
> +			exit 1

This is overindented. Case arms align with case/esac, and their bodies indent one level down, i.e.

	case "$2" in
        "")
        	>.gitattributes
                ;;
	esac

By the way, I somehow find it hard to follow to assign magic meanings "clear" and "prepare ident for everybody" to a short and cryptic "" (empty string) and "i". If you were taking advantage of the fact that all existing uses of this helper function pass only one argument to it and you will get $ident="" automatically from the ones that you did not touch, that might be a reasonable way to reduce patch noise, but because you are doing things like this

> -	create_gitattributes "$attr" &&
> +	create_gitattributes "$attr" "" &&
anyway, it may make sense to be slightly more verbose and readable.
Show 11 quoted lines
> +	esac
> +
>  	case "$attr" in
>  		auto)
> -		echo "*.txt text=auto" >.gitattributes
> +		echo "*.txt text=auto" >>.gitattributes
>  		;;
>  		...
>  		;;
>  		*)
>  		echo >&2 invalid attribute: $attr

As you are touching this helper to emit more than one thing into the file, I'd consider doing

	{
                case "$2" in
                clear)	;;
                ident)	echo '* ident' ;;
                ...
                esac &&
                case "$1" in
                auto)	echo '*.txt auto' ;;
                ...
                esac
	} >.gitattributes
or even
	{
                while test "$#" != 1
                do
                        printf "%s\n" "$1"
                        shift
                done &&
                case "$1" in
                auto)	echo '*.txt auto' ;;
                ...
                esac &&
	} >.gitattributes

anticipating that we may want more things added to the output in the future. The latter form allows your callers to say things like

	create_gitattributes "auto" "* ident" "*.bin binary" 
without having to touch the helper function.
Previous: tboegi@web.deNext: tboegi@web.de
Message 6 of 47 in “t0027: Add tests for get_stream_filter()”
  1. t0027: Add tests for get_stream_filter()tboegi@web.de, Jan 24, 2016
  2. Junio C HamanoJan 27, 2016
  3. Torsten BögershausenJan 27, 2016
  4. 1/6 t0027: Add tests for get_stream_filter()tboegi@web.de, Jan 27, 2016
  5. 1/6 t0027: Add tests for get_stream_filter()tboegi@web.de, Feb 2, 2016
  6. Junio C HamanoFeb 2, 2016
  7. 2/6 convert.c: Remove path when not neededtboegi@web.de, Feb 2, 2016
  8. Junio C HamanoFeb 2, 2016
  9. 3/6 convert.c: Remove input_crlf_action()tboegi@web.de, Feb 2, 2016
  10. Junio C HamanoFeb 2, 2016
  11. 4/6 convert.c: Use text_eol_is_crlf()tboegi@web.de, Feb 2, 2016
  12. 5/6 convert: auto_crlf=false and no attributes set: same as binarytboegi@web.de, Feb 2, 2016
  13. 6/6 convert.c: Refactor crlf_actiontboegi@web.de, Feb 2, 2016
  14. 1/7 t0027: Add tests for get_stream_filter()tboegi@web.de, Feb 4, 2016
  15. Junio C HamanoFeb 4, 2016
  16. 2/7 convert.c: remove unused parameter 'path'tboegi@web.de, Feb 4, 2016
  17. 3/7 convert.c: Remove input_crlf_action()tboegi@web.de, Feb 4, 2016
  18. 4/7 convert.c: Use text_eol_is_crlf()tboegi@web.de, Feb 4, 2016
  19. Junio C HamanoFeb 4, 2016
  20. 5/7 convert: auto_crlf=false and no attributes set: same as binarytboegi@web.de, Feb 4, 2016
  21. 6/7 convert.c: Refactor crlf_actiontboegi@web.de, Feb 4, 2016
  22. 7/7 convert.c: simplify text_stattboegi@web.de, Feb 4, 2016
  23. Junio C HamanoFeb 4, 2016
  24. 1/7 t0027: Add tests for get_stream_filter()tboegi@web.de, Feb 5, 2016
  25. Junio C HamanoFeb 8, 2016
  26. 2/7 convert.c: remove unused parameter 'path'tboegi@web.de, Feb 5, 2016
  27. 3/7 convert.c: Remove input_crlf_action()tboegi@web.de, Feb 5, 2016
  28. 4/7 convert.c: use text_eol_is_crlf()tboegi@web.de, Feb 5, 2016
  29. 5/7 convert: auto_crlf=false and no attributes set: same as binarytboegi@web.de, Feb 5, 2016
  30. Junio C HamanoFeb 8, 2016
  31. Torsten BögershausenFeb 9, 2016
  32. Junio C HamanoFeb 9, 2016
  33. 6/7 convert.c: refactor crlf_actiontboegi@web.de, Feb 5, 2016
  34. 7/7 convert.c: simplify text_stattboegi@web.de, Feb 5, 2016
  35. 1/6 t0027: add tests for get_stream_filter()tboegi@web.de, Feb 10, 2016
  36. 2/6 convert.c: remove unused parameter 'path'tboegi@web.de, Feb 10, 2016
  37. 3/6 convert.c: remove input_crlf_action()tboegi@web.de, Feb 10, 2016
  38. 4/6 convert.c: use text_eol_is_crlf()tboegi@web.de, Feb 10, 2016
  39. 5/6 convert.c: refactor crlf_actiontboegi@web.de, Feb 10, 2016
  40. 6/6 convert.c: simplify text_stattboegi@web.de, Feb 10, 2016
  41. 1/1 convert.c: correct attr_actiontboegi@web.de, Feb 22, 2016
  42. Eric SunshineFeb 22, 2016
  43. Junio C HamanoFeb 22, 2016
  44. Junio C HamanoFeb 22, 2016
  45. Torsten BögershausenFeb 23, 2016
  46. 1/1 convert.c: correct attr_actiontboegi@web.de, Feb 23, 2016
  47. Junio C HamanoFeb 23, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.