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

Re: [PATCH] t3900: add some more quotes

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 10, 2018, 21:31 UTC
Message-ID
<xmqqy3l5z9hx.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20180110195323.GA26186@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 26 quoted lines
> Yeah. One of the reasons for both of the errors in this thread is the
> nested double-quoting. Using single quotes is awkward because we're
> already using them to delimit the whole snippet.  I've often wondered if
> our tests would be more readable taking the snippet over stdin.
> Something like:
> +test_expect_success 'UTF-8 invalid characters refused' - <<\EOT
> +	test_when_finished 'rm -f "$HOME/stderr $HOME/invalid"' &&
> ...
> -'
> +EOT
> 
> +# Read from stdin into the variable given in $1.
> +test_read_to_eof () {
> +	# Bash's "read" is sufficiently flexible that we can skip the extra
> +	# process.
> +	if test -n "$BASH_VERSION"
> +	then
> +		# 64k should be enough for anyone...
> +		read -N 65536 -r "$1"
> +	else
> +		# command substitution eats trailing whitespace, so we add
> +		# and then remove a non-whitespace character.
> +		eval "$1=\$(cat; printf x)"
> +		eval "$1=\${$1%x}"
> +	fi
> +}
Yuck.  Hacky but nice.

I think this will make it easier to read but I suspect here text would use temporary files and may slow things down a bit? I do not know if it is even measurable, though.

Show 26 quoted lines
> +
>  test_expect_failure () {
>  	test_start_
>  	test "$#" = 3 && { test_prereq=$1; shift; } || test_prereq=
>  	test "$#" = 2 ||
>  	error "bug in the test script: not 2 or 3 parameters to test-expect-failure"
> +	if test "$2" = "-"
> +	then
> +		test_read_to_eof test_block
> +		set -- "$1" "$test_block"
> +	fi
>  	test_verify_prereq
>  	export test_prereq
>  	if ! test_skip "$@"
> @@ -416,6 +437,11 @@ test_expect_success () {
>  	test "$#" = 3 && { test_prereq=$1; shift; } || test_prereq=
>  	test "$#" = 2 ||
>  	error "bug in the test script: not 2 or 3 parameters to test-expect-success"
> +	if test "$2" = "-"
> +	then
> +		test_read_to_eof test_block
> +		set -- "$1" "$test_block"
> +	fi
>  	test_verify_prereq
>  	export test_prereq
>  	if ! test_skip "$@"
Previous: Jeff KingNext: Jeff King
Message 11 of 14 in “t3900: add some more quotes”
  1. t3900: add some more quotesBeat Bolli, Jan 10, 2018
  2. Jeff KingJan 10, 2018
  3. Johannes SchindelinJan 10, 2018
  4. Eric SunshineJan 10, 2018
  5. t3900: add some more quotesBeat Bolli, Jan 10, 2018
  6. Johannes SchindelinJan 10, 2018
  7. Junio C HamanoJan 10, 2018
  8. Johannes SixtJan 10, 2018
  9. Junio C HamanoJan 10, 2018
  10. Jeff KingJan 10, 2018
  11. Junio C HamanoJan 10, 2018
  12. Jeff KingJan 11, 2018
  13. read test snippet from stdin [was: [PATCH] t3900: add some more quotes]SZEDER Gábor, Jan 11, 2018
  14. Jeff KingJan 11, 2018

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.