-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
t/t3511: add some tests of 'cherry-pick -s' functionality
Add some tests to ensure that 'cherry-pick -s' operates in the following manner: * Inserts a blank line before appending a s-o-b to a commit message that does not contain a s-o-b footer * Does not mistake first line "subject: description" as a s-o-b footer * Does not mistake single word message body as conforming to rfc2822 * Appends a s-o-b when last s-o-b in footer does not match committer s-o-b, even when committer's s-o-b exists elsewhere in footer. * Does not append a s-o-b when last s-o-b matches committer s-o-b * Correctly detects a non-conforming footer containing a mix of s-o-b like elements and s-o-b elements. (marked "expect failure") Signed-off-by: Brandon Casey <bcasey@nvidia.com> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Brandon Casey
authored and
Junio C Hamano
committed
Feb 12, 2013
1 parent
4c99419
commit f2b9a75
Showing
1 changed file
with
111 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
#!/bin/sh | ||
|
||
test_description='Test cherry-pick -x and -s' | ||
|
||
. ./test-lib.sh | ||
|
||
pristine_detach () { | ||
git cherry-pick --quit && | ||
git checkout -f "$1^0" && | ||
git read-tree -u --reset HEAD && | ||
git clean -d -f -f -q -x | ||
} | ||
|
||
mesg_one_line='base: commit message' | ||
|
||
mesg_no_footer="$mesg_one_line | ||
OneWordBodyThatsNotA-S-o-B" | ||
|
||
mesg_with_footer="$mesg_no_footer | ||
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> | ||
Signed-off-by: A.U. Thor <author@example.com> | ||
Signed-off-by: B.U. Thor <buthor@example.com>" | ||
|
||
mesg_broken_footer="$mesg_no_footer | ||
The signed-off-by string should begin with the words Signed-off-by followed | ||
by a colon and space, and then the signers name and email address. e.g. | ||
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" | ||
|
||
mesg_with_footer_sob="$mesg_with_footer | ||
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" | ||
|
||
|
||
test_expect_success setup ' | ||
git config advice.detachedhead false && | ||
echo unrelated >unrelated && | ||
git add unrelated && | ||
test_commit initial foo a && | ||
test_commit "$mesg_one_line" foo b mesg-one-line && | ||
git reset --hard initial && | ||
test_commit "$mesg_no_footer" foo b mesg-no-footer && | ||
git reset --hard initial && | ||
test_commit "$mesg_broken_footer" foo b mesg-broken-footer && | ||
git reset --hard initial && | ||
test_commit "$mesg_with_footer" foo b mesg-with-footer && | ||
git reset --hard initial && | ||
test_commit "$mesg_with_footer_sob" foo b mesg-with-footer-sob && | ||
pristine_detach initial && | ||
test_commit conflicting unrelated | ||
' | ||
|
||
test_expect_success 'cherry-pick -s inserts blank line after one line subject' ' | ||
pristine_detach initial && | ||
git cherry-pick -s mesg-one-line && | ||
cat <<-EOF >expect && | ||
$mesg_one_line | ||
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> | ||
EOF | ||
git log -1 --pretty=format:%B >actual && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_failure 'cherry-pick -s inserts blank line after non-conforming footer' ' | ||
pristine_detach initial && | ||
git cherry-pick -s mesg-broken-footer && | ||
cat <<-EOF >expect && | ||
$mesg_broken_footer | ||
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> | ||
EOF | ||
git log -1 --pretty=format:%B >actual && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'cherry-pick -s inserts blank line when conforming footer not found' ' | ||
pristine_detach initial && | ||
git cherry-pick -s mesg-no-footer && | ||
cat <<-EOF >expect && | ||
$mesg_no_footer | ||
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> | ||
EOF | ||
git log -1 --pretty=format:%B >actual && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'cherry-pick -s adds sob when last sob doesnt match committer' ' | ||
pristine_detach initial && | ||
git cherry-pick -s mesg-with-footer && | ||
cat <<-EOF >expect && | ||
$mesg_with_footer | ||
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> | ||
EOF | ||
git log -1 --pretty=format:%B >actual && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'cherry-pick -s refrains from adding duplicate trailing sob' ' | ||
pristine_detach initial && | ||
git cherry-pick -s mesg-with-footer-sob && | ||
cat <<-EOF >expect && | ||
$mesg_with_footer_sob | ||
EOF | ||
git log -1 --pretty=format:%B >actual && | ||
test_cmp expect actual | ||
' | ||
|
||
test_done |