~toddy/bzr/bzr.i18n

« back to all changes in this revision

Viewing changes to bzrlib/tests/interrepository_implementations/test_interrepository.py

  • Committer: Tobias Toedter
  • Date: 2008-02-10 08:01:48 UTC
  • mfrom: (2438.1.783 +trunk)
  • Revision ID: t.toedter@gmx.net-20080210080148-bg5rh61oq2zk2xw3
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
import bzrlib.repofmt.weaverepo as weaverepo
33
33
import bzrlib.repository as repository
34
34
from bzrlib.revision import NULL_REVISION, Revision
 
35
from bzrlib.symbol_versioning import one_two
35
36
from bzrlib.tests import (
36
37
    TestCase,
37
38
    TestCaseWithTransport,
262
263
        to_repo = self.make_to_repository('to')
263
264
        to_repo.fetch(from_tree.branch.repository, from_tree.get_parent_ids()[0])
264
265
 
265
 
    def test_fetch_no_inventory_revision(self):
266
 
        """Old inventories lack revision_ids, so simulate this"""
267
 
        from_tree = self.make_branch_and_tree('tree')
268
 
        if sys.platform == 'win32':
269
 
            from_repo = from_tree.branch.repository
270
 
            check_repo_format_for_funky_id_on_win32(from_repo)
271
 
        self.build_tree(['tree/filename'])
272
 
        from_tree.add('filename', 'funky-chars<>%&;"\'')
273
 
        from_tree.commit('commit filename')
274
 
        old_deserialise = from_tree.branch.repository.deserialise_inventory
275
 
        def deserialise(revision_id, text):
276
 
            inventory = old_deserialise(revision_id, text)
277
 
            inventory.revision_id = None
278
 
            return inventory
279
 
        from_tree.branch.repository.deserialise_inventory = deserialise
280
 
        to_repo = self.make_to_repository('to')
281
 
        to_repo.fetch(from_tree.branch.repository, from_tree.last_revision())
282
 
 
283
266
 
284
267
class TestCaseWithComplexRepository(TestCaseWithInterRepository):
285
268
 
305
288
        tree_a.branch.repository.commit_write_group()
306
289
        tree_a.branch.repository.unlock()
307
290
 
308
 
    def test_missing_revision_ids(self):
 
291
    def test_missing_revision_ids_is_deprecated(self):
 
292
        repo_b = self.make_to_repository('rev1_only')
 
293
        repo_a = self.bzrdir.open_repository()
 
294
        repo_b.fetch(repo_a, 'rev1')
 
295
        # check the test will be valid
 
296
        self.assertFalse(repo_b.has_revision('rev2'))
 
297
        self.assertEqual(['rev2'],
 
298
            self.applyDeprecated(one_two, repo_b.missing_revision_ids, repo_a))
 
299
        inter = repository.InterRepository.get(repo_a, repo_b)
 
300
        self.assertEqual(['rev2'],
 
301
            self.applyDeprecated(one_two, inter.missing_revision_ids, None,
 
302
                True))
 
303
 
 
304
    def test_search_missing_revision_ids(self):
309
305
        # revision ids in repository A but not B are returned, fake ones
310
306
        # are stripped. (fake meaning no revision object, but an inventory 
311
307
        # as some formats keyed off inventory data in the past.)
315
311
        repo_b.fetch(repo_a, 'rev1')
316
312
        # check the test will be valid
317
313
        self.assertFalse(repo_b.has_revision('rev2'))
318
 
        self.assertEqual(['rev2'],
319
 
                         repo_b.missing_revision_ids(repo_a))
 
314
        result = repo_b.search_missing_revision_ids(repo_a)
 
315
        self.assertEqual(set(['rev2']), result.get_keys())
 
316
        self.assertEqual((set(['rev2']), set(['rev1']), 1), result.get_recipe())
320
317
 
321
 
    def test_missing_revision_ids_absent_requested_raises(self):
 
318
    def test_search_missing_revision_ids_absent_requested_raises(self):
322
319
        # Asking for missing revisions with a tip that is itself absent in the
323
320
        # source raises NoSuchRevision.
324
321
        repo_b = self.make_to_repository('target')
327
324
        self.assertFalse(repo_a.has_revision('pizza'))
328
325
        self.assertFalse(repo_b.has_revision('pizza'))
329
326
        # Asking specifically for an absent revision errors.
330
 
        self.assertRaises(NoSuchRevision, repo_b.missing_revision_ids, repo_a,
 
327
        self.assertRaises(NoSuchRevision, repo_b.search_missing_revision_ids, repo_a,
331
328
            revision_id='pizza', find_ghosts=True)
332
 
        self.assertRaises(NoSuchRevision, repo_b.missing_revision_ids, repo_a,
 
329
        self.assertRaises(NoSuchRevision, repo_b.search_missing_revision_ids, repo_a,
333
330
            revision_id='pizza', find_ghosts=False)
334
331
 
335
 
    def test_missing_revision_ids_revision_limited(self):
 
332
    def test_search_missing_revision_ids_revision_limited(self):
336
333
        # revision ids in repository A that are not referenced by the
337
334
        # requested revision are not returned.
338
335
        # make a repository to compare against that is empty
339
336
        repo_b = self.make_to_repository('empty')
340
337
        repo_a = self.bzrdir.open_repository()
341
 
        self.assertEqual(['rev1'],
342
 
                         repo_b.missing_revision_ids(repo_a, revision_id='rev1'))
 
338
        result = repo_b.search_missing_revision_ids(repo_a, revision_id='rev1')
 
339
        self.assertEqual(set(['rev1']), result.get_keys())
 
340
        self.assertEqual((set(['rev1']), set([NULL_REVISION]), 1),
 
341
            result.get_recipe())
343
342
        
344
343
    def test_fetch_fetches_signatures_too(self):
345
344
        from_repo = self.bzrdir.open_repository()