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

[PATCH v2 08/28] submodule--helper: move "resolve-relative-url-test" to a test-tool

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Aug 2, 2022, 15:45 UTC
Message-ID
<patch-v2-08.28-de49f31dab0-20220802T154036Z-avarab@gmail.com>
In-Reply-To
<cover-v2-00.28-00000000000-20220802T154036Z-avarab@gmail.com>

As its name suggests the "resolve-relative-url-test" has never been used outside of the test suite, see 63e95beb085 (submodule: port resolve_relative_url from shell to C, 2016-04-15) for its original addition.

Perhaps it would make sense to drop this code entirely, as we feel that we've got enough indirect test coverage, but let's leave that question to a possible follow-up change. For now let's keep the test coverage this gives us.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 builtin/submodule--helper.c | 23 --------------------
 t/helper/test-submodule.c   | 42 +++++++++++++++++++++++++++++++++++++
 t/t0060-path-utils.sh       |  2 +-
 3 files changed, 43 insertions(+), 24 deletions(-)
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 06307886080..246457ec2e9 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -96,28 +96,6 @@ static char *resolve_relative_url(const char *rel_url, const char *up_path, int
 	return resolved_url;
 }
 
-static int resolve_relative_url_test(int argc, const char **argv, const char *prefix)
-{
-	char *remoteurl, *res;
-	const char *up_path, *url;
-
-	if (argc != 4)
-		die("resolve-relative-url-test only accepts three arguments: <up_path> <remoteurl> <url>");
-
-	up_path = argv[1];
-	remoteurl = xstrdup(argv[2]);
-	url = argv[3];
-
-	if (!strcmp(up_path, "(null)"))
-		up_path = NULL;
-
-	res = relative_url(remoteurl, url, up_path);
-	puts(res);
-	free(res);
-	free(remoteurl);
-	return 0;
-}
-
 /* the result should be freed by the caller. */
 static char *get_submodule_displaypath(const char *path, const char *prefix)
 {
@@ -3273,7 +3251,6 @@ static struct cmd_struct commands[] = {
 	{"clone", module_clone, SUPPORT_SUPER_PREFIX},
 	{"add", module_add, 0},
 	{"update", module_update, SUPPORT_SUPER_PREFIX},
-	{"resolve-relative-url-test", resolve_relative_url_test, 0},
 	{"foreach", module_foreach, SUPPORT_SUPER_PREFIX},
 	{"init", module_init, 0},
 	{"status", module_status, SUPPORT_SUPER_PREFIX},
diff --git a/t/helper/test-submodule.c b/t/helper/test-submodule.c
index 9f0eb440192..e0e0c53d386 100644
--- a/t/helper/test-submodule.c
+++ b/t/helper/test-submodule.c
@@ -2,6 +2,7 @@
 #include "test-tool-utils.h"
 #include "cache.h"
 #include "parse-options.h"
+#include "remote.h"
 #include "submodule-config.h"
 #include "submodule.h"
 
@@ -19,9 +20,17 @@ static const char *submodule_is_active_usage[] = {
 	NULL
 };
 
+#define TEST_TOOL_RESOLVE_RELATIVE_URL_USAGE \
+	"test-tool submodule resolve-relative-url <up_path> <remoteurl> <url>"
+static const char *submodule_resolve_relative_url_usage[] = {
+	TEST_TOOL_RESOLVE_RELATIVE_URL_USAGE,
+	NULL,
+};
+
 static const char *submodule_usage[] = {
 	TEST_TOOL_CHECK_NAME_USAGE,
 	TEST_TOOL_IS_ACTIVE_USAGE,
+	TEST_TOOL_RESOLVE_RELATIVE_URL_USAGE,
 	NULL
 };
 
@@ -76,9 +85,42 @@ static int cmd__submodule_is_active(int argc, const char **argv)
 	return !is_submodule_active(the_repository, argv[0]);
 }
 
+static int resolve_relative_url(int argc, const char **argv)
+{
+	char *remoteurl, *res;
+	const char *up_path, *url;
+
+	up_path = argv[0];
+	remoteurl = xstrdup(argv[1]);
+	url = argv[2];
+
+	if (!strcmp(up_path, "(null)"))
+		up_path = NULL;
+
+	res = relative_url(remoteurl, url, up_path);
+	puts(res);
+	free(res);
+	free(remoteurl);
+	return 0;
+}
+
+static int cmd__submodule_resolve_relative_url(int argc, const char **argv)
+{
+	struct option options[] = {
+		OPT_END()
+	};
+	argc = parse_options(argc, argv, "test-tools", options,
+			     submodule_resolve_relative_url_usage, 0);
+	if (argc != 3)
+		usage_with_options(submodule_resolve_relative_url_usage, options);
+
+	return resolve_relative_url(argc, argv);
+}
+
 static struct test_cmd cmds[] = {
 	{ "check-name", cmd__submodule_check_name },
 	{ "is-active", cmd__submodule_is_active },
+	{ "resolve-relative-url", cmd__submodule_resolve_relative_url},
 };
 
 int cmd__submodule(int argc, const char **argv)
diff --git a/t/t0060-path-utils.sh b/t/t0060-path-utils.sh
index 1f2007e62b7..68e29c904a6 100755
--- a/t/t0060-path-utils.sh
+++ b/t/t0060-path-utils.sh
@@ -22,7 +22,7 @@ relative_path() {
 
 test_submodule_relative_url() {
 	test_expect_success "test_submodule_relative_url: $1 $2 $3 => $4" "
-		actual=\$(git submodule--helper resolve-relative-url-test '$1' '$2' '$3') &&
+		actual=\$(test-tool submodule resolve-relative-url '$1' '$2' '$3') &&
 		test \"\$actual\" = '$4'
 	"
 }
-- 
2.37.1.1233.ge8b09efaedc
Previous: Ævar Arnfjörð BjarmasonNext: Glen Choo
Message 41 of 142 in “submodule--helper: add tests, rm dead code, refactor & leak prep”
  1. 00/20 submodule--helper: add tests, rm dead code, refactor & leak prepÆvar Arnfjörð Bjarmason, Jul 28, 2022
  2. 01/20 submodule tests: test usage behaviorÆvar Arnfjörð Bjarmason, Jul 28, 2022
  3. Glen ChooJul 29, 2022
  4. 02/20 submodule tests: test for "add <repository> <abs-path>"Ævar Arnfjörð Bjarmason, Jul 28, 2022
  5. 03/20 submodule--helper: remove unused "name" helperÆvar Arnfjörð Bjarmason, Jul 28, 2022
  6. 04/20 submodule--helper: remove unused "list" helperÆvar Arnfjörð Bjarmason, Jul 28, 2022
  7. Glen ChooJul 29, 2022
  8. 05/20 test-tool submodule-config: remove unused "--url" handlingÆvar Arnfjörð Bjarmason, Jul 28, 2022
  9. 06/20 submodule--helper: move "is-active" to a test-toolÆvar Arnfjörð Bjarmason, Jul 28, 2022
  10. Glen ChooJul 29, 2022
  11. 08/20 submodule--helper: move "resolve-relative-url-test" to a test-toolÆvar Arnfjörð Bjarmason, Jul 28, 2022
  12. Glen ChooJul 29, 2022
  13. 07/20 submodule--helper: move "check-name" to a test-toolÆvar Arnfjörð Bjarmason, Jul 28, 2022
  14. Glen ChooJul 29, 2022
  15. 09/20 submodule--helper style: don't separate declared variables with \n\nÆvar Arnfjörð Bjarmason, Jul 28, 2022
  16. 10/20 submodule--helper style: add \n\n after variable declarationsÆvar Arnfjörð Bjarmason, Jul 28, 2022
  17. 11/20 submodule--helper: replace memset() with { 0 }-initializationÆvar Arnfjörð Bjarmason, Jul 28, 2022
  18. 12/20 submodule--helper: convert a strbuf_detach() to xstrfmt()Ævar Arnfjörð Bjarmason, Jul 28, 2022
  19. 13/20 submodule--helper: stop conflating "sb" in clone_submodule()Ævar Arnfjörð Bjarmason, Jul 28, 2022
  20. Glen ChooJul 29, 2022
  21. 14/20 submodule--helper: pass a "const struct module_clone_data" to clone_submodule()Ævar Arnfjörð Bjarmason, Jul 28, 2022
  22. Glen ChooJul 29, 2022
  23. Ævar Arnfjörð BjarmasonAug 1, 2022
  24. 15/20 submodule--helper: add "const" to copy of "update_data"Ævar Arnfjörð Bjarmason, Jul 28, 2022
  25. 16/20 submodule--helper: refactor "errmsg_str" to be a "struct strbuf"Ævar Arnfjörð Bjarmason, Jul 28, 2022
  26. 17/20 submodule--helper: rename "int res" to "int ret"Ævar Arnfjörð Bjarmason, Jul 28, 2022
  27. 18/20 submodule--helper: add skeleton "goto cleanup" to update_submodule()Ævar Arnfjörð Bjarmason, Jul 28, 2022
  28. 19/20 submodule--helper: don't exit() on failure, returnÆvar Arnfjörð Bjarmason, Jul 28, 2022
  29. Glen ChooJul 29, 2022
  30. 20/20 submodule--helper: fix bad config API usageÆvar Arnfjörð Bjarmason, Jul 28, 2022
  31. Glen ChooJul 29, 2022
  32. 00/28 submodule--helper: add tests, rm dead code, refactor & leak prepÆvar Arnfjörð Bjarmason, Aug 2, 2022
  33. 02/28 submodule tests: test for "add <repository> <abs-path>"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  34. 01/28 submodule tests: test usage behaviorÆvar Arnfjörð Bjarmason, Aug 2, 2022
  35. Glen ChooAug 2, 2022
  36. 03/28 submodule--helper: remove unused "name" helperÆvar Arnfjörð Bjarmason, Aug 2, 2022
  37. 05/28 test-tool submodule-config: remove unused "--url" handlingÆvar Arnfjörð Bjarmason, Aug 2, 2022
  38. 04/28 submodule--helper: remove unused "list" helperÆvar Arnfjörð Bjarmason, Aug 2, 2022
  39. 06/28 submodule--helper: move "is-active" to a test-toolÆvar Arnfjörð Bjarmason, Aug 2, 2022
  40. 07/28 submodule--helper: move "check-name" to a test-toolÆvar Arnfjörð Bjarmason, Aug 2, 2022
  41. 08/28 submodule--helper: move "resolve-relative-url-test" to a test-toolÆvar Arnfjörð Bjarmason, Aug 2, 2022
  42. Glen ChooAug 2, 2022
  43. 11/28 submodule--helper: replace memset() with { 0 }-initializationÆvar Arnfjörð Bjarmason, Aug 2, 2022
  44. 10/28 submodule--helper style: add \n\n after variable declarationsÆvar Arnfjörð Bjarmason, Aug 2, 2022
  45. 09/28 submodule--helper style: don't separate declared variables with \n\nÆvar Arnfjörð Bjarmason, Aug 2, 2022
  46. 13/28 submodule--helper: move "sb" in clone_submodule() to its own scopeÆvar Arnfjörð Bjarmason, Aug 2, 2022
  47. 12/28 submodule--helper: use xstrfmt() in clone_submodule()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  48. 15/28 submodule--helper: add "const" to copy of "update_data"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  49. 14/28 submodule--helper: pass a "const struct module_clone_data" to clone_submodule()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  50. 17/28 submodule--helper: don't redundantly check "else if (res)"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  51. 16/28 submodule--helper: refactor "errmsg_str" to be a "struct strbuf"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  52. 18/28 submodule--helper: rename "int res" to "int ret"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  53. 19/28 submodule--helper: return "ret", not "1" from update_submodule()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  54. 20/28 submodule--helper: add missing braces to "else" armÆvar Arnfjörð Bjarmason, Aug 2, 2022
  55. 21/28 submodule--helper: don't call submodule_strategy_to_string() in BUG()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  56. Glen ChooAug 2, 2022
  57. 22/28 submodule--helper: move submodule_strategy_to_string() to only userÆvar Arnfjörð Bjarmason, Aug 2, 2022
  58. Glen ChooAug 2, 2022
  59. Ævar Arnfjörð BjarmasonAug 3, 2022
  60. 24/28 submodule--helper: don't exit() on failure, returnÆvar Arnfjörð Bjarmason, Aug 2, 2022
  61. 25/28 submodule--helper: libify determine_submodule_update_strategy()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  62. 23/28 submodule--helper: use "code" in run_update_command()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  63. 27/28 submodule--helper: libify "must_die_on_failure" code paths (for die)Ævar Arnfjörð Bjarmason, Aug 2, 2022
  64. Glen ChooAug 3, 2022
  65. 26/28 submodule--helper: libify "must_die_on_failure" code pathsÆvar Arnfjörð Bjarmason, Aug 2, 2022
  66. Glen ChooAug 3, 2022
  67. 28/28 submodule--helper: fix bad config API usageÆvar Arnfjörð Bjarmason, Aug 2, 2022
  68. 00/32 submodule--helper: add tests, rm dead code, refactor & leak prepÆvar Arnfjörð Bjarmason, Aug 21, 2022
  69. 01/32 submodule tests: test usage behaviorÆvar Arnfjörð Bjarmason, Aug 21, 2022
  70. Glen ChooAug 23, 2022
  71. 02/32 submodule tests: test for "add <repository> <abs-path>"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  72. 03/32 submodule--helper: remove unused "name" helperÆvar Arnfjörð Bjarmason, Aug 21, 2022
  73. 04/32 submodule--helper: remove unused "list" helperÆvar Arnfjörð Bjarmason, Aug 21, 2022
  74. 05/32 test-tool submodule-config: remove unused "--url" handlingÆvar Arnfjörð Bjarmason, Aug 21, 2022
  75. 06/32 submodule--helper: move "is-active" to a test-toolÆvar Arnfjörð Bjarmason, Aug 21, 2022
  76. 07/32 submodule--helper: move "check-name" to a test-toolÆvar Arnfjörð Bjarmason, Aug 21, 2022
  77. 08/32 submodule--helper: move "resolve-relative-url-test" to a test-toolÆvar Arnfjörð Bjarmason, Aug 21, 2022
  78. 09/32 submodule--helper style: don't separate declared variables with \n\nÆvar Arnfjörð Bjarmason, Aug 21, 2022
  79. 10/32 submodule--helper style: add \n\n after variable declarationsÆvar Arnfjörð Bjarmason, Aug 21, 2022
  80. 11/32 submodule--helper: replace memset() with { 0 }-initializationÆvar Arnfjörð Bjarmason, Aug 21, 2022
  81. 13/32 submodule--helper: move "sb" in clone_submodule() to its own scopeÆvar Arnfjörð Bjarmason, Aug 21, 2022
  82. 12/32 submodule--helper: use xstrfmt() in clone_submodule()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  83. 14/32 submodule--helper: add "const" to passed "module_clone_data"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  84. 15/32 submodule--helper: add "const" to copy of "update_data"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  85. 16/32 submodule--helper: refactor "errmsg_str" to be a "struct strbuf"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  86. 17/32 submodule--helper: don't redundantly check "else if (res)"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  87. Eric SunshineAug 21, 2022
  88. 19/32 submodule--helper: return "ret", not "1" from update_submodule()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  89. 18/32 submodule--helper: rename "int res" to "int ret"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  90. 20/32 submodule--helper: add missing braces to "else" armÆvar Arnfjörð Bjarmason, Aug 21, 2022
  91. 21/32 submodule--helper: don't call submodule_strategy_to_string() in BUG()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  92. 22/32 submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  93. 23/32 submodule--helper: use "code" in run_update_command()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  94. 24/32 submodule--helper: don't exit() on failure, returnÆvar Arnfjörð Bjarmason, Aug 21, 2022
  95. 25/32 submodule--helper: libify determine_submodule_update_strategy()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  96. 27/32 submodule--helper update: don't override 'checkout' exit codeÆvar Arnfjörð Bjarmason, Aug 21, 2022
  97. 26/32 submodule--helper: libify "must_die_on_failure" code pathsÆvar Arnfjörð Bjarmason, Aug 21, 2022
  98. 28/32 submodule--helper: libify "must_die_on_failure" code paths (for die)Ævar Arnfjörð Bjarmason, Aug 21, 2022
  99. Glen ChooAug 23, 2022
  100. 31/32 submodule--helper: libify even more "die" paths for module_update()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  101. Glen ChooAug 24, 2022
  102. 29/32 submodule--helper: check repo{_submodule,}_init() return valuesÆvar Arnfjörð Bjarmason, Aug 21, 2022
  103. Glen ChooAug 23, 2022
  104. 32/32 submodule--helper: fix bad config API usageÆvar Arnfjörð Bjarmason, Aug 21, 2022
  105. 30/32 submodule--helper: libify more "die" paths for module_update()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  106. Glen ChooAug 24, 2022
  107. 00/33 submodule--helper: add tests, rm dead code, refactor & leak prepÆvar Arnfjörð Bjarmason, Aug 31, 2022
  108. 01/33 submodule tests: test usage behaviorÆvar Arnfjörð Bjarmason, Aug 31, 2022
  109. 02/33 submodule tests: test for "add <repository> <abs-path>"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  110. 03/33 submodule--helper: remove unused "name" helperÆvar Arnfjörð Bjarmason, Aug 31, 2022
  111. 04/33 submodule--helper: remove unused "list" helperÆvar Arnfjörð Bjarmason, Aug 31, 2022
  112. 05/33 test-tool submodule-config: remove unused "--url" handlingÆvar Arnfjörð Bjarmason, Aug 31, 2022
  113. 07/33 submodule--helper: move "check-name" to a test-toolÆvar Arnfjörð Bjarmason, Aug 31, 2022
  114. 08/33 submodule--helper: move "resolve-relative-url-test" to a test-toolÆvar Arnfjörð Bjarmason, Aug 31, 2022
  115. 09/33 submodule--helper style: don't separate declared variables with \n\nÆvar Arnfjörð Bjarmason, Aug 31, 2022
  116. 12/33 submodule--helper: use xstrfmt() in clone_submodule()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  117. 11/33 submodule--helper: replace memset() with { 0 }-initializationÆvar Arnfjörð Bjarmason, Aug 31, 2022
  118. 06/33 submodule--helper: move "is-active" to a test-toolÆvar Arnfjörð Bjarmason, Aug 31, 2022
  119. 10/33 submodule--helper style: add \n\n after variable declarationsÆvar Arnfjörð Bjarmason, Aug 31, 2022
  120. 16/33 submodule--helper: add "const" to passed "struct update_data"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  121. 14/33 submodule--helper: add "const" to passed "module_clone_data"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  122. 13/33 submodule--helper: move "sb" in clone_submodule() to its own scopeÆvar Arnfjörð Bjarmason, Aug 31, 2022
  123. 19/33 submodule--helper: rename "int res" to "int ret"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  124. 17/33 submodule--helper: refactor "errmsg_str" to be a "struct strbuf"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  125. 18/33 submodule--helper: don't redundantly check "else if (res)"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  126. 15/33 submodule--helper: add "const" to copy of "update_data"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  127. 21/33 submodule--helper: add missing braces to "else" armÆvar Arnfjörð Bjarmason, Aug 31, 2022
  128. 22/33 submodule--helper: don't call submodule_strategy_to_string() in BUG()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  129. 20/33 submodule--helper: return "ret", not "1" from update_submodule()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  130. 23/33 submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  131. 24/33 submodule--helper: use "code" in run_update_command()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  132. 26/33 submodule--helper: libify determine_submodule_update_strategy()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  133. 27/33 submodule--helper: libify "must_die_on_failure" code pathsÆvar Arnfjörð Bjarmason, Aug 31, 2022
  134. 25/33 submodule--helper: don't exit() on failure, returnÆvar Arnfjörð Bjarmason, Aug 31, 2022
  135. 28/33 submodule--helper update: don't override 'checkout' exit codeÆvar Arnfjörð Bjarmason, Aug 31, 2022
  136. 29/33 submodule--helper: libify "must_die_on_failure" code paths (for die)Ævar Arnfjörð Bjarmason, Aug 31, 2022
  137. 30/33 submodule--helper: check repo{_submodule,}_init() return valuesÆvar Arnfjörð Bjarmason, Aug 31, 2022
  138. 32/33 submodule--helper: libify even more "die" paths for module_update()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  139. 31/33 submodule--helper: libify more "die" paths for module_update()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  140. Glen ChooSep 1, 2022
  141. 33/33 submodule--helper: fix bad config API usageÆvar Arnfjörð Bjarmason, Aug 31, 2022
  142. Glen ChooSep 1, 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.