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

[PATCH] parallel-checkout: use grep -c to count workers in tests

From
René Scharfe <l.s.r@web.de>
Date
Jun 5, 2021, 12:27 UTC
Message-ID
<eb4bcd4c-e6d2-cbeb-8951-cf22b9d3d5fe@web.de>

The parallel checkout tests fail when run with /bin/dash on MacOS 11.4, reporting the following error:

   ./t2080-parallel-checkout-basics.sh: 33: local: 0: bad variable name

This seems to be caused by a bug in dash, which doesn't like the pipe into wc for some reason. We can work around it and make the test slightly shorter and faster by having grep do the counting, though, so let's do that.

Signed-off-by: René Scharfe <l.s.r@web.de>
---
Reduced test case for underlying dash issue:
   $ dash -c 'foo () { local bar=$(echo baz | wc); }; foo'
   dash: 1: local: 1: bad variable name
The pipe is not even required to trigger the issue:
   $ dash -c 'foo () { local bar=$(wc /dev/null); }; foo'
   dash: 1: local: 0: bad variable name
Turning wc into a function calms the shell:
   $ dash -c 'foo () { local bar=$(echo baz | wc); }; wc () { :; }; foo'
Setting a global variable also works fine:
   $ dash -c 'foo () { bar=$(echo baz | wc); }; foo'
 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..145276eb4c 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 -c "child_start\[..*\] git checkout--worker" <"$trace_file") &&
 	test $workers -eq $expected_workers &&
 	rm "$trace_file"
 } 8>&2 2>&4
--
2.31.1
Next: Matheus Tavares Bernardino
Message 1 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.