Merge branch 'sb/gpg-plug-fd-leak'
[git.git] / contrib / remote-helpers / test-bzr.sh
blob70aa8a010a6bc00a131860f2db509e56a7f75797
1 #!/bin/sh
3 # Copyright (c) 2012 Felipe Contreras
6 test_description='Test remote-bzr'
8 . ./test-lib.sh
10 if ! test_have_prereq PYTHON; then
11 skip_all='skipping remote-bzr tests; python not available'
12 test_done
15 if ! "$PYTHON_PATH" -c 'import bzrlib'; then
16 skip_all='skipping remote-bzr tests; bzr not available'
17 test_done
20 cmd='
21 import bzrlib
22 bzrlib.initialize()
23 import bzrlib.plugin
24 bzrlib.plugin.load_plugins()
25 import bzrlib.plugins.fastimport
28 if ! "$PYTHON_PATH" -c "$cmd"; then
29 echo "consider setting BZR_PLUGIN_PATH=$HOME/.bazaar/plugins" 1>&2
30 skip_all='skipping remote-bzr tests; bzr-fastimport not available'
31 test_done
34 check () {
35 (cd $1 &&
36 git log --format='%s' -1 &&
37 git symbolic-ref HEAD) > actual &&
38 (echo $2 &&
39 echo "refs/heads/$3") > expected &&
40 test_cmp expected actual
43 bzr whoami "A U Thor <author@example.com>"
45 test_expect_success 'cloning' '
46 (bzr init bzrrepo &&
47 cd bzrrepo &&
48 echo one > content &&
49 bzr add content &&
50 bzr commit -m one
51 ) &&
53 git clone "bzr::$PWD/bzrrepo" gitrepo &&
54 check gitrepo one master
57 test_expect_success 'pulling' '
58 (cd bzrrepo &&
59 echo two > content &&
60 bzr commit -m two
61 ) &&
63 (cd gitrepo && git pull) &&
65 check gitrepo two master
68 test_expect_success 'pushing' '
69 (cd gitrepo &&
70 echo three > content &&
71 git commit -a -m three &&
72 git push
73 ) &&
75 echo three > expected &&
76 cat bzrrepo/content > actual &&
77 test_cmp expected actual
80 test_expect_success 'roundtrip' '
81 (cd gitrepo &&
82 git pull &&
83 git log --format="%s" -1 origin/master > actual) &&
84 echo three > expected &&
85 test_cmp expected actual &&
87 (cd gitrepo && git push && git pull) &&
89 (cd bzrrepo &&
90 echo four > content &&
91 bzr commit -m four
92 ) &&
94 (cd gitrepo && git pull && git push) &&
96 check gitrepo four master &&
98 (cd gitrepo &&
99 echo five > content &&
100 git commit -a -m five &&
101 git push && git pull
102 ) &&
104 (cd bzrrepo && bzr revert) &&
106 echo five > expected &&
107 cat bzrrepo/content > actual &&
108 test_cmp expected actual
111 cat > expected <<EOF
112 100644 blob 54f9d6da5c91d556e6b54340b1327573073030af content
113 100755 blob 68769579c3eaadbe555379b9c3538e6628bae1eb executable
114 120000 blob 6b584e8ece562ebffc15d38808cd6b98fc3d97ea link
117 test_expect_success 'special modes' '
118 (cd bzrrepo &&
119 echo exec > executable
120 chmod +x executable &&
121 bzr add executable
122 bzr commit -m exec &&
123 ln -s content link
124 bzr add link
125 bzr commit -m link &&
126 mkdir dir &&
127 bzr add dir &&
128 bzr commit -m dir) &&
130 (cd gitrepo &&
131 git pull
132 git ls-tree HEAD > ../actual) &&
134 test_cmp expected actual &&
136 (cd gitrepo &&
137 git cat-file -p HEAD:link > ../actual) &&
139 echo -n content > expected &&
140 test_cmp expected actual
143 test_done