contrib / remote-helpers / test-bzr.shon commit remote-helpers: test: cleanup white-spaces (4080ac8)
   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; then
  11        skip_all='skipping remote-bzr tests; python not available'
  12        test_done
  13fi
  14
  15if ! python -c 'import bzrlib'; then
  16        skip_all='skipping remote-bzr tests; bzr not available'
  17        test_done
  18fi
  19
  20check () {
  21        (cd $1 &&
  22        git log --format='%s' -1 &&
  23        git symbolic-ref HEAD) > actual &&
  24        (echo $2 &&
  25        echo "refs/heads/$3") > expected &&
  26        test_cmp expected actual
  27}
  28
  29bzr whoami "A U Thor <author@example.com>"
  30
  31test_expect_success 'cloning' '
  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::$PWD/bzrrepo" gitrepo &&
  40        check gitrepo one master
  41'
  42
  43test_expect_success 'pulling' '
  44        (cd bzrrepo &&
  45        echo two > content &&
  46        bzr commit -m two
  47        ) &&
  48
  49        (cd gitrepo && git pull) &&
  50
  51        check gitrepo two master
  52'
  53
  54test_expect_success 'pushing' '
  55        (cd gitrepo &&
  56        echo three > content &&
  57        git commit -a -m three &&
  58        git push
  59        ) &&
  60
  61        echo three > expected &&
  62        cat bzrrepo/content > actual &&
  63        test_cmp expected actual
  64'
  65
  66test_expect_success 'roundtrip' '
  67        (cd gitrepo &&
  68        git pull &&
  69        git log --format="%s" -1 origin/master > actual) &&
  70        echo three > expected &&
  71        test_cmp expected actual &&
  72
  73        (cd gitrepo && git push && git pull) &&
  74
  75        (cd bzrrepo &&
  76        echo four > content &&
  77        bzr commit -m four
  78        ) &&
  79
  80        (cd gitrepo && git pull && git push) &&
  81
  82        check gitrepo four master &&
  83
  84        (cd gitrepo &&
  85        echo five > content &&
  86        git commit -a -m five &&
  87        git push && git pull
  88        ) &&
  89
  90        (cd bzrrepo && bzr revert) &&
  91
  92        echo five > expected &&
  93        cat bzrrepo/content > actual &&
  94        test_cmp expected actual
  95'
  96
  97cat > expected <<EOF
  98100644 blob 54f9d6da5c91d556e6b54340b1327573073030af    content
  99100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb    executable
 100120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea    link
 101EOF
 102
 103test_expect_success 'special modes' '
 104        (cd bzrrepo &&
 105        echo exec > executable
 106        chmod +x executable &&
 107        bzr add executable
 108        bzr commit -m exec &&
 109        ln -s content link
 110        bzr add link
 111        bzr commit -m link &&
 112        mkdir dir &&
 113        bzr add dir &&
 114        bzr commit -m dir) &&
 115
 116        (cd gitrepo &&
 117        git pull
 118        git ls-tree HEAD > ../actual) &&
 119
 120        test_cmp expected actual &&
 121
 122        (cd gitrepo &&
 123        git cat-file -p HEAD:link > ../actual) &&
 124
 125        printf content > expected &&
 126        test_cmp expected actual
 127'
 128
 129cat > expected <<EOF
 130100644 blob 54f9d6da5c91d556e6b54340b1327573073030af    content
 131100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb    executable
 132120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea    link
 133040000 tree 35c0caa46693cef62247ac89a680f0c5ce32b37b    movedir-new
 134EOF
 135
 136test_expect_success 'moving directory' '
 137        (cd bzrrepo &&
 138        mkdir movedir &&
 139        echo one > movedir/one &&
 140        echo two > movedir/two &&
 141        bzr add movedir &&
 142        bzr commit -m movedir &&
 143        bzr mv movedir movedir-new &&
 144        bzr commit -m movedir-new) &&
 145
 146        (cd gitrepo &&
 147        git pull &&
 148        git ls-tree HEAD > ../actual) &&
 149
 150        test_cmp expected actual
 151'
 152
 153test_expect_success 'different authors' '
 154        (cd bzrrepo &&
 155        echo john >> content &&
 156        bzr commit -m john \
 157          --author "Jane Rey <jrey@example.com>" \
 158          --author "John Doe <jdoe@example.com>") &&
 159
 160        (cd gitrepo &&
 161        git pull &&
 162        git show --format="%an <%ae>, %cn <%ce>" --quiet > ../actual) &&
 163
 164        echo "Jane Rey <jrey@example.com>, A U Thor <author@example.com>" > expected &&
 165        test_cmp expected actual
 166'
 167
 168test_expect_success 'fetch utf-8 filenames' '
 169        mkdir -p tmp && cd tmp &&
 170        test_when_finished "cd .. && rm -rf tmp && LC_ALL=C" &&
 171
 172        LC_ALL=en_US.UTF-8
 173        export LC_ALL
 174        (
 175        bzr init bzrrepo &&
 176        cd bzrrepo &&
 177
 178        echo test >> "ærø" &&
 179        bzr add "ærø" &&
 180        echo test >> "ø~?" &&
 181        bzr add "ø~?" &&
 182        bzr commit -m add-utf-8 &&
 183        echo test >> "ærø" &&
 184        bzr commit -m test-utf-8 &&
 185        bzr rm "ø~?" &&
 186        bzr mv "ærø" "ø~?" &&
 187        bzr commit -m bzr-mv-utf-8
 188        ) &&
 189
 190        (
 191        git clone "bzr::$PWD/bzrrepo" gitrepo &&
 192        cd gitrepo &&
 193        git -c core.quotepath=false ls-files > ../actual
 194        ) &&
 195        echo "ø~?" > expected &&
 196        test_cmp expected actual
 197'
 198
 199test_expect_success 'push utf-8 filenames' '
 200        mkdir -p tmp && cd tmp &&
 201        test_when_finished "cd .. && rm -rf tmp && LC_ALL=C" &&
 202
 203        LC_ALL=en_US.UTF-8
 204        export LC_ALL
 205
 206        (
 207        bzr init bzrrepo &&
 208        cd bzrrepo &&
 209
 210        echo one >> content &&
 211        bzr add content &&
 212        bzr commit -m one
 213        ) &&
 214
 215        (
 216        git clone "bzr::$PWD/bzrrepo" gitrepo &&
 217        cd gitrepo &&
 218
 219        echo test >> "ærø" &&
 220        git add "ærø" &&
 221        git commit -m utf-8 &&
 222
 223        git push
 224        ) &&
 225
 226        (cd bzrrepo && bzr ls > ../actual) &&
 227        printf "content\nærø\n" > expected &&
 228        test_cmp expected actual
 229'
 230
 231test_expect_success 'pushing a merge' '
 232        mkdir -p tmp && cd tmp &&
 233        test_when_finished "cd .. && rm -rf tmp" &&
 234
 235        (
 236        bzr init bzrrepo &&
 237        cd bzrrepo &&
 238        echo one > content &&
 239        bzr add content &&
 240        bzr commit -m one
 241        ) &&
 242
 243        git clone "bzr::$PWD/bzrrepo" gitrepo &&
 244
 245        (
 246        cd bzrrepo &&
 247        echo two > content &&
 248        bzr commit -m two
 249        ) &&
 250
 251        (
 252        cd gitrepo &&
 253        echo three > content &&
 254        git commit -a -m three &&
 255        git fetch &&
 256        git merge origin/master || true &&
 257        echo three > content &&
 258        git commit -a --no-edit &&
 259        git push
 260        ) &&
 261
 262        echo three > expected &&
 263        cat bzrrepo/content > actual &&
 264        test_cmp expected actual
 265'
 266
 267cat > expected <<EOF
 268origin/HEAD
 269origin/branch
 270origin/trunk
 271EOF
 272
 273test_expect_success 'proper bzr repo' '
 274        mkdir -p tmp && cd tmp &&
 275        test_when_finished "cd .. && rm -rf tmp" &&
 276
 277        bzr init-repo bzrrepo &&
 278
 279        bzr init bzrrepo/trunk &&
 280        (
 281        cd bzrrepo/trunk &&
 282        echo one >> content &&
 283        bzr add content &&
 284        bzr commit -m one
 285        ) &&
 286
 287        bzr branch bzrrepo/trunk bzrrepo/branch &&
 288        (
 289        cd bzrrepo/branch &&
 290        echo two >> content &&
 291        bzr commit -m one
 292        ) &&
 293
 294        git clone "bzr::$PWD/bzrrepo" gitrepo &&
 295        (
 296        cd gitrepo &&
 297        git for-each-ref --format "%(refname:short)" refs/remotes/origin > ../actual
 298        ) &&
 299
 300        test_cmp ../expected actual
 301'
 302
 303test_expect_success 'strip' '
 304        # Do not imitate this style; always chdir inside a subshell instead
 305        mkdir -p tmp && cd tmp &&
 306        test_when_finished "cd .. && rm -rf tmp" &&
 307
 308        (
 309        bzr init bzrrepo &&
 310        cd bzrrepo &&
 311
 312        echo one >> content &&
 313        bzr add content &&
 314        bzr commit -m one &&
 315
 316        echo two >> content &&
 317        bzr commit -m two
 318        ) &&
 319
 320        git clone "bzr::$PWD/bzrrepo" gitrepo &&
 321
 322        (
 323        cd bzrrepo &&
 324        bzr uncommit --force &&
 325
 326        echo three >> content &&
 327        bzr commit -m three &&
 328
 329        echo four >> content &&
 330        bzr commit -m four &&
 331        bzr log --line | sed -e "s/^[0-9][0-9]*: //" > ../expected
 332        ) &&
 333
 334        (cd gitrepo &&
 335        git fetch &&
 336        git log --format="%an %ad %s" --date=short origin/master > ../actual) &&
 337
 338        test_cmp expected actual
 339'
 340
 341test_done