~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_smart.py

Merge tarball branch that's already with PQM, resolving conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
 
1
# Copyright (C) 2006, 2007 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
16
16
 
17
17
"""Tests for the smart wire/domain protococl."""
18
18
 
 
19
from StringIO import StringIO
 
20
import tempfile
 
21
import tarfile
 
22
 
19
23
from bzrlib import bzrdir, errors, smart, tests
20
24
from bzrlib.smart.request import SmartServerResponse
21
25
import bzrlib.smart.bzrdir
738
742
            SmartServerResponse(('TokenMismatch',)), response)
739
743
 
740
744
 
 
745
class TestSmartServerRepositoryTarball(tests.TestCaseWithTransport):
 
746
 
 
747
    def test_repository_tarball(self):
 
748
        backing = self.get_transport()
 
749
        request = smart.repository.SmartServerRepositoryTarball(backing)
 
750
        repository = self.make_repository('.')
 
751
        # make some extraneous junk in the repository directory which should
 
752
        # not be copied
 
753
        self.build_tree(['.bzr/repository/extra-junk'])
 
754
        response = request.execute(backing.local_abspath(''), 'bz2')
 
755
        self.assertEqual(('ok',), response.args)
 
756
        # body should be a tbz2
 
757
        body_file = StringIO(response.body)
 
758
        body_tar = tarfile.open('body_tar.tbz2', fileobj=body_file,
 
759
            mode='r|bz2')
 
760
        # let's make sure there are some key repository components inside it.
 
761
        # the tarfile returns directories with trailing slashes...
 
762
        names = set([n.rstrip('/') for n in body_tar.getnames()])
 
763
        self.assertTrue('.bzr/repository/lock' in names)
 
764
        self.assertTrue('.bzr/repository/format' in names)
 
765
        self.assertTrue('.bzr/repository/extra-junk' not in names,
 
766
            "extraneous file present in tar file")
 
767
 
 
768
 
741
769
class TestSmartServerIsReadonly(tests.TestCaseWithTransport):
742
770
 
743
771
    def test_is_readonly_no(self):
806
834
            smart.request.request_handlers.get('Repository.unlock'),
807
835
            smart.repository.SmartServerRepositoryUnlock)
808
836
        self.assertEqual(
 
837
            smart.request.request_handlers.get('Repository.tarball'),
 
838
            smart.repository.SmartServerRepositoryTarball)
 
839
        self.assertEqual(
809
840
            smart.request.request_handlers.get('Transport.is_readonly'),
810
841
            smart.request.SmartServerIsReadonly)