contrib / remote-helpers / test-bzr.shon commit Sync with 'maint' (ea21efc)
   1#!/bin/sh
   2#
   3# Copyright (c) 2012 Felipe Contreras
   4#
   5
   6test_description='Test remote-bzr'
   7
   8. ./test-lib.sh
   9
  10if ! test_have_prereq PYTHON
  11then
  12        skip_all='skipping remote-bzr tests; python not available'
  13        test_done
  14fi
  15
  16if ! python -c 'import bzrlib'
  17then
  18        skip_all='skipping remote-bzr tests; bzr not available'
  19        test_done
  20fi
  21
  22check () {
  23        echo $3 >expected &&
  24        git --git-dir=$1/.git log --format='%s' -1 $2 >actual
  25        test_cmp expected actual
  26}
  27
  28bzr whoami "A U Thor <author@example.com>"
  29
  30test_expect_success 'cloning' '
  31        (
  32        bzr init bzrrepo &&
  33        cd bzrrepo &&
  34        echo one >content &&
  35        bzr add content &&
  36        bzr commit -m one
  37        ) &&
  38
  39        git clone "bzr::bzrrepo" gitrepo &&
  40        check gitrepo HEAD one
  41'
  42
  43test_expect_success 'pulling' '
  44        (
  45        cd bzrrepo &&
  46        echo two >content &&
  47        bzr commit -m two
  48        ) &&
  49
  50        (cd gitrepo && git pull) &&
  51
  52        check gitrepo HEAD two
  53'
  54
  55test_expect_success 'pushing' '
  56        (
  57        cd gitrepo &&
  58        echo three >content &&
  59        git commit -a -m three &&
  60        git push
  61        ) &&
  62
  63        echo three >expected &&
  64        cat bzrrepo/content >actual &&
  65        test_cmp expected actual
  66'
  67
  68test_expect_success 'roundtrip' '
  69        (
  70        cd gitrepo &&
  71        git pull &&
  72        git log --format="%s" -1 origin/master >actual
  73        ) &&
  74        echo three >expected &&
  75        test_cmp expected actual &&
  76
  77        (cd gitrepo && git push && git pull) &&
  78
  79        (
  80        cd bzrrepo &&
  81        echo four >content &&
  82        bzr commit -m four
  83        ) &&
  84
  85        (cd gitrepo && git pull && git push) &&
  86
  87        check gitrepo HEAD four &&
  88
  89        (
  90        cd gitrepo &&
  91        echo five >content &&
  92        git commit -a -m five &&
  93        git push && git pull
  94        ) &&
  95
  96        (cd bzrrepo && bzr revert) &&
  97
  98        echo five >expected &&
  99        cat bzrrepo/content >actual &&
 100        test_cmp expected actual
 101'
 102
 103cat >expected <<\EOF
 104100644 blob 54f9d6da5c91d556e6b54340b1327573073030af    content
 105100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb    executable
 106120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea    link
 107EOF
 108
 109test_expect_success 'special modes' '
 110        (
 111        cd bzrrepo &&
 112        echo exec >executable
 113        chmod +x executable &&
 114        bzr add executable
 115        bzr commit -m exec &&
 116        ln -s content link
 117        bzr add link
 118        bzr commit -m link &&
 119        mkdir dir &&
 120        bzr add dir &&
 121        bzr commit -m dir
 122        ) &&
 123
 124        (
 125        cd gitrepo &&
 126        git pull
 127        git ls-tree HEAD >../actual
 128        ) &&
 129
 130        test_cmp expected actual &&
 131
 132        (
 133        cd gitrepo &&
 134        git cat-file -p HEAD:link >../actual
 135        ) &&
 136
 137        printf content >expected &&
 138        test_cmp expected actual
 139'
 140
 141cat >expected <<\EOF
 142100644 blob 54f9d6da5c91d556e6b54340b1327573073030af    content
 143100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb    executable
 144120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea    link
 145040000 tree 35c0caa46693cef62247ac89a680f0c5ce32b37b    movedir-new
 146EOF
 147
 148test_expect_success 'moving directory' '
 149        (
 150        cd bzrrepo &&
 151        mkdir movedir &&
 152        echo one >movedir/one &&
 153        echo two >movedir/two &&
 154        bzr add movedir &&
 155        bzr commit -m movedir &&
 156        bzr mv movedir movedir-new &&
 157        bzr commit -m movedir-new
 158        ) &&
 159
 160        (
 161        cd gitrepo &&
 162        git pull &&
 163        git ls-tree HEAD >../actual
 164        ) &&
 165
 166        test_cmp expected actual
 167'
 168
 169test_expect_success 'different authors' '
 170        (
 171        cd bzrrepo &&
 172        echo john >>content &&
 173        bzr commit -m john \
 174          --author "Jane Rey <jrey@example.com>" \
 175          --author "John Doe <jdoe@example.com>"
 176        ) &&
 177
 178        (
 179        cd gitrepo &&
 180        git pull &&
 181        git show --format="%an <%ae>, %cn <%ce>" --quiet >../actual
 182        ) &&
 183
 184        echo "Jane Rey <jrey@example.com>, A U Thor <author@example.com>" >expected &&
 185        test_cmp expected actual
 186'
 187
 188# cleanup previous stuff
 189rm -rf bzrrepo gitrepo
 190
 191test_expect_success 'fetch utf-8 filenames' '
 192        test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C" &&
 193
 194        LC_ALL=en_US.UTF-8
 195        export LC_ALL
 196
 197        (
 198        bzr init bzrrepo &&
 199        cd bzrrepo &&
 200
 201        echo test >>"ærø" &&
 202        bzr add "ærø" &&
 203        echo test >>"ø~?" &&
 204        bzr add "ø~?" &&
 205        bzr commit -m add-utf-8 &&
 206        echo test >>"ærø" &&
 207        bzr commit -m test-utf-8 &&
 208        bzr rm "ø~?" &&
 209        bzr mv "ærø" "ø~?" &&
 210        bzr commit -m bzr-mv-utf-8
 211        ) &&
 212
 213        (
 214        git clone "bzr::bzrrepo" gitrepo &&
 215        cd gitrepo &&
 216        git -c core.quotepath=false ls-files >../actual
 217        ) &&
 218        echo "ø~?" >expected &&
 219        test_cmp expected actual
 220'
 221
 222test_expect_success 'push utf-8 filenames' '
 223        test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C" &&
 224
 225        mkdir -p tmp && cd tmp &&
 226
 227        LC_ALL=en_US.UTF-8
 228        export LC_ALL
 229
 230        (
 231        bzr init bzrrepo &&
 232        cd bzrrepo &&
 233
 234        echo one >>content &&
 235        bzr add content &&
 236        bzr commit -m one
 237        ) &&
 238
 239        (
 240        git clone "bzr::bzrrepo" gitrepo &&
 241        cd gitrepo &&
 242
 243        echo test >>"ærø" &&
 244        git add "ærø" &&
 245        git commit -m utf-8 &&
 246
 247        git push
 248        ) &&
 249
 250        (cd bzrrepo && bzr ls >../actual) &&
 251        printf "content\nærø\n" >expected &&
 252        test_cmp expected actual
 253'
 254
 255test_expect_success 'pushing a merge' '
 256        test_when_finished "rm -rf bzrrepo gitrepo" &&
 257
 258        (
 259        bzr init bzrrepo &&
 260        cd bzrrepo &&
 261        echo one >content &&
 262        bzr add content &&
 263        bzr commit -m one
 264        ) &&
 265
 266        git clone "bzr::bzrrepo" gitrepo &&
 267
 268        (
 269        cd bzrrepo &&
 270        echo two >content &&
 271        bzr commit -m two
 272        ) &&
 273
 274        (
 275        cd gitrepo &&
 276        echo three >content &&
 277        git commit -a -m three &&
 278        git fetch &&
 279        git merge origin/master || true &&
 280        echo three >content &&
 281        git commit -a --no-edit &&
 282        git push
 283        ) &&
 284
 285        echo three >expected &&
 286        cat bzrrepo/content >actual &&
 287        test_cmp expected actual
 288'
 289
 290cat >expected <<\EOF
 291origin/HEAD
 292origin/branch
 293origin/trunk
 294EOF
 295
 296test_expect_success 'proper bzr repo' '
 297        test_when_finished "rm -rf bzrrepo gitrepo" &&
 298
 299        bzr init-repo bzrrepo &&
 300
 301        (
 302        bzr init bzrrepo/trunk &&
 303        cd bzrrepo/trunk &&
 304        echo one >>content &&
 305        bzr add content &&
 306        bzr commit -m one
 307        ) &&
 308
 309        (
 310        bzr branch bzrrepo/trunk bzrrepo/branch &&
 311        cd bzrrepo/branch &&
 312        echo two >>content &&
 313        bzr commit -m one
 314        ) &&
 315
 316        (
 317        git clone "bzr::bzrrepo" gitrepo &&
 318        cd gitrepo &&
 319        git for-each-ref --format "%(refname:short)" refs/remotes/origin >../actual
 320        ) &&
 321
 322        test_cmp expected actual
 323'
 324
 325test_expect_success 'strip' '
 326        test_when_finished "rm -rf bzrrepo gitrepo" &&
 327
 328        (
 329        bzr init bzrrepo &&
 330        cd bzrrepo &&
 331
 332        echo one >>content &&
 333        bzr add content &&
 334        bzr commit -m one &&
 335
 336        echo two >>content &&
 337        bzr commit -m two
 338        ) &&
 339
 340        git clone "bzr::bzrrepo" gitrepo &&
 341
 342        (
 343        cd bzrrepo &&
 344        bzr uncommit --force &&
 345
 346        echo three >>content &&
 347        bzr commit -m three &&
 348
 349        echo four >>content &&
 350        bzr commit -m four &&
 351        bzr log --line | sed -e "s/^[0-9][0-9]*: //" >../expected
 352        ) &&
 353
 354        (
 355        cd gitrepo &&
 356        git fetch &&
 357        git log --format="%an %ad %s" --date=short origin/master >../actual
 358        ) &&
 359
 360        test_cmp expected actual
 361'
 362
 363test_expect_success 'export utf-8 authors' '
 364        test_when_finished "rm -rf bzrrepo gitrepo && LC_ALL=C && unset GIT_COMMITTER_NAME" &&
 365
 366        LC_ALL=en_US.UTF-8
 367        export LC_ALL
 368
 369        GIT_COMMITTER_NAME="Grégoire"
 370        export GIT_COMMITTER_NAME
 371
 372        bzr init bzrrepo &&
 373
 374        (
 375        git init gitrepo &&
 376        cd gitrepo &&
 377        echo greg >>content &&
 378        git add content &&
 379        git commit -m one &&
 380        git remote add bzr "bzr::../bzrrepo" &&
 381        git push bzr
 382        ) &&
 383
 384        (
 385        cd bzrrepo &&
 386        bzr log | grep "^committer: " >../actual
 387        ) &&
 388
 389        echo "committer: Grégoire <committer@example.com>" >expected &&
 390        test_cmp expected actual
 391'
 392
 393test_done