diff options
Diffstat (limited to 't/t6200-fmt-merge-msg.sh')
-rwxr-xr-x | t/t6200-fmt-merge-msg.sh | 348 |
1 files changed, 250 insertions, 98 deletions
diff --git a/t/t6200-fmt-merge-msg.sh b/t/t6200-fmt-merge-msg.sh index 2049ab6cf8..71f6cad3c2 100755 --- a/t/t6200-fmt-merge-msg.sh +++ b/t/t6200-fmt-merge-msg.sh @@ -7,73 +7,76 @@ test_description='fmt-merge-msg test' . ./test-lib.sh -datestamp=1151939923 -setdate () { - GIT_COMMITTER_DATE="$datestamp +0200" - GIT_AUTHOR_DATE="$datestamp +0200" - datestamp=`expr "$datestamp" + 1` - export GIT_COMMITTER_DATE GIT_AUTHOR_DATE -} - test_expect_success setup ' echo one >one && git add one && - setdate && + test_tick && git commit -m "Initial" && + git clone . remote && + echo uno >one && echo dos >two && git add two && - setdate && + test_tick && git commit -a -m "Second" && git checkout -b left && - echo $datestamp >one && - setdate && + echo "c1" >one && + test_tick && git commit -a -m "Common #1" && - echo $datestamp >one && - setdate && + echo "c2" >one && + test_tick && git commit -a -m "Common #2" && git branch right && - echo $datestamp >two && - setdate && + echo "l3" >two && + test_tick && git commit -a -m "Left #3" && - echo $datestamp >two && - setdate && + echo "l4" >two && + test_tick && git commit -a -m "Left #4" && - echo $datestamp >two && - setdate && + echo "l5" >two && + test_tick && git commit -a -m "Left #5" && + git tag tag-l5 && git checkout right && - echo $datestamp >three && + echo "r3" >three && git add three && - setdate && + test_tick && git commit -a -m "Right #3" && + git tag tag-r3 && - echo $datestamp >three && - setdate && + echo "r4" >three && + test_tick && git commit -a -m "Right #4" && - echo $datestamp >three && - setdate && + echo "r5" >three && + test_tick && git commit -a -m "Right #5" && - git show-branch -' + git checkout -b long && + i=0 && + while test $i -lt 30 + do + test_commit $i one && + i=$(($i+1)) + done && -cat >expected <<\EOF -Merge branch 'left' -EOF + git show-branch && + + apos="'\''" +' -test_expect_success 'merge-msg test #1' ' +test_expect_success 'message for merging local branch' ' + echo "Merge branch ${apos}left${apos}" >expected && git checkout master && git fetch . left && @@ -82,11 +85,8 @@ test_expect_success 'merge-msg test #1' ' test_cmp expected actual ' -cat >expected <<EOF -Merge branch 'left' of $(pwd) -EOF - -test_expect_success 'merge-msg test #2' ' +test_expect_success 'message for merging external branch' ' + echo "Merge branch ${apos}left${apos} of $(pwd)" >expected && git checkout master && git fetch "$(pwd)" left && @@ -95,114 +95,266 @@ test_expect_success 'merge-msg test #2' ' test_cmp expected actual ' -cat >expected <<\EOF -Merge branch 'left' - -* left: - Left #5 - Left #4 - Left #3 - Common #2 - Common #1 -EOF +test_expect_success '[merge] summary/log configuration' ' + cat >expected <<-EOF && + Merge branch ${apos}left${apos} -test_expect_success 'merge-msg test #3-1' ' + * left: + Left #5 + Left #4 + Left #3 + Common #2 + Common #1 + EOF - git config --unset-all merge.log - git config --unset-all merge.summary git config merge.log true && + test_might_fail git config --unset-all merge.summary && git checkout master && - setdate && + test_tick && git fetch . left && - git fmt-merge-msg <.git/FETCH_HEAD >actual && - test_cmp expected actual + git fmt-merge-msg <.git/FETCH_HEAD >actual1 && + + test_might_fail git config --unset-all merge.log && + git config merge.summary true && + + git checkout master && + test_tick && + git fetch . left && + + git fmt-merge-msg <.git/FETCH_HEAD >actual2 && + + test_cmp expected actual1 && + test_cmp expected actual2 +' + +test_expect_success 'fmt-merge-msg -m' ' + echo "Sync with left" >expected && + cat >expected.log <<-EOF && + Sync with left + + * ${apos}left${apos} of $(pwd): + Left #5 + Left #4 + Left #3 + Common #2 + Common #1 + EOF + + test_might_fail git config --unset merge.log && + test_might_fail git config --unset merge.summary && + git checkout master && + git fetch "$(pwd)" left && + git fmt-merge-msg -m "Sync with left" <.git/FETCH_HEAD >actual && + git fmt-merge-msg --log -m "Sync with left" \ + <.git/FETCH_HEAD >actual.log && + git config merge.log true && + git fmt-merge-msg -m "Sync with left" \ + <.git/FETCH_HEAD >actual.log-config && + git fmt-merge-msg --no-log -m "Sync with left" \ + <.git/FETCH_HEAD >actual.nolog && + + test_cmp expected actual && + test_cmp expected.log actual.log && + test_cmp expected.log actual.log-config && + test_cmp expected actual.nolog ' -test_expect_success 'merge-msg test #3-2' ' +test_expect_success 'setup: expected shortlog for two branches' ' + cat >expected <<-EOF + Merge branches ${apos}left${apos} and ${apos}right${apos} + + * left: + Left #5 + Left #4 + Left #3 + Common #2 + Common #1 + + * right: + Right #5 + Right #4 + Right #3 + Common #2 + Common #1 + EOF +' + +test_expect_success 'shortlog for two branches' ' + git config merge.log true && + test_might_fail git config --unset-all merge.summary && + git checkout master && + test_tick && + git fetch . left right && + git fmt-merge-msg <.git/FETCH_HEAD >actual1 && - git config --unset-all merge.log - git config --unset-all merge.summary + test_might_fail git config --unset-all merge.log && git config merge.summary true && + git checkout master && + test_tick && + git fetch . left right && + git fmt-merge-msg <.git/FETCH_HEAD >actual2 && + git config merge.log yes && + test_might_fail git config --unset-all merge.summary && git checkout master && - setdate && - git fetch . left && + test_tick && + git fetch . left right && + git fmt-merge-msg <.git/FETCH_HEAD >actual3 && - git fmt-merge-msg <.git/FETCH_HEAD >actual && + test_might_fail git config --unset-all merge.log && + git config merge.summary yes && + git checkout master && + test_tick && + git fetch . left right && + git fmt-merge-msg <.git/FETCH_HEAD >actual4 && + + test_cmp expected actual1 && + test_cmp expected actual2 && + test_cmp expected actual3 && + test_cmp expected actual4 +' + +test_expect_success 'merge-msg -F' ' + test_might_fail git config --unset-all merge.log && + git config merge.summary yes && + git checkout master && + test_tick && + git fetch . left right && + git fmt-merge-msg -F .git/FETCH_HEAD >actual && test_cmp expected actual ' -cat >expected <<\EOF -Merge branches 'left' and 'right' +test_expect_success 'merge-msg -F in subdirectory' ' + test_might_fail git config --unset-all merge.log && + git config merge.summary yes && + git checkout master && + test_tick && + git fetch . left right && + mkdir sub && + cp .git/FETCH_HEAD sub/FETCH_HEAD && + ( + cd sub && + git fmt-merge-msg -F FETCH_HEAD >../actual + ) && + test_cmp expected actual +' + +test_expect_success 'merge-msg with nothing to merge' ' + test_might_fail git config --unset-all merge.log && + git config merge.summary yes && + + >empty && -* left: - Left #5 - Left #4 - Left #3 - Common #2 - Common #1 + ( + cd remote && + git checkout -b unrelated && + test_tick && + git fetch origin && + git fmt-merge-msg <.git/FETCH_HEAD >../actual + ) && -* right: - Right #5 - Right #4 - Right #3 - Common #2 - Common #1 -EOF + test_cmp empty actual +' -test_expect_success 'merge-msg test #4-1' ' +test_expect_success 'merge-msg tag' ' + cat >expected <<-EOF && + Merge tag ${apos}tag-r3${apos} - git config --unset-all merge.log - git config --unset-all merge.summary - git config merge.log true && + * tag ${apos}tag-r3${apos}: + Right #3 + Common #2 + Common #1 + EOF + + test_might_fail git config --unset-all merge.log && + git config merge.summary yes && git checkout master && - setdate && - git fetch . left right && + test_tick && + git fetch . tag tag-r3 && git fmt-merge-msg <.git/FETCH_HEAD >actual && test_cmp expected actual ' -test_expect_success 'merge-msg test #4-2' ' +test_expect_success 'merge-msg two tags' ' + cat >expected <<-EOF && + Merge tags ${apos}tag-r3${apos} and ${apos}tag-l5${apos} - git config --unset-all merge.log - git config --unset-all merge.summary - git config merge.summary true && + * tag ${apos}tag-r3${apos}: + Right #3 + Common #2 + Common #1 + + * tag ${apos}tag-l5${apos}: + Left #5 + Left #4 + Left #3 + Common #2 + Common #1 + EOF + + test_might_fail git config --unset-all merge.log && + git config merge.summary yes && git checkout master && - setdate && - git fetch . left right && + test_tick && + git fetch . tag tag-r3 tag tag-l5 && git fmt-merge-msg <.git/FETCH_HEAD >actual && test_cmp expected actual ' -test_expect_success 'merge-msg test #5-1' ' +test_expect_success 'merge-msg tag and branch' ' + cat >expected <<-EOF && + Merge branch ${apos}left${apos}, tag ${apos}tag-r3${apos} - git config --unset-all merge.log - git config --unset-all merge.summary - git config merge.log yes && + * tag ${apos}tag-r3${apos}: + Right #3 + Common #2 + Common #1 + + * left: + Left #5 + Left #4 + Left #3 + Common #2 + Common #1 + EOF + + test_might_fail git config --unset-all merge.log && + git config merge.summary yes && git checkout master && - setdate && - git fetch . left right && + test_tick && + git fetch . tag tag-r3 left && git fmt-merge-msg <.git/FETCH_HEAD >actual && test_cmp expected actual ' -test_expect_success 'merge-msg test #5-2' ' +test_expect_success 'merge-msg lots of commits' ' + { + cat <<-EOF && + Merge branch ${apos}long${apos} - git config --unset-all merge.log - git config --unset-all merge.summary - git config merge.summary yes && + * long: (35 commits) + EOF + + i=29 && + while test $i -gt 9 + do + echo " $i" && + i=$(($i-1)) + done && + echo " ..." + } >expected && git checkout master && - setdate && - git fetch . left right && + test_tick && + git fetch . long && git fmt-merge-msg <.git/FETCH_HEAD >actual && test_cmp expected actual |