b24c5bfd7a300500466401e874a5039f6ddf80ea
   1#!/bin/sh
   2#
   3# Copyright (c) 2006, Junio C Hamano
   4#
   5
   6test_description='fmt-merge-msg test'
   7
   8. ./test-lib.sh
   9
  10test_expect_success setup '
  11        echo one >one &&
  12        git add one &&
  13        test_tick &&
  14        git commit -m "Initial" &&
  15
  16        git clone . remote &&
  17
  18        echo uno >one &&
  19        echo dos >two &&
  20        git add two &&
  21        test_tick &&
  22        git commit -a -m "Second" &&
  23
  24        git checkout -b left &&
  25
  26        echo "c1" >one &&
  27        test_tick &&
  28        git commit -a -m "Common #1" &&
  29
  30        echo "c2" >one &&
  31        test_tick &&
  32        git commit -a -m "Common #2" &&
  33
  34        git branch right &&
  35
  36        echo "l3" >two &&
  37        test_tick &&
  38        git commit -a -m "Left #3" &&
  39
  40        echo "l4" >two &&
  41        test_tick &&
  42        git commit -a -m "Left #4" &&
  43
  44        echo "l5" >two &&
  45        test_tick &&
  46        git commit -a -m "Left #5" &&
  47        git tag tag-l5 &&
  48
  49        git checkout right &&
  50
  51        echo "r3" >three &&
  52        git add three &&
  53        test_tick &&
  54        git commit -a -m "Right #3" &&
  55        git tag tag-r3 &&
  56
  57        echo "r4" >three &&
  58        test_tick &&
  59        git commit -a -m "Right #4" &&
  60
  61        echo "r5" >three &&
  62        test_tick &&
  63        git commit -a -m "Right #5" &&
  64
  65        git show-branch
  66'
  67
  68cat >expected <<\EOF
  69Merge branch 'left'
  70EOF
  71
  72test_expect_success 'merge-msg test #1' '
  73
  74        git checkout master &&
  75        git fetch . left &&
  76
  77        git fmt-merge-msg <.git/FETCH_HEAD >actual &&
  78        test_cmp expected actual
  79'
  80
  81cat >expected <<EOF
  82Merge branch 'left' of $(pwd)
  83EOF
  84
  85test_expect_success 'merge-msg test #2' '
  86
  87        git checkout master &&
  88        git fetch "$(pwd)" left &&
  89
  90        git fmt-merge-msg <.git/FETCH_HEAD >actual &&
  91        test_cmp expected actual
  92'
  93
  94cat >expected <<\EOF
  95Merge branch 'left'
  96
  97* left:
  98  Left #5
  99  Left #4
 100  Left #3
 101  Common #2
 102  Common #1
 103EOF
 104
 105test_expect_success 'merge-msg test #3-1' '
 106
 107        git config --unset-all merge.log
 108        git config --unset-all merge.summary
 109        git config merge.log true &&
 110
 111        git checkout master &&
 112        test_tick &&
 113        git fetch . left &&
 114
 115        git fmt-merge-msg <.git/FETCH_HEAD >actual &&
 116        test_cmp expected actual
 117'
 118
 119test_expect_success 'merge-msg test #3-2' '
 120
 121        git config --unset-all merge.log
 122        git config --unset-all merge.summary
 123        git config merge.summary true &&
 124
 125        git checkout master &&
 126        test_tick &&
 127        git fetch . left &&
 128
 129        git fmt-merge-msg <.git/FETCH_HEAD >actual &&
 130        test_cmp expected actual
 131'
 132
 133cat >expected <<\EOF
 134Merge branches 'left' and 'right'
 135
 136* left:
 137  Left #5
 138  Left #4
 139  Left #3
 140  Common #2
 141  Common #1
 142
 143* right:
 144  Right #5
 145  Right #4
 146  Right #3
 147  Common #2
 148  Common #1
 149EOF
 150
 151test_expect_success 'merge-msg test #4-1' '
 152
 153        git config --unset-all merge.log
 154        git config --unset-all merge.summary
 155        git config merge.log true &&
 156
 157        git checkout master &&
 158        test_tick &&
 159        git fetch . left right &&
 160
 161        git fmt-merge-msg <.git/FETCH_HEAD >actual &&
 162        test_cmp expected actual
 163'
 164
 165test_expect_success 'merge-msg test #4-2' '
 166
 167        git config --unset-all merge.log
 168        git config --unset-all merge.summary
 169        git config merge.summary true &&
 170
 171        git checkout master &&
 172        test_tick &&
 173        git fetch . left right &&
 174
 175        git fmt-merge-msg <.git/FETCH_HEAD >actual &&
 176        test_cmp expected actual
 177'
 178
 179test_expect_success 'merge-msg test #5-1' '
 180
 181        git config --unset-all merge.log
 182        git config --unset-all merge.summary
 183        git config merge.log yes &&
 184
 185        git checkout master &&
 186        test_tick &&
 187        git fetch . left right &&
 188
 189        git fmt-merge-msg <.git/FETCH_HEAD >actual &&
 190        test_cmp expected actual
 191'
 192
 193test_expect_success 'merge-msg test #5-2' '
 194
 195        git config --unset-all merge.log
 196        git config --unset-all merge.summary
 197        git config merge.summary yes &&
 198
 199        git checkout master &&
 200        test_tick &&
 201        git fetch . left right &&
 202
 203        git fmt-merge-msg <.git/FETCH_HEAD >actual &&
 204        test_cmp expected actual
 205'
 206
 207test_expect_success 'merge-msg -F' '
 208
 209        git config --unset-all merge.log
 210        git config --unset-all merge.summary
 211        git config merge.summary yes &&
 212
 213        git checkout master &&
 214        test_tick &&
 215        git fetch . left right &&
 216
 217        git fmt-merge-msg -F .git/FETCH_HEAD >actual &&
 218        test_cmp expected actual
 219'
 220
 221test_expect_success 'merge-msg -F in subdirectory' '
 222
 223        git config --unset-all merge.log
 224        git config --unset-all merge.summary
 225        git config merge.summary yes &&
 226
 227        git checkout master &&
 228        test_tick &&
 229        git fetch . left right &&
 230        mkdir sub &&
 231        cp .git/FETCH_HEAD sub/FETCH_HEAD &&
 232        (
 233                cd sub &&
 234                git fmt-merge-msg -F FETCH_HEAD >../actual
 235        ) &&
 236        test_cmp expected actual
 237'
 238
 239test_expect_success 'merge-msg with nothing to merge' '
 240
 241        git config --unset-all merge.log
 242        git config --unset-all merge.summary
 243        git config merge.summary yes &&
 244
 245        (
 246                cd remote &&
 247                git checkout -b unrelated &&
 248                test_tick &&
 249                git fetch origin &&
 250                git fmt-merge-msg <.git/FETCH_HEAD >../actual
 251        ) &&
 252
 253        test_cmp /dev/null actual
 254'
 255
 256test_done