/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 tests/test_server.py

Cope with remote branches not being readonly at all better.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2011 Jelmer Vernooij <jelmer@samba.org>
 
2
#
 
3
# This program is free software; you can redistribute it and/or modify
 
4
# it under the terms of the GNU General Public License as published by
 
5
# the Free Software Foundation; either version 2 of the License, or
 
6
# (at your option) any later version.
 
7
#
 
8
# This program is distributed in the hope that it will be useful,
 
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
# GNU General Public License for more details.
 
12
#
 
13
# You should have received a copy of the GNU General Public License
 
14
# along with this program; if not, write to the Free Software
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
16
 
 
17
"""Test for git server."""
 
18
 
 
19
from dulwich.client import TCPGitClient
 
20
from dulwich.repo import Repo
 
21
import threading
 
22
 
 
23
from bzrlib import trace
 
24
from bzrlib.transport import transport_server_registry
 
25
from bzrlib.tests import (
 
26
    TestCase,
 
27
    TestCaseWithTransport,
 
28
    )
 
29
 
 
30
from bzrlib.plugins.git.server import (
 
31
    BzrBackend,
 
32
    TCPGitServer,
 
33
    )
 
34
 
 
35
class TestPresent(TestCase):
 
36
 
 
37
    def test_present(self):
 
38
        # Just test that the server is registered.
 
39
        transport_server_registry.get('git')
 
40
 
 
41
 
 
42
class GitServerTestCase(TestCaseWithTransport):
 
43
 
 
44
    def start_server(self, t):
 
45
        backend = BzrBackend(t)
 
46
        server = TCPGitServer(backend, 'localhost', port=0)
 
47
        self.addCleanup(server.shutdown)
 
48
        thread = threading.Thread(target=server.serve).start()
 
49
        self._server = server
 
50
        _, port = self._server.socket.getsockname()
 
51
        return port
 
52
 
 
53
 
 
54
class TestPlainFetch(GitServerTestCase):
 
55
 
 
56
    def test_fetch_simple(self):
 
57
        wt = self.make_branch_and_tree('t')
 
58
        self.build_tree(['t/foo'])
 
59
        wt.add('foo')
 
60
        wt.commit(message="some data")
 
61
        t = self.get_transport('t')
 
62
        port = self.start_server(t)
 
63
        c = TCPGitClient('localhost', port=port)
 
64
        gitrepo = Repo.init('gitrepo', mkdir=True)
 
65
        refs = c.fetch('/', gitrepo)
 
66
        self.assertEquals(refs.keys(), ["HEAD", "refs/heads/master"])