[PATCH v3 04/11] 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 bca...@nvidia.com --- t/t3511-cherry-pick-x.sh | 111 +++ 1 file changed, 111 insertions(+) create mode 100755 t/t3511-cherry-pick-x.sh diff --git a/t/t3511-cherry-pick-x.sh b/t/t3511-cherry-pick-x.sh new file mode 100755 index 000..2a040b7 --- /dev/null +++ b/t/t3511-cherry-pick-x.sh @@ -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 aut...@example.com +Signed-off-by: B.U. Thor but...@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 -- 1.8.1.1.450.g0327af3 -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v3 04/11] t/t3511: add some tests of 'cherry-pick -s' functionality
Brandon Casey wrote: --- /dev/null +++ b/t/t3511-cherry-pick-x.sh @@ -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 +} Some day this should move to test-lib-functions.sh. Not relevant for this patch, though. [...] +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 This bug is old. When c1e01b0c (commit: More generous accepting of RFC-2822 footer lines, 2009-10-28) added more precise parsing of the RFC2822 footer when deciding whether to add a newline before a new signoff, it forgot to change the sign-off already present case to match. Thanks for the test. The rest of the tests in this file also look good, of course. Reviewed-by: Jonathan Nieder jrnie...@gmail.com -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html