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

[PATCH v4 1/7] submodule--helper tests: add missing "display path" coverage

From
Glen Choo <chooglen@google.com>
Date
Jul 1, 2022, 02:11 UTC
Message-ID
<20220701021157.88858-2-chooglen@google.com>
In-Reply-To
<20220701021157.88858-1-chooglen@google.com>

There are two locations in prepare_to_clone_next_submodule() that manually calculate the submodule display path. As discussed in the next commit the "Skipping" output isn't exactly what we want, but let's test how we behave now, before changing the existing behavior.

Signed-off-by: Glen Choo <chooglen@google.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/t7406-submodule-update.sh | 62 +++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
index 06d804e213..9a076e025f 100755
--- a/t/t7406-submodule-update.sh
+++ b/t/t7406-submodule-update.sh
@@ -1116,4 +1116,66 @@ test_expect_success 'submodule update --filter sets partial clone settings' '
 	test_cmp_config -C super-filter/submodule blob:none remote.origin.partialclonefilter
 '
 
+# NEEDSWORK: Clean up the tests so that we can reuse the test setup.
+# Don't reuse the existing repos because the earlier tests have
+# intentionally disruptive configurations.
+test_expect_success 'setup clean recursive superproject' '
+	git init bottom &&
+	test_commit -C bottom "bottom" &&
+	git init middle &&
+	git -C middle submodule add ../bottom bottom &&
+	git -C middle commit -m "middle" &&
+	git init top &&
+	git -C top submodule add ../middle middle &&
+	git -C top commit -m "top" &&
+	git clone --recurse-submodules top top-clean
+'
+
+test_expect_success 'submodule update should skip unmerged submodules' '
+	test_when_finished "rm -fr top-cloned" &&
+	cp -r top-clean top-cloned &&
+
+	# Create an upstream commit in each repo, starting with bottom
+	test_commit -C bottom upstream_commit &&
+	# Create middle commit
+	git -C middle/bottom fetch &&
+	git -C middle/bottom checkout -f FETCH_HEAD &&
+	git -C middle add bottom &&
+	git -C middle commit -m "upstream_commit" &&
+	# Create top commit
+	git -C top/middle fetch &&
+	git -C top/middle checkout -f FETCH_HEAD &&
+	git -C top add middle &&
+	git -C top commit -m "upstream_commit" &&
+
+	# Create a downstream conflict
+	test_commit -C top-cloned/middle/bottom downstream_commit &&
+	git -C top-cloned/middle add bottom &&
+	git -C top-cloned/middle commit -m "downstream_commit" &&
+	git -C top-cloned/middle fetch --recurse-submodules origin &&
+	test_must_fail git -C top-cloned/middle merge origin/main &&
+
+	# Make the update of "middle" a no-op, otherwise we error out
+	# because of its unmerged state
+	test_config -C top-cloned submodule.middle.update !true &&
+	git -C top-cloned submodule update --recursive 2>actual.err &&
+	cat >expect.err <<-\EOF &&
+	Skipping unmerged submodule middle//bottom
+	EOF
+	test_cmp expect.err actual.err
+'
+
+test_expect_success 'submodule update --recursive skip submodules with strategy=none' '
+	test_when_finished "rm -fr top-cloned" &&
+	cp -r top-clean top-cloned &&
+
+	test_commit -C top-cloned/middle/bottom downstream_commit &&
+	git -C top-cloned/middle config submodule.bottom.update none &&
+	git -C top-cloned submodule update --recursive 2>actual.err &&
+	cat >expect.err <<-\EOF &&
+	Skipping submodule '\''../middle/'\''
+	EOF
+	test_cmp expect.err actual.err
+'
+
 test_done
