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

[PATCH v2 00/12] Improve git-am test coverage

From
Paul Tan <pyokagan@gmail.com>
Date
Jul 7, 2015, 14:08 UTC
Message-ID
<1436278114-28057-1-git-send-email-pyokagan@gmail.com>

This is a re-roll of [v1]. Thanks Junio, Johannes, Paolo, Stefan for the reviews last round. Interdiff below.

Previous versions:
[v1] http://thread.gmane.org/gmane.comp.version-control.git/273254

Increase test coverage of git-am.sh to help prevent regressions that could arise from the rewrite of git-am.sh to C. This patch series, along with pt/am-foreign, improved test coverage as measured by kcov from 56.5%[1] to 67.3%[2].

No tests for git-am's interactive mode, though, as test_terminal does not seem to attach a pseudo-tty to stdin(?), thus making git-am's "test -t 0" check fail.

This is part of my GSoC project to rewrite git-am.sh to a C builtin[3].

[1] http://pyokagan.github.io/git/20150430132408-a75942b//kcov-merged/git-am.eb79278e.html [2] http://pyokagan.github.io/git/20150702173751-2fdae08//kcov-merged/git-am.eb79278e.html [3] https://gist.github.com/pyokagan/1b7b0d1f4dab6ba3cef1

Paul Tan (12):
  t4150: am.messageid really adds the message id
  t4150: am fails if index is dirty
  t4151: am --abort will keep dirty index intact
  t4150: am refuses patches when paused
  t4150: am --resolved fails if index has no changes
  t4150: am --resolved fails if index has unmerged entries
  t4150: am with applypatch-msg hook
  t4150: am with pre-applypatch hook
  t4150: am with post-applypatch hook
  t4150: tests for am --[no-]scissors
  t3418: non-interactive rebase --continue with rerere enabled
  t3901: test git-am encoding conversion
 t/t3418-rebase-continue.sh |  19 ++++
 t/t3901-i18n-patch.sh      |  62 +++++++++++++
 t/t4150-am.sh              | 217 +++++++++++++++++++++++++++++++++++++++++++++
 t/t4151-am-abort.sh        |  15 ++++
 4 files changed, 313 insertions(+)
diff --git a/t/t4150-am.sh b/t/t4150-am.sh
index 94e7c18..67fbf0e 100755
--- a/t/t4150-am.sh
+++ b/t/t4150-am.sh
@@ -182,9 +182,10 @@ test_expect_success 'am applies patch correctly' '
 '
 
 test_expect_success 'am fails if index is dirty' '
-	test_when_finished "rm -fr dirtyfile" &&
+	test_when_finished "rm -f dirtyfile" &&
 	rm -fr .git/rebase-apply &&
-	git checkout -f first &&
+	git reset --hard &&
+	git checkout first &&
 	echo dirtyfile >dirtyfile &&
 	git add dirtyfile &&
 	test_must_fail git am patch1 &&
@@ -231,12 +232,10 @@ test_expect_success 'am with applypatch-msg hook' '
 	git reset --hard &&
 	git checkout first &&
 	mkdir -p .git/hooks &&
-	cat >.git/hooks/applypatch-msg <<-\EOF &&
-	#!/bin/sh
+	write_script .git/hooks/applypatch-msg <<-\EOF &&
 	cat "$1" >actual-msg &&
 	echo hook-message >"$1"
 	EOF
-	chmod +x .git/hooks/applypatch-msg &&
 	git am patch1 &&
 	test_path_is_missing .git/rebase-apply &&
 	git diff --exit-code second &&
@@ -253,11 +252,9 @@ test_expect_success 'am with failing applypatch-msg hook' '
 	git reset --hard &&
 	git checkout first &&
 	mkdir -p .git/hooks &&
-	cat >.git/hooks/applypatch-msg <<-\EOF &&
-	#!/bin/sh
+	write_script .git/hooks/applypatch-msg <<-\EOF &&
 	exit 1
 	EOF
-	chmod +x .git/hooks/applypatch-msg &&
 	test_must_fail git am patch1 &&
 	test_path_is_dir .git/rebase-apply &&
 	git diff --exit-code first &&
@@ -270,17 +267,14 @@ test_expect_success 'am with pre-applypatch hook' '
 	git reset --hard &&
 	git checkout first &&
 	mkdir -p .git/hooks &&
