/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/git/tests/test_git_remote_helper.py

  • Committer: Jelmer Vernooij
  • Date: 2019-06-02 02:35:46 UTC
  • mfrom: (7309 work)
  • mto: This revision was merged to the branch mainline in revision 7319.
  • Revision ID: jelmer@jelmer.uk-20190602023546-lqco868tnv26d8ow
merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
 
24
24
from io import BytesIO
25
25
import os
 
26
import subprocess
 
27
import sys
26
28
 
27
29
from dulwich.repo import Repo
28
30
 
29
31
from ...tests import (
30
32
    TestCaseWithTransport,
31
 
    TestSkipped,
32
33
    )
 
34
from ...tests.features import PathFeature
33
35
 
34
36
from ..object_store import get_object_store
35
37
from ..git_remote_helper import (
36
38
    RemoteHelper,
37
39
    open_local_dir,
38
 
    fastexporter,
39
40
    fetch,
40
41
    )
41
42
 
48
49
        return object_store._lookup_revision_sha1(bzr_revid)
49
50
 
50
51
 
 
52
git_remote_bzr_path = os.path.abspath(
 
53
    os.path.join(os.path.dirname(__file__), '..', 'git-remote-bzr'))
 
54
git_remote_bzr_feature = PathFeature(git_remote_bzr_path)
 
55
 
 
56
 
51
57
class OpenLocalDirTests(TestCaseWithTransport):
52
58
 
53
59
    def test_from_env_dir(self):
64
70
 
65
71
    def setUp(self):
66
72
        super(FetchTests, self).setUp()
67
 
        self.local_dir = self.make_branch_and_tree('local', format='git').controldir
 
73
        self.local_dir = self.make_branch_and_tree(
 
74
            'local', format='git').controldir
68
75
        self.remote_tree = self.make_branch_and_tree('remote')
69
76
        self.remote_dir = self.remote_tree.controldir
70
77
        self.shortname = 'bzr'
87
94
        self.assertEqual(out, b"\n")
88
95
        r = Repo('local')
89
96
        self.assertTrue(git_sha1 in r.object_store)
90
 
        self.assertEqual({
91
 
            }, r.get_refs())
 
97
        self.assertEqual({}, r.get_refs())
 
98
 
 
99
 
 
100
class ExecuteRemoteHelperTests(TestCaseWithTransport):
 
101
 
 
102
    def test_run(self):
 
103
        self.requireFeature(git_remote_bzr_feature)
 
104
        local_dir = self.make_branch_and_tree('local', format='git').controldir
 
105
        local_path = local_dir.control_transport.local_abspath('.')
 
106
        remote_tree = self.make_branch_and_tree('remote')
 
107
        remote_dir = remote_tree.controldir
 
108
        shortname = 'bzr'
 
109
        env = dict(os.environ)
 
110
        env['GIT_DIR'] = local_path
 
111
        env['PYTHONPATH'] = ':'.join(sys.path)
 
112
        p = subprocess.Popen(
 
113
            [sys.executable, git_remote_bzr_path, local_path, remote_dir.user_url],
 
114
            stdin=subprocess.PIPE, stdout=subprocess.PIPE,
 
115
            stderr=subprocess.PIPE, env=env)
 
116
        (out, err) = p.communicate(b'capabilities\n')
 
117
        lines = out.splitlines()
 
118
        self.assertIn(b'push', lines, "no 'push' in %r, error: %r" % (lines, err))
 
119
        self.assertEqual(b'', err)
92
120
 
93
121
 
94
122
class RemoteHelperTests(TestCaseWithTransport):
95
123
 
96
124
    def setUp(self):
97
125
        super(RemoteHelperTests, self).setUp()
98
 
        self.local_dir = self.make_branch_and_tree('local', format='git').controldir
 
126
        self.local_dir = self.make_branch_and_tree(
 
127
            'local', format='git').controldir
99
128
        self.remote_tree = self.make_branch_and_tree('remote')
100
129
        self.remote_dir = self.remote_tree.controldir
101
130
        self.shortname = 'bzr'
102
 
        self.helper = RemoteHelper(self.local_dir, self.shortname, self.remote_dir)
 
131
        self.helper = RemoteHelper(
 
132
            self.local_dir, self.shortname, self.remote_dir)
103
133
 
104
134
    def test_capabilities(self):
105
135
        f = BytesIO()
106
136
        self.helper.cmd_capabilities(f, [])
107
137
        capabs = f.getvalue()
108
138
        base = b"fetch\noption\npush\n"
109
 
        self.assertTrue(capabs in (base+b"\n", base+b"import\n\n"), capabs)
 
139
        self.assertTrue(capabs in (base + b"\n", base + b"import\n\n"), capabs)
110
140
 
111
141
    def test_option(self):
112
142
        f = BytesIO()
125
155
        self.build_tree_contents([("remote/afile", b"somecontent")])
126
156
        self.remote_tree.add(["afile"])
127
157
        self.remote_tree.commit(b"A commit message", timestamp=1330445983,
128
 
            timezone=0, committer=b'Somebody <jrandom@example.com>')
 
158
                                timezone=0, committer=b'Somebody <jrandom@example.com>')
129
159
        f = BytesIO()
130
160
        self.helper.cmd_import(f, ["import", "refs/heads/master"])
131
161
        self.assertEqual(
 
162
            b'reset refs/heads/master\n'
132
163
            b'commit refs/heads/master\n'
133
164
            b'mark :1\n'
134
165
            b'committer Somebody <jrandom@example.com> 1330445983 +0000\n'