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

  • Committer: Andrew Bennetts
  • Date: 2008-01-21 00:46:32 UTC
  • mfrom: (3193 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3194.
  • Revision ID: andrew.bennetts@canonical.com-20080121004632-wvpox6g9j7czn4vk
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
import tarfile
30
30
 
31
31
from bzrlib import bzrdir, errors, pack, smart, tests
32
 
from bzrlib.smart.request import SmartServerResponse
 
32
from bzrlib.smart.request import (
 
33
    FailedSmartServerResponse,
 
34
    SmartServerResponse,
 
35
    SuccessfulSmartServerResponse,
 
36
    )
33
37
import bzrlib.smart.bzrdir
34
38
import bzrlib.smart.branch
35
39
import bzrlib.smart.repository
814
818
            response)
815
819
 
816
820
 
 
821
class TestSmartServerRepositoryStreamRevisionsChunked(tests.TestCaseWithTransport):
 
822
 
 
823
    def test_fetch_revisions(self):
 
824
        backing = self.get_transport()
 
825
        request = smart.repository.SmartServerRepositoryStreamRevisionsChunked(
 
826
            backing)
 
827
        tree = self.make_branch_and_memory_tree('.')
 
828
        tree.lock_write()
 
829
        tree.add('')
 
830
        rev_id1_utf8 = u'\xc8'.encode('utf-8')
 
831
        rev_id2_utf8 = u'\xc9'.encode('utf-8')
 
832
        tree.commit('1st commit', rev_id=rev_id1_utf8)
 
833
        tree.commit('2nd commit', rev_id=rev_id2_utf8)
 
834
        tree.unlock()
 
835
 
 
836
        response = request.execute(backing.local_abspath(''))
 
837
        self.assertEqual(None, response)
 
838
        response = request.do_body("%s\n%s\n1" % (rev_id2_utf8, rev_id1_utf8))
 
839
        self.assertEqual(('ok',), response.args)
 
840
        from cStringIO import StringIO
 
841
        parser = pack.ContainerPushParser()
 
842
        names = []
 
843
        for stream_bytes in response.body_stream:
 
844
            parser.accept_bytes(stream_bytes)
 
845
            for [name], record_bytes in parser.read_pending_records():
 
846
                names.append(name)
 
847
                # The bytes should be a valid bencoded string.
 
848
                bencode.bdecode(record_bytes)
 
849
                # XXX: assert that the bencoded knit records have the right
 
850
                # contents?
 
851
        
 
852
    def test_no_such_revision_error(self):
 
853
        backing = self.get_transport()
 
854
        request = smart.repository.SmartServerRepositoryStreamRevisionsChunked(
 
855
            backing)
 
856
        repo = self.make_repository('.')
 
857
        rev_id1_utf8 = u'\xc8'.encode('utf-8')
 
858
        response = request.execute(backing.local_abspath(''))
 
859
        self.assertEqual(None, response)
 
860
        response = request.do_body("%s\n\n1" % (rev_id1_utf8,))
 
861
        self.assertEqual(
 
862
            FailedSmartServerResponse(('NoSuchRevision', )),
 
863
            response)
 
864
 
 
865
 
817
866
class TestSmartServerIsReadonly(tests.TestCaseWithTransport):
818
867
 
819
868
    def test_is_readonly_no(self):
867
916
            smart.request.request_handlers.get('Repository.gather_stats'),
868
917
            smart.repository.SmartServerRepositoryGatherStats)
869
918
        self.assertEqual(
 
919
            smart.request.request_handlers.get('Repository.get_parent_map'),
 
920
            smart.repository.SmartServerRepositoryGetParentMap)
 
921
        self.assertEqual(
870
922
            smart.request.request_handlers.get(
871
923
                'Repository.get_revision_graph'),
872
924
            smart.repository.SmartServerRepositoryGetRevisionGraph)
880
932
            smart.request.request_handlers.get('Repository.lock_write'),
881
933
            smart.repository.SmartServerRepositoryLockWrite)
882
934
        self.assertEqual(
883
 
            smart.request.request_handlers.get(
884
 
                'Repository.stream_knit_data_for_revisions'),
885
 
            smart.repository.SmartServerRepositoryStreamKnitDataForRevisions)
886
 
        self.assertEqual(
887
935
            smart.request.request_handlers.get('Repository.tarball'),
888
936
            smart.repository.SmartServerRepositoryTarball)
889
937
        self.assertEqual(