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

Re: [PATCH 14/22] t/t9*: avoid redundant uses of cat

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 6, 2024, 00:43 UTC
Message-ID
<xmqqwmqgw5oq.fsf@gitster.g>
In-Reply-To
<8b9667e5-0d2f-4624-8f7c-f8400250a21e@gmail.com>
Rubén Justo <rjusto@gmail.com> writes:
Show 8 quoted lines
>>  	test_when_finished "git update-ref -d refs/heads/L2" &&
>>  	git fast-import <input &&
>>  	git ls-tree L2 g/b/ >tmp &&
>> -	cat tmp | cut -f 2 >actual &&
>> +	cut -f 2 <tmp >actual &&
>>  	test_cmp expect actual &&
>
> Nit: Maybe we can avoid tmp.

Piping "git ls-tree" output to "cut" would hide the exit status of "git ls-tree" if it fails, which is not a good idea, so I do not think of a way to avoid tmp so easily.

Show 11 quoted lines
>
>>  	git fsck $(git rev-parse L2)
>>  '
>> @@ -2012,7 +2012,7 @@ test_expect_success 'Q: verify first notes tree' '
>>  	100644 blob $commit2
>>  	100644 blob $commit3
>>  	EOF
>> -	cat expect.unsorted | sort >expect &&
>> +	sort expect.unsorted >expect &&
>
> Nit: I wonder if we can also avoid the cat that just precedes this hunk.
The whole thing reads like this:
test_expect_success 'Q: verify first notes tree' '
	cat >expect.unsorted <<-EOF &&
	100644 blob $commit1
	100644 blob $commit2
	100644 blob $commit3
	EOF
	cat expect.unsorted | sort >expect &&
	git cat-file -p refs/notes/foobar~2^{tree} | sed "s/ [0-9a-f]*	/ /" >actual &&
	test_cmp expect actual
'

As we are not in the business of debugging system-provided "sort", I agree that

	sort >expect <<-EOF &&
	100644 blob $commit1
	100644 blob $commit2
	100644 blob $commit3
	EOF

without having to use expect.unsorted would probably make sense. Well spotted.

This is outside the topic, but this test has different clean-up opportunities that are not related to the "do not run cat a single file and send its output into a pipe" pattern. The expected output we see here implicitly depends on the fact that the notes tree is so small that it hasn't been reorganized using fan-out levels. If the algorithm to decide when to start using fan-out directories changes, this test can break. To avoid that, we may need to do something like

	git ls-tree -r refs/notes/foobar~2 >ls-tree &&
	sed -e "s/ [0-9a-f]*               / /" -e "s|/||g" >actual &&

so that we will get the commit object name without the slashes that show the fan-out directories. Also, the current "actual" generation hides the exit status from "git cat-file".

