Skip to content

Commit 5b012c8

Browse files
drafnelgitster
authored andcommitted
t7502: demonstrate breakage with a commit message with trailing newlines
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, even to the ones that already end with a newline. Signed-off-by: Brandon Casey <[email protected]> Reviewed-by: Jonathan Nieder <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 67dabab commit 5b012c8

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

t/t7502-commit.sh

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,18 @@ test_expect_success 'verbose respects diff config' '
177177
git config --unset color.diff
178178
'
179179

180+
mesg_with_comment_and_newlines='
181+
# text
182+
183+
'
184+
185+
test_expect_success 'prepare file with comment line and trailing newlines' '
186+
printf "%s" "$mesg_with_comment_and_newlines" >expect
187+
'
188+
180189
test_expect_success 'cleanup commit messages (verbatim option,-t)' '
181190
182191
echo >>negative &&
183-
{ echo;echo "# text";echo; } >expect &&
184192
git commit --cleanup=verbatim --no-status -t expect -a &&
185193
git cat-file -p HEAD |sed -e "1,/^\$/d" >actual &&
186194
test_cmp expect actual
@@ -196,10 +204,10 @@ test_expect_success 'cleanup commit messages (verbatim option,-F)' '
196204
197205
'
198206

199-
test_expect_success 'cleanup commit messages (verbatim option,-m)' '
207+
test_expect_failure 'cleanup commit messages (verbatim option,-m)' '
200208
201209
echo >>negative &&
202-
git commit --cleanup=verbatim -m "$(cat expect)" -a &&
210+
git commit --cleanup=verbatim -m "$mesg_with_comment_and_newlines" -a &&
203211
git cat-file -p HEAD |sed -e "1,/^\$/d">actual &&
204212
test_cmp expect actual
205213

0 commit comments

Comments
 (0)