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

Re: [PATCH v3] parallel-checkout: avoid dash local bug in tests

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 6, 2021, 01:41 UTC
Message-ID
<xmqq5yyr22i2.fsf@gitster.g>
In-Reply-To
<3b71b62d-b299-aac8-f796-ee7a5d7f87b0@web.de>
René Scharfe <l.s.r@web.de> writes:
Show 22 quoted lines
> Dash bug https://bugs.launchpad.net/ubuntu/+source/dash/+bug/139097
> lets the shell erroneously perform field splitting on the expansion of a
> command substitution during declaration of a local variable.  It causes
> the parallel-checkout tests to fail e.g. when running them with
> /bin/dash on MacOS 11.4, where they error out like this:
>
>    ./t2080-parallel-checkout-basics.sh: 33: local: 0: bad variable name
>
> That's because the output of wc -l contains leading spaces and the
> returned number of lines is treated as another variable to declare, i.e.
> as in "local workers= 0".
>
> Work around it by enclosing the command substitution in quotes.
>
> Helped-by: Matheus Tavares Bernardino <matheus.bernardino@usp.br>
> Helped-by: SZEDER Gábor <szeder.dev@gmail.com>
> Helped-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
> Changes since v2:
> - Use minimal fix.
> - New commit message.

Thanks. As I said, I do not necessarily think this is conceptually "minimal", but we use workers only once and without surrounding dq so it is easy to see that this also is correct.

Will queue.
Show 19 quoted lines
>
>  t/lib-parallel-checkout.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/t/lib-parallel-checkout.sh b/t/lib-parallel-checkout.sh
> index 21f5759732..83b279a846 100644
> --- a/t/lib-parallel-checkout.sh
> +++ b/t/lib-parallel-checkout.sh
> @@ -27,7 +27,7 @@ test_checkout_workers () {
>  	rm -f "$trace_file" &&
>  	GIT_TRACE2="$(pwd)/$trace_file" "$@" 2>&8 &&
>
> -	local workers=$(grep "child_start\[..*\] git checkout--worker" "$trace_file" | wc -l) &&
> +	local workers="$(grep "child_start\[..*\] git checkout--worker" "$trace_file" | wc -l)" &&
>  	test $workers -eq $expected_workers &&
>  	rm "$trace_file"
>  } 8>&2 2>&4
> --
> 2.31.1
Previous: René Scharfe
Message 14 of 14 in “parallel-checkout: use grep -c to count workers in tests”
  1. parallel-checkout: use grep -c to count workers in testsRené Scharfe, Jun 5, 2021
  2. Matheus Tavares BernardinoJun 5, 2021
  3. René ScharfeJun 5, 2021
  4. René ScharfeJun 5, 2021
  5. parallel-checkout: avoid dash local bug in testsRené Scharfe, Jun 5, 2021
  6. SZEDER GáborJun 5, 2021
  7. René ScharfeJun 6, 2021
  8. Ævar Arnfjörð BjarmasonJun 5, 2021
  9. Matheus Tavares BernardinoJun 5, 2021
  10. Matheus Tavares BernardinoJun 5, 2021
  11. René ScharfeJun 6, 2021
  12. Junio C HamanoJun 6, 2021
  13. parallel-checkout: avoid dash local bug in testsRené Scharfe, Jun 6, 2021
  14. Junio C HamanoJun 6, 2021

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.