Previous: Rubén JustoNext: Rubén Justo
Message 28 of 78 in “avoid redundant pipelines”
  1. 00/22 avoid redundant pipelinesBeat Bolli, Mar 5, 2024
  2. 01/22 doc: avoid redundant use of catBeat Bolli, Mar 5, 2024
  3. Junio C HamanoMar 5, 2024
  4. 02/22 contrib/subtree/t: avoid redundant use of catBeat Bolli, Mar 5, 2024
  5. Junio C HamanoMar 5, 2024
  6. 03/22 t/lib-cvs.sh: avoid redundant use of catBeat Bolli, Mar 5, 2024
  7. Junio C HamanoMar 5, 2024
  8. 04/22 t/annotate-tests.sh: avoid redundant use of catBeat Bolli, Mar 5, 2024
  9. Junio C HamanoMar 5, 2024
  10. Rubén JustoMar 6, 2024
  11. Junio C HamanoMar 6, 2024
  12. Rubén JustoMar 6, 2024
  13. 05/22 t/perf: avoid redundant use of catBeat Bolli, Mar 5, 2024
  14. Junio C HamanoMar 5, 2024
  15. 06/22 t/t0*: avoid redundant uses of catBeat Bolli, Mar 5, 2024
  16. 07/22 t/t1*: avoid redundant uses of catBeat Bolli, Mar 5, 2024
  17. 08/22 t/t3*: avoid redundant uses of catBeat Bolli, Mar 5, 2024
  18. 09/22 t/t4*: avoid redundant uses of catBeat Bolli, Mar 5, 2024
  19. Junio C HamanoMar 6, 2024
  20. Eric SunshineMar 6, 2024
  21. Beat BolliMar 6, 2024
  22. 10/22 t/t5*: avoid redundant uses of catBeat Bolli, Mar 5, 2024
  23. 11/22 t/t6*: avoid redundant uses of catBeat Bolli, Mar 5, 2024
  24. 12/22 t/t7*: avoid redundant use of catBeat Bolli, Mar 5, 2024
  25. 13/22 t/t8*: avoid redundant use of catBeat Bolli, Mar 5, 2024
  26. 14/22 t/t9*: avoid redundant uses of catBeat Bolli, Mar 5, 2024
  27. Rubén JustoMar 5, 2024
  28. Junio C HamanoMar 6, 2024
  29. Rubén JustoMar 6, 2024
  30. 15/22 t/t1*: merge a "grep | sed" pipelineBeat Bolli, Mar 5, 2024
  31. 16/22 t/t3*: merge a "grep | awk" pipelineBeat Bolli, Mar 5, 2024
  32. Junio C HamanoMar 6, 2024
  33. 17/22 t/t4*: merge a "grep | sed" pipelineBeat Bolli, Mar 5, 2024
  34. 18/22 t/t5*: merge a "grep | sed" pipelineBeat Bolli, Mar 5, 2024
  35. Junio C HamanoMar 6, 2024
  36. 19/22 t/t8*: merge "grep | sed" pipelinesBeat Bolli, Mar 5, 2024
  37. Junio C HamanoMar 6, 2024
  38. Todd ZullingerMar 6, 2024
  39. Junio C HamanoMar 6, 2024
  40. Beat BolliMar 6, 2024
  41. Junio C HamanoMar 6, 2024
  42. 20/22 t/t9*: merge "grep | sed" pipelinesBeat Bolli, Mar 5, 2024
  43. Junio C HamanoMar 6, 2024
  44. 21/22 contrib/coverage-diff: avoid redundant pipelinesBeat Bolli, Mar 5, 2024
  45. 22/22 git-quiltimport: avoid an unnecessary subshellBeat Bolli, Mar 5, 2024
  46. Rubén JustoMar 5, 2024
  47. Rubén JustoMar 5, 2024
  48. Junio C HamanoMar 5, 2024
  49. 00/22 avoid redundant pipelinesBeat Bolli, Mar 15, 2024
  50. 01/22 doc: avoid redundant use of catBeat Bolli, Mar 15, 2024
  51. 07/22 t/t1*: avoid redundant uses of catBeat Bolli, Mar 15, 2024
  52. 06/22 t/t0*: avoid redundant uses of catBeat Bolli, Mar 15, 2024
  53. 02/22 contrib/subtree/t: avoid redundant use of catBeat Bolli, Mar 15, 2024
  54. 08/22 t/t3*: avoid redundant uses of catBeat Bolli, Mar 15, 2024
  55. 03/22 t/lib-cvs.sh: avoid redundant use of catBeat Bolli, Mar 15, 2024
  56. 09/22 t/t4*: avoid redundant uses of catBeat Bolli, Mar 15, 2024
  57. Taylor BlauMar 16, 2024
  58. Junio C HamanoMar 16, 2024
  59. 04/22 t/annotate-tests.sh: avoid redundant use of catBeat Bolli, Mar 15, 2024
  60. 10/22 t/t5*: avoid redundant uses of catBeat Bolli, Mar 15, 2024
  61. 05/22 t/perf: avoid redundant use of catBeat Bolli, Mar 15, 2024
  62. 11/22 t/t6*: avoid redundant uses of catBeat Bolli, Mar 15, 2024
  63. 12/22 t/t7*: avoid redundant use of catBeat Bolli, Mar 15, 2024
  64. 13/22 t/t8*: avoid redundant use of catBeat Bolli, Mar 15, 2024
  65. 14/22 t/t9*: avoid redundant uses of catBeat Bolli, Mar 15, 2024
  66. 15/22 t/t1*: merge a "grep | sed" pipelineBeat Bolli, Mar 15, 2024
  67. 16/22 t/t3*: merge a "grep | awk" pipelineBeat Bolli, Mar 15, 2024
  68. Taylor BlauMar 16, 2024
  69. Beat BolliMar 16, 2024
  70. Taylor BlauMar 16, 2024
  71. 17/22 t/t4*: merge a "grep | sed" pipelineBeat Bolli, Mar 15, 2024
  72. 18/22 t/t5*: merge a "grep | sed" pipelineBeat Bolli, Mar 15, 2024
  73. 19/22 t/t8*: merge "grep | sed" pipelinesBeat Bolli, Mar 15, 2024
  74. 20/22 t/t9*: merge "grep | sed" pipelinesBeat Bolli, Mar 15, 2024
  75. 21/22 contrib/coverage-diff: avoid redundant pipelinesBeat Bolli, Mar 15, 2024
  76. 22/22 git-quiltimport: avoid an unnecessary subshellBeat Bolli, Mar 15, 2024
  77. Taylor BlauMar 16, 2024
  78. Junio C HamanoMar 16, 2024

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.