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

[PATCH 5/6] t7502: handle systems where auto-identity is broken

From
Jeff King <peff@peff.net>
Date
Jul 26, 2012, 20:32 UTC
Message-ID
<20120726203231.GE16048@sigill.intra.peff.net>
In-Reply-To
<20120726202644.GA15043@sigill.intra.peff.net>

Test t7502.21 checks whether we write the committer name into COMMIT_EDITMSG when it has been automatically determined. However, not all systems can produce valid automatic identities.

Prior to f20f387 (commit: check committer identity more strictly), this test worked even when we did not have a valid automatic identity, since it did not run the strict test until after we had generated the template. That commit tightened the check to fail early (since we would fail later, anyway), meaning that systems without a valid GECOS name or hostname would fail the test.

We cannot just work around this, because it depends on configuration outside the control of the test script. Therefore we introduce a new test_prerequisite to run this test only on systems where automatic ident works at all.

As a result, we can drop the confusing test_must_fail bit from the test. The intent was that by giving "git commit" invalid input (namely, nothing to commit), that it would stop at a predictable point, whether we had a valid identity or not, from which we could view the contents of COMMIT_EDITMSG. Since that assumption no longer holds, and we can only run the test when we have a valid identity, there is no reason not to let commit run to completion. That lets us be more robust to other unforeseen failures.

Signed-off-by: Jeff King <peff@peff.net>
---
This should fix the test failure that started the thread. Please let me
know if it doesn't.
 t/t7502-commit.sh | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh
index d261b82..c444812 100755
--- a/t/t7502-commit.sh
+++ b/t/t7502-commit.sh
@@ -243,14 +243,21 @@ test_expect_success 'message shows author when it is not equal to committer' '
 	  .git/COMMIT_EDITMSG
 '
 
-test_expect_success 'message shows committer when it is automatic' '
+test_expect_success 'setup auto-ident prerequisite' '
+	if (sane_unset GIT_COMMITTER_EMAIL &&
+	    sane_unset GIT_COMMITTER_NAME &&
+	    git var GIT_COMMITTER_IDENT); then
+		test_set_prereq AUTOIDENT
+	fi
+'
+
+test_expect_success AUTOIDENT 'message shows committer when it is automatic' '
 
 	echo >>negative &&
 	(
 		sane_unset GIT_COMMITTER_EMAIL &&
 		sane_unset GIT_COMMITTER_NAME &&
-		# must fail because there is no change
-		test_must_fail git commit -e -m "sample"
+		git commit -e -m "sample" -a
 	) &&
 	# the ident is calculated from the system, so we cannot
 	# check the actual value, only that it is there
-- 
1.7.11.3.8.ge78f547
Previous: Jeff KingNext: Jeff King
Message 13 of 15 in “Test "t/t7502-commit.sh" failed”
  1. Jiang XinJul 26, 2012
  2. Jeff KingJul 26, 2012
  3. Junio C HamanoJul 26, 2012
  4. Jeff KingJul 26, 2012
  5. Junio C HamanoJul 26, 2012
  6. Jeff KingJul 26, 2012
  7. Junio C HamanoJul 26, 2012
  8. 0/6 t7502 fixesJeff King, Jul 26, 2012
  9. 1/6 t7502: clean up fake_editor testsJeff King, Jul 26, 2012
  10. 2/6 t7502: properly quote GIT_EDITORJeff King, Jul 26, 2012
  11. 3/6 t7502: narrow checks for author/committer name in templateJeff King, Jul 26, 2012
  12. 4/6 t7502: drop confusing test_might_fail callJeff King, Jul 26, 2012
  13. 5/6 t7502: handle systems where auto-identity is brokenJeff King, Jul 26, 2012
  14. 6/6 t7502: test early quit from commit with bad identJeff King, Jul 26, 2012
  15. Junio C HamanoJul 26, 2012

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.