-	cat >.git/hooks/pre-applypatch <<-\EOF &&
-	#!/bin/sh
+	write_script .git/hooks/pre-applypatch <<-\EOF &&
 	git diff first >diff.actual
 	exit 0
 	EOF
-	chmod +x .git/hooks/pre-applypatch &&
 	git am patch1 &&
 	test_path_is_missing .git/rebase-apply &&
 	git diff --exit-code second &&
 	test_cmp_rev second HEAD &&
-	test_cmp_rev second^ HEAD^ &&
 	git diff first..second >diff.expected &&
 	test_cmp diff.expected diff.actual
 '
@@ -291,11 +285,9 @@ test_expect_success 'am with failing pre-applypatch hook' '
 	git reset --hard &&
 	git checkout first &&
 	mkdir -p .git/hooks &&
-	cat >.git/hooks/pre-applypatch <<-\EOF &&
-	#!/bin/sh
+	write_script .git/hooks/pre-applypatch <<-\EOF &&
 	exit 1
 	EOF
-	chmod +x .git/hooks/pre-applypatch &&
 	test_must_fail git am patch1 &&
 	test_path_is_dir .git/rebase-apply &&
 	git diff --exit-code second &&
@@ -308,13 +300,11 @@ test_expect_success 'am with post-applypatch hook' '
 	git reset --hard &&
 	git checkout first &&
 	mkdir -p .git/hooks &&
-	cat >.git/hooks/post-applypatch <<-\EOF &&
-	#!/bin/sh
+	write_script .git/hooks/post-applypatch <<-\EOF &&
 	git rev-parse HEAD >head.actual
 	git diff second >diff.actual
 	exit 0
 	EOF
-	chmod +x .git/hooks/post-applypatch &&
 	git am patch1 &&
 	test_path_is_missing .git/rebase-apply &&
 	test_cmp_rev second HEAD &&
@@ -330,12 +320,10 @@ test_expect_success 'am with failing post-applypatch hook' '
 	git reset --hard &&
 	git checkout first &&
 	mkdir -p .git/hooks &&
-	cat >.git/hooks/post-applypatch <<-\EOF &&
-	#!/bin/sh
+	write_script .git/hooks/post-applypatch <<-\EOF &&
 	git rev-parse HEAD >head.actual
 	exit 1
 	EOF
-	chmod +x .git/hooks/post-applypatch &&
 	git am patch1 &&
 	test_path_is_missing .git/rebase-apply &&
 	git diff --exit-code second &&
@@ -782,7 +770,8 @@ test_expect_success 'am --message-id really adds the message id' '
 
 test_expect_success 'am.messageid really adds the message id' '
 	rm -fr .git/rebase-apply &&
-	git checkout -f HEAD^ &&
+	git reset --hard &&
+	git checkout HEAD^ &&
 	test_config am.messageid true &&
 	git am patch1.eml &&
 	test_path_is_missing .git/rebase-apply &&
-- 
2.5.0.rc1.76.gf60a929
Next: Paul Tan
Message 1 of 14 in “Improve git-am test coverage”
  1. 00/12 Improve git-am test coveragePaul Tan, Jul 7, 2015
  2. 01/12 t4150: am.messageid really adds the message idPaul Tan, Jul 7, 2015
  3. 02/12 t4150: am fails if index is dirtyPaul Tan, Jul 7, 2015
  4. 03/12 t4151: am --abort will keep dirty index intactPaul Tan, Jul 7, 2015
  5. 04/12 t4150: am refuses patches when pausedPaul Tan, Jul 7, 2015
  6. 05/12 t4150: am --resolved fails if index has no changesPaul Tan, Jul 7, 2015
  7. 06/12 t4150: am --resolved fails if index has unmerged entriesPaul Tan, Jul 7, 2015
  8. 07/12 t4150: am with applypatch-msg hookPaul Tan, Jul 7, 2015
  9. 08/12 t4150: am with pre-applypatch hookPaul Tan, Jul 7, 2015
  10. 09/12 t4150: am with post-applypatch hookPaul Tan, Jul 7, 2015
  11. 10/12 t4150: tests for am --[no-]scissorsPaul Tan, Jul 7, 2015
  12. 11/12 t3418: non-interactive rebase --continue with rerere enabledPaul Tan, Jul 7, 2015
  13. 12/12 t3901: test git-am encoding conversionPaul Tan, Jul 7, 2015
  14. Johannes SchindelinJul 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.