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

[PATCH v2 1/2] t4255: test am submodule with diff.submodule

From
Doug Kelly <dougk.ff7@gmail.com>
Date
Dec 28, 2014, 01:04 UTC
Message-ID
<1419728664-18627-1-git-send-email-dougk.ff7@gmail.com>
In-Reply-To
<1419635506-5045-1-git-send-email-dougk.ff7@gmail.com>

git am will break when using diff.submodule=log; add some test cases to illustrate this breakage as simply as possible. There are currently two ways this can fail:

* With errors ("unrecognized input"), if only change
* Silently (no submodule change), if other files change
Test for both conditions and ensure without diff.submodule this works.
Signed-off-by: Doug Kelly <dougk.ff7@gmail.com>
---
 t/t4255-am-submodule.sh | 84 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)
diff --git a/t/t4255-am-submodule.sh b/t/t4255-am-submodule.sh
index 8bde7db..a2dc083 100755
--- a/t/t4255-am-submodule.sh
+++ b/t/t4255-am-submodule.sh
@@ -18,4 +18,88 @@ am_3way () {
 KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
 test_submodule_switch "am_3way"
 
+test_expect_success 'setup diff.submodule' '
+	echo one >one &&
+	git add one &&
+	test_tick &&
+	git commit -m initial &&
+	INITIAL=$(git rev-parse HEAD) &&
+
+	git init submodule &&
+	(
+		cd submodule &&
+		echo two >two &&
+		git add two &&
+		test_tick &&
+		git commit -m "initial submodule" &&
+		git rev-parse HEAD >../initial-submodule
+	) &&
+	git submodule add ./submodule &&
+	test_tick &&
+	git commit -m first &&
+
+	(
+		cd submodule &&
+		echo three >three &&
+		git add three &&
+		test_tick &&
+		git commit -m "first submodule" &&
+		git rev-parse HEAD >../first-submodule
+	) &&
+	git add submodule &&
+	test_tick &&
+	git commit -m second &&
+	SECOND=$(git rev-parse HEAD) &&
+
+	(
+		cd submodule &&
+		git mv two four &&
+		test_tick &&
+		git commit -m "second submodule" &&
+		git rev-parse HEAD >../second-submodule
+	) &&
+	git add submodule &&
+	echo four >four &&
+	git add four &&
+	test_tick &&
+	git commit -m third &&
+	THIRD=$(git rev-parse HEAD) &&
+	git submodule update --init
+'
+
+run_test() {
+	START_COMMIT=$1 &&
+	EXPECT=$2 &&
+	(git am --abort || true) &&
+	git reset --hard $START_COMMIT &&
+	rm -f *.patch &&
+	git format-patch -1 &&
+	git reset --hard $START_COMMIT^ &&
+	git submodule update &&
+	git am *.patch &&
+	git submodule update &&
+	(cd submodule && git rev-parse HEAD >../actual) &&
+	test_cmp $EXPECT actual
+}
+
+test_expect_success 'diff.submodule unset' '
+	(git config --unset diff.submodule || true) &&
+	run_test $SECOND first-submodule
+'
+
+test_expect_success 'diff.submodule unset with extra file' '
+	(git config --unset diff.submodule || true) &&
+	run_test $THIRD second-submodule
+'
+
+test_expect_failure 'diff.submodule=log' '
+	git config diff.submodule log &&
+	run_test $SECOND first-submodule
+'
+
+test_expect_failure 'diff.submodule=log with extra file' '
+	git config diff.submodule log &&
+	run_test $THIRD second-submodule
+'
+
 test_done
-- 
2.0.5
Previous: Doug KellyNext: Doug Kelly
Message 9 of 18 in “Fix issue with format-patch and diff.submodule”
  1. 0/2 Fix issue with format-patch and diff.submoduleDoug Kelly, Dec 26, 2014
  2. 1/2 t4255: test am submodule with diff.submoduleDoug Kelly, Dec 26, 2014
  3. Eric SunshineDec 28, 2014
  4. Doug KellyDec 28, 2014
  5. Junio C HamanoDec 29, 2014
  6. Doug KellyJan 7, 2015
  7. Junio C HamanoJan 7, 2015
  8. 2/2 format-patch: ignore diff.submodule settingDoug Kelly, Dec 26, 2014
  9. 1/2 t4255: test am submodule with diff.submoduleDoug Kelly, Dec 28, 2014
  10. 2/2 format-patch: ignore diff.submodule settingDoug Kelly, Dec 28, 2014
  11. Eric SunshineDec 28, 2014
  12. 1/2 t4255: test am submodule with diff.submoduleDoug Kelly, Jan 7, 2015
  13. 2/2 format-patch: ignore diff.submodule settingDoug Kelly, Jan 7, 2015
  14. Eric SunshineJan 7, 2015
  15. 1/2 t4255: test am submodule with diff.submoduleDoug Kelly, Jan 7, 2015
  16. 2/2 format-patch: ignore diff.submodule settingDoug Kelly, Jan 7, 2015
  17. 1/2 t4255: test am submodule with diff.submoduleDoug Kelly, Jan 7, 2015
  18. 2/2 format-patch: ignore diff.submodule settingDoug Kelly, Jan 7, 2015

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.