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

[PATCH 2/4] t7502: demonstrate breakage with a commit message with trailing newlines

From
Brandon Casey <drafnel@gmail.com>
Date
Feb 19, 2013, 04:17 UTC
Message-ID
<1361247427-438-2-git-send-email-drafnel@gmail.com>
In-Reply-To
<1361247427-438-1-git-send-email-drafnel@gmail.com>

This test attempts to verify that a commit message supplied to 'git commit' via the -m switch was used in full as the commit message for a commit when --cleanup=verbatim was used.

But, this test has been broken since it was introduced. Since the commit message containing trailing newlines was supplied to 'git commit' using a command substitution, the trailing newlines were removed by the shell. This means that a string without any trailing newlines was actually supplied to 'git commit'.

The test was able to complete successfully since internally, git appends two newlines to each string supplied via the -m switch. So, the two newlines removed by the shell were then re-added by git, and the resulting commit matched what was expected.

So, let's move the initial creation of the commit message string out from within a previous test so that it stands alone. Assign the desired commit message to a variable using literal newlines. Then populate the expect file from the contents of the commit message variable. This way the shell variable becomes the authoritative source of the commit message and can be supplied via the -m switch with the trailing newlines intact.

Mark this test as failing, since it is not handled correctly by git. As described above, git appends two extra newlines to every string supplied via -m.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
---
 t/t7502-commit.sh | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh
index 9040f8a..39e55f8 100755
--- a/t/t7502-commit.sh
+++ b/t/t7502-commit.sh
@@ -177,10 +177,18 @@ test_expect_success 'verbose respects diff config' '
 	git config --unset color.diff
 '
 
+mesg_with_comment_and_newlines='
+# text
+
+'
+
+test_expect_success 'prepare file with comment line and trailing newlines'  '
+	printf "%s" "$mesg_with_comment_and_newlines" >expect
+'
+
 test_expect_success 'cleanup commit messages (verbatim option,-t)' '
 
 	echo >>negative &&
-	{ echo;echo "# text";echo; } >expect &&
 	git commit --cleanup=verbatim --no-status -t expect -a &&
 	git cat-file -p HEAD |sed -e "1,/^\$/d" >actual &&
 	test_cmp expect actual
@@ -196,10 +204,10 @@ test_expect_success 'cleanup commit messages (verbatim option,-F)' '
 
 '
 
-test_expect_success 'cleanup commit messages (verbatim option,-m)' '
+test_expect_failure 'cleanup commit messages (verbatim option,-m)' '
 
 	echo >>negative &&
-	git commit --cleanup=verbatim -m "$(cat expect)" -a &&
+	git commit --cleanup=verbatim -m "$mesg_with_comment_and_newlines" -a &&
 	git cat-file -p HEAD |sed -e "1,/^\$/d">actual &&
 	test_cmp expect actual
 
-- 
1.8.1.3.638.g372f416.dirty
Previous: Brandon CaseyNext: Jonathan Nieder
Message 2 of 19 in “t/t7502: compare entire commit message with what was expected”
  1. 1/4 t/t7502: compare entire commit message with what was expectedBrandon Casey, Feb 19, 2013
  2. 2/4 t7502: demonstrate breakage with a commit message with trailing newlinesBrandon Casey, Feb 19, 2013
  3. Jonathan NiederFeb 19, 2013
  4. 3/4 git-commit: only append a newline to -m mesg if necessaryBrandon Casey, Feb 19, 2013
  5. Jonathan NiederFeb 19, 2013
  6. 4/4 Documentation/git-commit.txt: correct a few minor grammatical mistakesBrandon Casey, Feb 19, 2013
  7. Jonathan NiederFeb 19, 2013
  8. Brandon CaseyFeb 19, 2013
  9. Jonathan NiederFeb 19, 2013
  10. Junio C HamanoFeb 19, 2013
  11. 4/4 Documentation/git-commit.txt: rework the --cleanup sectionBrandon Casey, Feb 19, 2013
  12. 4/4 Documentation/git-commit.txt: rework the --cleanup sectionBrandon Casey, Feb 19, 2013
  13. 4/4 Documentation/git-commit.txt: rework the --cleanup sectionBrandon Casey, Feb 19, 2013
  14. fixup! Documentation/git-commit.txt: rework the --cleanup sectionJonathan Nieder, Feb 19, 2013
  15. Brandon CaseyFeb 19, 2013
  16. Junio C HamanoFeb 19, 2013
  17. Jonathan NiederFeb 19, 2013
  18. Jonathan NiederFeb 19, 2013
  19. Junio C HamanoFeb 19, 2013

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.