-- 
2.37.0.rc0.161.g10f37bed90-goog
Previous: Glen ChooNext: Glen Choo
Message 40 of 48 in “submodule: remove "--recursive-prefix"”
  1. 0/5 submodule: remove "--recursive-prefix"Glen Choo via GitGitGadget, Jun 27, 2022
  2. 1/5 submodule--helper update: use display path helperGlen Choo via GitGitGadget, Jun 27, 2022
  3. Ævar Arnfjörð BjarmasonJun 28, 2022
  4. Glen ChooJun 28, 2022
  5. 2/5 submodule--helper: don't recreate recursive prefixGlen Choo via GitGitGadget, Jun 27, 2022
  6. 3/5 submodule--helper: use correct display path helperGlen Choo via GitGitGadget, Jun 27, 2022
  7. 4/5 submodule--helper update: use --super-prefixGlen Choo via GitGitGadget, Jun 27, 2022
  8. Ævar Arnfjörð BjarmasonJun 28, 2022
  9. Glen ChooJun 28, 2022
  10. 5/5 submodule--helper: remove display path helperGlen Choo via GitGitGadget, Jun 27, 2022
  11. Glen ChooJun 28, 2022
  12. 00/18 submodule: remove "--recursive-prefix"Glen Choo via GitGitGadget, Jun 30, 2022
  13. 01/18 git-submodule.sh: remove unused sanitize_submodule_env()Ævar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  14. 02/18 git-submodule.sh: remove unused $prefix variableÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  15. 03/18 git-submodule.sh: make the "$cached" variable a booleanÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  16. 04/18 git-submodule.sh: remove unused top-level "--branch" argumentÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  17. 05/18 submodule--helper: have --require-init imply --initÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  18. 06/18 submodule update: remove "-v" optionÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  19. 07/18 submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"Ævar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  20. 08/18 submodule--helper: report "submodule" as our name in some "-h" outputÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  21. 09/18 submodule--helper: understand --checkout, --merge and --rebase synonymsÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  22. 10/18 submodule--helper: eliminate internal "--update" optionGlen Choo via GitGitGadget, Jun 30, 2022
  23. 11/18 git-submodule.sh: use "$quiet", not "$GIT_QUIET"Ævar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  24. 12/18 git-sh-setup.sh: remove "say" function, change last usersÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  25. 13/18 submodule--helper update: use display path helperGlen Choo via GitGitGadget, Jun 30, 2022
  26. 14/18 submodule--helper: don't recreate recursive prefixGlen Choo via GitGitGadget, Jun 30, 2022
  27. 15/18 submodule--helper: use correct display path helperGlen Choo via GitGitGadget, Jun 30, 2022
  28. 16/18 submodule--helper: remove unused SUPPORT_SUPER_PREFIX flagsÆvar Arnfjörð Bjarmason via GitGitGadget, Jun 30, 2022
  29. 18/18 submodule--helper: remove display path helperGlen Choo via GitGitGadget, Jun 30, 2022
  30. 17/18 submodule--helper update: use --super-prefixGlen Choo via GitGitGadget, Jun 30, 2022
  31. Glen ChooJun 30, 2022
  32. 0/6 submodule: remove "--recursive-prefix"Glen Choo, Jun 30, 2022
  33. 1/6 submodule--helper update: use display path helperGlen Choo, Jun 30, 2022
  34. 2/6 submodule--helper: don't recreate recursive prefixGlen Choo, Jun 30, 2022
  35. 3/6 submodule--helper: use correct display path helperGlen Choo, Jun 30, 2022
  36. 4/6 submodule--helper: remove unused SUPPORT_SUPER_PREFIX flagsGlen Choo, Jun 30, 2022
  37. 5/6 submodule--helper update: use --super-prefixGlen Choo, Jun 30, 2022
  38. 6/6 submodule--helper: remove display path helperGlen Choo, Jun 30, 2022
  39. 0/7 submodule: remove "--recursive-prefix"Glen Choo, Jul 1, 2022
  40. 1/7 submodule--helper tests: add missing "display path" coverageGlen Choo, Jul 1, 2022
  41. 2/7 submodule--helper update: use display path helperGlen Choo, Jul 1, 2022
  42. 3/7 submodule--helper: don't recreate recursive prefixGlen Choo, Jul 1, 2022
  43. 4/7 submodule--helper: use correct display path helperGlen Choo, Jul 1, 2022
  44. 6/7 submodule--helper update: use --super-prefixGlen Choo, Jul 1, 2022
  45. 5/7 submodule--helper: remove unused SUPPORT_SUPER_PREFIX flagsGlen Choo, Jul 1, 2022
  46. 7/7 submodule--helper: remove display path helperGlen Choo, Jul 1, 2022
  47. Ævar Arnfjörð BjarmasonJun 30, 2022
  48. Glen ChooJun 30, 2022

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.