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

[PATCH v2 03/11] cache-tree tests: refactor overly complex function

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Jan 16, 2021, 15:35 UTC
Message-ID
<20210116153554.12604-4-avarab@gmail.com>
In-Reply-To
<20210114233515.31298-1-avarab@gmail.com>

Refactor overly complex code added in 9c4d6c0297 (cache-tree: Write updated cache-tree after commit, 2014-07-13).

Interestingly, in the numerous commits[1][2][3] who fixed commits bugs in this code since its introduction it seems not to have been noticed that we didn't need to be doing some dance with grep/cut/uniq/awk to extract this information. It can be done in a much simpler way with just "ls-tree" and "wc -l".

I'm also removing the comment, because I think now that this code is trivial to understand it's not needed anymore.

1. c8db708d5d (t0090: avoid passing empty string to printf %d,
   2014-09-30)
2. d69360c6b1 (t0090: tweak awk statement for Solaris
   /usr/xpg4/bin/awk, 2014-12-22)
3. 9b5a9fa60a (t0090: stop losing return codes of git commands,
   2019-11-27)
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/t0090-cache-tree.sh | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/t/t0090-cache-tree.sh b/t/t0090-cache-tree.sh
index 2e3efeb80e..f1b0a6a679 100755
--- a/t/t0090-cache-tree.sh
+++ b/t/t0090-cache-tree.sh
@@ -18,20 +18,16 @@ cmp_cache_tree () {
 # correct.
 generate_expected_cache_tree_rec () {
 	dir="$1${1:+/}" &&
-	# ls-files might have foo/bar, foo/bar/baz, and foo/bar/quux
-	# We want to count only foo because it's the only direct child
-	git ls-files >files &&
-	subtrees=$(grep / files|cut -d / -f 1|uniq) &&
-	subtree_count=$(echo "$subtrees"|awk -v c=0 '$1 != "" {++c} END {print c}') &&
-	entries=$(wc -l <files) &&
-	printf "SHA $dir (%d entries, %d subtrees)\n" "$entries" "$subtree_count" &&
-	for subtree in $subtrees
+	git ls-tree --name-only HEAD >files &&
+	git ls-tree --name-only -d HEAD >subtrees &&
+	printf "SHA %s (%d entries, %d subtrees)\n" "$dir" $(wc -l <files) $(wc -l <subtrees) &&
+	while read subtree
 	do
 		(
 			cd "$subtree"
-			generate_expected_cache_tree_rec "$dir$subtree" || return 1
+			generate_expected_cache_tree_rec "$subtree" || return 1
 		)
-	done
+	done <subtrees
 }
 
 test_cache_tree () {
-- 
2.29.2.222.g5d2a92d10f8
Previous: Ævar Arnfjörð BjarmasonNext: Junio C Hamano
Message 71 of 228 in “t: general test cleanup + `set -o pipefail`”
  1. 00/27 t: general test cleanup + `set -o pipefail`Denton Liu, Nov 15, 2019
  2. 01/27 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 15, 2019
  3. Eric SunshineNov 15, 2019
  4. Junio C HamanoNov 16, 2019
  5. 02/27 t0014: remove git command upstream of pipeDenton Liu, Nov 15, 2019
  6. 03/27 t0090: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  7. 04/27 t3301: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  8. 06/27 t3600: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  9. 05/27 t3600: use test_line_count() where possibleDenton Liu, Nov 15, 2019
  10. 07/27 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 15, 2019
  11. 09/27 t4015: use test_write_lines()Denton Liu, Nov 15, 2019
  12. 08/27 t4015: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  13. 10/27 t4138: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  14. Eric SunshineNov 16, 2019
  15. 11/27 t5317: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  16. 12/27 t5317: use ! grep to check for no matching linesDenton Liu, Nov 15, 2019
  17. Eric SunshineNov 16, 2019
  18. 13/27 t5703: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  19. Eric SunshineNov 16, 2019
  20. 14/27 t7501: remove spaces after redirect operatorsDenton Liu, Nov 15, 2019
  21. 15/27 t7501: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  22. Eric SunshineNov 16, 2019
  23. 16/27 t7700: drop redirections to /dev/nullDenton Liu, Nov 15, 2019
  24. 17/27 t7700: remove spaces after redirect operatorsDenton Liu, Nov 15, 2019
  25. 19/27 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 15, 2019
  26. 18/27 t7700: move keywords onto their own lineDenton Liu, Nov 15, 2019
  27. 20/27 t7700: stop losing return codes of git commandsDenton Liu, Nov 15, 2019
  28. 21/27 t: define test_grep_return_success()Denton Liu, Nov 15, 2019
  29. Junio C HamanoNov 15, 2019
  30. 22/27 t0090: mask failing grep statusDenton Liu, Nov 15, 2019
  31. 23/27 t3600: mark git command as failingDenton Liu, Nov 15, 2019
  32. Junio C HamanoNov 15, 2019
  33. 24/27 t5004: ignore SIGPIPE in zipinfoDenton Liu, Nov 15, 2019
  34. Junio C HamanoNov 15, 2019
  35. 25/27 t5703: mask failing grep statusDenton Liu, Nov 15, 2019
  36. 26/27 t9902: disable pipefailDenton Liu, Nov 15, 2019
  37. 27/27 t: run tests with `set -o pipefail` on BashDenton Liu, Nov 15, 2019
  38. Jeff KingNov 15, 2019
  39. 0/6 tests: add a bash "set -o pipefail" test modeÆvar Arnfjörð Bjarmason, Jan 14, 2021
  40. 09/11 archive tests: use a cheaper "zipinfo -h" invocation to get headerÆvar Arnfjörð Bjarmason, Jan 16, 2021
  41. Jeff KingJan 17, 2021
  42. 08/11 upload-pack tests: avoid a non-zero "grep" exit statusÆvar Arnfjörð Bjarmason, Jan 16, 2021
  43. Junio C HamanoJan 16, 2021
  44. 10/11 tests: split up bash detection libraryÆvar Arnfjörð Bjarmason, Jan 16, 2021
  45. 05/11 git svn mergeinfo tests: refactor "test -z" to use test_must_be_emptyÆvar Arnfjörð Bjarmason, Jan 16, 2021
  46. 11/11 tests: add a "set -o pipefail" for a patched bashÆvar Arnfjörð Bjarmason, Jan 16, 2021
  47. SZEDER GáborJan 20, 2021
  48. Junio C HamanoJan 23, 2021
  49. Junio C HamanoJan 23, 2021
  50. Ævar Arnfjörð BjarmasonJan 23, 2021
  51. 01/10 cache-tree tests: refactor for modern test styleÆvar Arnfjörð Bjarmason, Jan 23, 2021
  52. Junio C HamanoJan 23, 2021
  53. 00/10 Miscellaneous "set -o pipefail"-related test cleanupsÆvar Arnfjörð Bjarmason, Jan 23, 2021
  54. 02/10 cache-tree tests: remove unused $2 parameterÆvar Arnfjörð Bjarmason, Jan 23, 2021
  55. Junio C HamanoJan 23, 2021
  56. 03/10 cache-tree tests: use a sub-shell with less indirectionÆvar Arnfjörð Bjarmason, Jan 23, 2021
  57. Junio C HamanoJan 23, 2021
  58. 04/10 cache-tree tests: explicitly test HEAD and index differencesÆvar Arnfjörð Bjarmason, Jan 23, 2021
  59. 05/10 git svn mergeinfo tests: modernize redirection & quoting styleÆvar Arnfjörð Bjarmason, Jan 23, 2021
  60. 06/10 git svn mergeinfo tests: refactor "test -z" to use test_must_be_emptyÆvar Arnfjörð Bjarmason, Jan 23, 2021
  61. 07/10 git-svn tests: rewrite brittle tests to use "--[no-]merges".Ævar Arnfjörð Bjarmason, Jan 23, 2021
  62. 08/10 upload-pack tests: avoid a non-zero "grep" exit statusÆvar Arnfjörð Bjarmason, Jan 23, 2021
  63. 10/10 rm tests: actually test for SIGPIPE in SIGPIPE testÆvar Arnfjörð Bjarmason, Jan 23, 2021
  64. 09/10 archive tests: use a cheaper "zipinfo -h" invocation to get headerÆvar Arnfjörð Bjarmason, Jan 23, 2021
  65. Ævar Arnfjörð BjarmasonJan 23, 2021
  66. 02/11 cache-tree tests: use a sub-shell with less indirectionÆvar Arnfjörð Bjarmason, Jan 16, 2021
  67. Jeff KingJan 17, 2021
  68. Eric SunshineJan 17, 2021
  69. Junio C HamanoJan 17, 2021
  70. 07/11 rm tests: actually test for SIGPIPE in SIGPIPE testÆvar Arnfjörð Bjarmason, Jan 16, 2021
  71. 03/11 cache-tree tests: refactor overly complex functionÆvar Arnfjörð Bjarmason, Jan 16, 2021
  72. Junio C HamanoJan 16, 2021
  73. 01/11 cache-tree tests: remove unused $2 parameterÆvar Arnfjörð Bjarmason, Jan 16, 2021
  74. 06/11 git-svn tests: rewrite brittle tests to use "--[no-]merges".Ævar Arnfjörð Bjarmason, Jan 16, 2021
  75. Junio C HamanoJan 16, 2021
  76. Jeff KingJan 17, 2021
  77. 04/11 git svn mergeinfo tests: modernize redirection & quoting styleÆvar Arnfjörð Bjarmason, Jan 16, 2021
  78. Junio C HamanoJan 16, 2021
  79. 00/11 tests: add a bash "set -o pipefail" test modeÆvar Arnfjörð Bjarmason, Jan 16, 2021
  80. Junio C HamanoJan 16, 2021
  81. Jeff KingJan 17, 2021
  82. 2/6 test-lib: add ok=* support to test_might_failÆvar Arnfjörð Bjarmason, Jan 14, 2021
  83. 1/6 test-lib: add tests for test_might_failÆvar Arnfjörð Bjarmason, Jan 14, 2021
  84. Jeff KingJan 15, 2021
  85. test-lib: add tests for test_might_failÆvar Arnfjörð Bjarmason, Jan 16, 2021
  86. Jeff KingJan 17, 2021
  87. 4/6 tests: use "test_might_fail ok=sigpipe grep" when appropriateÆvar Arnfjörð Bjarmason, Jan 14, 2021
  88. Ævar Arnfjörð BjarmasonJan 15, 2021
  89. Jeff KingJan 15, 2021
  90. 3/6 test_lib: allow test_{must,might}_fail to accept non-git on "sigpipe"Ævar Arnfjörð Bjarmason, Jan 14, 2021
  91. Denton LiuJan 15, 2021
  92. Ævar Arnfjörð BjarmasonJan 15, 2021
  93. Jeff KingJan 15, 2021
  94. 5/6 tests: split up bash detection libraryÆvar Arnfjörð Bjarmason, Jan 14, 2021
  95. Ævar Arnfjörð BjarmasonJan 15, 2021
  96. 6/6 tests: add a "set -o pipefail" for a patched bashÆvar Arnfjörð Bjarmason, Jan 14, 2021
  97. Jeff KingJan 15, 2021
  98. 00/21 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Nov 21, 2019
  99. 01/21 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 21, 2019
  100. 02/21 t0014: remove git command upstream of pipeDenton Liu, Nov 21, 2019
  101. 03/21 t0090: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  102. 04/21 t3301: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  103. 05/21 t3600: use test_line_count() where possibleDenton Liu, Nov 21, 2019
  104. 06/21 t3600: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  105. 07/21 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 21, 2019
  106. 08/21 t4015: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  107. 09/21 t4015: use test_write_lines()Denton Liu, Nov 21, 2019
  108. 10/21 t4138: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  109. 11/21 t5317: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  110. 12/21 t5317: use ! grep to check for no matching linesDenton Liu, Nov 21, 2019
  111. Eric SunshineNov 21, 2019
  112. 13/21 t5703: simplify one-time-sed generation logicDenton Liu, Nov 21, 2019
  113. Eric SunshineNov 21, 2019
  114. Denton LiuNov 21, 2019
  115. 14/21 t5703: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  116. 15/21 t7501: remove spaces after redirect operatorsDenton Liu, Nov 21, 2019
  117. 16/21 t7501: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  118. 17/21 t7700: drop redirections to /dev/nullDenton Liu, Nov 21, 2019
  119. 18/21 t7700: remove spaces after redirect operatorsDenton Liu, Nov 21, 2019
  120. 19/21 t7700: move keywords onto their own lineDenton Liu, Nov 21, 2019
  121. 20/21 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 21, 2019
  122. 21/21 t7700: stop losing return codes of git commandsDenton Liu, Nov 21, 2019
  123. 00/22 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Nov 22, 2019
  124. 01/22 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 22, 2019
  125. 02/22 apply-one-time-sed.sh: modernize styleDenton Liu, Nov 22, 2019
  126. Junio C HamanoNov 23, 2019
  127. 03/22 t0014: remove git command upstream of pipeDenton Liu, Nov 22, 2019
  128. 04/22 t0090: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  129. 05/22 t3301: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  130. 06/22 t3600: use test_line_count() where possibleDenton Liu, Nov 22, 2019
  131. 07/22 t3600: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  132. 08/22 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 22, 2019
  133. 09/22 t4015: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  134. 10/22 t4015: use test_write_lines()Denton Liu, Nov 22, 2019
  135. 11/22 t4138: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  136. 12/22 t5317: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  137. 13/22 t5317: use ! grep to check for no matching linesDenton Liu, Nov 22, 2019
  138. Eric SunshineNov 23, 2019
  139. Denton LiuNov 25, 2019
  140. 14/22 t5703: simplify one-time-sed generation logicDenton Liu, Nov 22, 2019
  141. 15/22 t5703: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  142. 16/22 t7501: remove spaces after redirect operatorsDenton Liu, Nov 22, 2019
  143. 17/22 t7501: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  144. 18/22 t7700: drop redirections to /dev/nullDenton Liu, Nov 22, 2019
  145. 19/22 t7700: remove spaces after redirect operatorsDenton Liu, Nov 22, 2019
  146. 20/22 t7700: move keywords onto their own lineDenton Liu, Nov 22, 2019
  147. 21/22 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 22, 2019
  148. 22/22 t7700: stop losing return codes of git commandsDenton Liu, Nov 22, 2019
  149. Junio C HamanoNov 23, 2019
  150. Denton LiuNov 25, 2019
  151. Eric SunshineNov 26, 2019
  152. Junio C HamanoNov 26, 2019
  153. Denton LiuNov 26, 2019
  154. 00/27 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Nov 26, 2019
  155. 01/27 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 26, 2019
  156. 02/27 apply-one-time-sed.sh: modernize styleDenton Liu, Nov 26, 2019
  157. 03/27 t0014: remove git command upstream of pipeDenton Liu, Nov 26, 2019
  158. 04/27 t0090: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  159. 05/27 t3301: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  160. 06/27 t3600: use test_line_count() where possibleDenton Liu, Nov 26, 2019
  161. 07/27 t3600: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  162. 08/27 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 26, 2019
  163. 09/27 t4015: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  164. 10/27 t4015: use test_write_lines()Denton Liu, Nov 26, 2019
  165. 11/27 t4138: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  166. 12/27 t5317: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  167. 13/27 t5317: use ! grep to check for no matching linesDenton Liu, Nov 26, 2019
  168. 14/27 t5703: simplify one-time-sed generation logicDenton Liu, Nov 26, 2019
  169. 15/27 t5703: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  170. 16/27 t7501: remove spaces after redirect operatorsDenton Liu, Nov 26, 2019
  171. 17/27 t7501: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  172. 18/27 t7700: drop redirections to /dev/nullDenton Liu, Nov 26, 2019
  173. 19/27 t7700: remove spaces after redirect operatorsDenton Liu, Nov 26, 2019
  174. 20/27 t7700: move keywords onto their own lineDenton Liu, Nov 26, 2019
  175. 21/27 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 26, 2019
  176. 22/27 t7700: consolidate code into test_no_missing_in_packs()Denton Liu, Nov 26, 2019
  177. Eric SunshineNov 26, 2019
  178. 23/27 squash! t7700: consolidate code into test_no_missing_in_packs()Denton Liu, Nov 26, 2019
  179. 24/27 t7700: consolidate code into test_has_duplicate_object()Denton Liu, Nov 26, 2019
  180. 25/27 t7700: replace egrep with grepDenton Liu, Nov 26, 2019
  181. 26/27 t7700: make references to SHA-1 genericDenton Liu, Nov 26, 2019
  182. Eric SunshineNov 26, 2019
  183. 27/27 t7700: stop losing return codes of git commandsDenton Liu, Nov 26, 2019
  184. 00/26 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Nov 27, 2019
  185. 01/26 lib-bash.sh: move `then` onto its own lineDenton Liu, Nov 27, 2019
  186. 02/26 apply-one-time-sed.sh: modernize styleDenton Liu, Nov 27, 2019
  187. 03/26 t0014: remove git command upstream of pipeDenton Liu, Nov 27, 2019
  188. 04/26 t0090: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  189. 05/26 t3301: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  190. 06/26 t3600: use test_line_count() where possibleDenton Liu, Nov 27, 2019
  191. 07/26 t3600: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  192. 08/26 t3600: comment on inducing SIGPIPE in `git rm`Denton Liu, Nov 27, 2019
  193. 09/26 t4015: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  194. 11/26 t4138: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  195. 10/26 t4015: use test_write_lines()Denton Liu, Nov 27, 2019
  196. 12/26 t5317: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  197. 13/26 t5317: use ! grep to check for no matching linesDenton Liu, Nov 27, 2019
  198. 14/26 t5703: simplify one-time-sed generation logicDenton Liu, Nov 27, 2019
  199. 15/26 t5703: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  200. 16/26 t7501: remove spaces after redirect operatorsDenton Liu, Nov 27, 2019
  201. 17/26 t7501: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  202. 18/26 t7700: drop redirections to /dev/nullDenton Liu, Nov 27, 2019
  203. 19/26 t7700: remove spaces after redirect operatorsDenton Liu, Nov 27, 2019
  204. 20/26 t7700: move keywords onto their own lineDenton Liu, Nov 27, 2019
  205. 21/26 t7700: s/test -f/test_path_is_file/Denton Liu, Nov 27, 2019
  206. 22/26 t7700: consolidate code into test_no_missing_in_packs()Denton Liu, Nov 27, 2019
  207. Junio C HamanoNov 29, 2019
  208. Denton LiuDec 2, 2019
  209. Junio C HamanoDec 2, 2019
  210. Denton LiuDec 2, 2019
  211. Junio C HamanoDec 3, 2019
  212. Denton LiuDec 4, 2019
  213. Junio C HamanoDec 4, 2019
  214. 0/5 t: test cleanup stemming from experimentally enabling pipefailDenton Liu, Dec 4, 2019
  215. 1/5 t7700: consolidate code into test_no_missing_in_packs()Denton Liu, Dec 4, 2019
  216. 2/5 t7700: consolidate code into test_has_duplicate_object()Denton Liu, Dec 4, 2019
  217. 3/5 t7700: replace egrep with grepDenton Liu, Dec 4, 2019
  218. 4/5 t7700: make references to SHA-1 genericDenton Liu, Dec 4, 2019
  219. 5/5 t7700: stop losing return codes of git commandsDenton Liu, Dec 4, 2019
  220. Junio C HamanoDec 4, 2019
  221. 23/26 t7700: consolidate code into test_has_duplicate_object()Denton Liu, Nov 27, 2019
  222. 24/26 t7700: replace egrep with grepDenton Liu, Nov 27, 2019
  223. 25/26 t7700: make references to SHA-1 genericDenton Liu, Nov 27, 2019
  224. 26/26 t7700: stop losing return codes of git commandsDenton Liu, Nov 27, 2019
  225. Danh DoanNov 30, 2019
  226. Eric SunshineNov 30, 2019
  227. Junio C HamanoNov 30, 2019
  228. t: remove inappropriate uses of test_must_fail(), was Re: [PATCH v5 26/26] t7700: stop losing return codes of git commandsDenton Liu, Dec 4, 2019

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.