~ubuntu-branches/ubuntu/karmic/bzr/karmic-proposed

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_repository/test_repository.py

  • Committer: Bazaar Package Importer
  • Author(s): Jelmer Vernooij
  • Date: 2009-04-11 14:25:12 UTC
  • mfrom: (1.1.51 upstream) (3.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090411142512-jomeween5l8etlrm
Add missing dependency on zlib development library. (Closes:
#523595)

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
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
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""Tests for repository implementations - tests a repository format."""
18
18
 
31
31
    )
32
32
from bzrlib.branch import BzrBranchFormat6
33
33
from bzrlib.delta import TreeDelta
34
 
from bzrlib.inventory import Inventory, InventoryDirectory
 
34
from bzrlib.inventory import CommonInventory, Inventory, InventoryDirectory
35
35
from bzrlib.repofmt.weaverepo import (
36
36
    RepositoryFormat5,
37
37
    RepositoryFormat6,
39
39
    )
40
40
from bzrlib.revision import NULL_REVISION, Revision
41
41
from bzrlib.smart import server
42
 
from bzrlib.symbol_versioning import one_two, one_three, one_four
43
42
from bzrlib.tests import (
44
43
    KnownFailure,
45
44
    TestCaseWithTransport,
78
77
        repo = tree.branch.repository
79
78
        self.assertTrue(repo._format._fetch_uses_deltas in (True, False))
80
79
 
 
80
    def test_attribute_fast_deltas(self):
 
81
        """Test the format.fast_deltas attribute."""
 
82
        tree = self.make_branch_and_tree('tree')
 
83
        repo = tree.branch.repository
 
84
        self.assertTrue(repo._format.fast_deltas in (True, False))
 
85
 
81
86
    def test_attribute__fetch_reconcile(self):
82
87
        """Test the the _fetch_reconcile attribute."""
83
88
        tree = self.make_branch_and_tree('tree')
244
249
        invs = tree.branch.repository.iter_inventories(revs)
245
250
        for rev_id, inv in zip(revs, invs):
246
251
            self.assertEqual(rev_id, inv.revision_id)
247
 
            self.assertIsInstance(inv, Inventory)
 
252
            self.assertIsInstance(inv, CommonInventory)
248
253
 
249
254
    def test_supports_rich_root(self):
250
255
        tree = self.make_branch_and_tree('a')
251
256
        tree.commit('')
252
257
        second_revision = tree.commit('')
253
 
        inv = tree.branch.repository.revision_tree(second_revision).inventory
 
258
        rev_tree = tree.branch.repository.revision_tree(second_revision)
 
259
        rev_tree.lock_read()
 
260
        self.addCleanup(rev_tree.unlock)
 
261
        inv = rev_tree.inventory
254
262
        rich_root = (inv.root.revision != second_revision)
255
263
        self.assertEqual(rich_root,
256
264
                         tree.branch.repository.supports_rich_root())
358
366
        wt.set_root_id('fixed-root')
359
367
        wt.commit('lala!', rev_id='revision-1', allow_pointless=True)
360
368
        tree = wt.branch.repository.revision_tree('revision-1')
361
 
        self.assertEqual('revision-1', tree.inventory.root.revision)
362
 
        expected = InventoryDirectory('fixed-root', '', None)
363
 
        expected.revision = 'revision-1'
364
 
        self.assertEqual([('', 'V', 'directory', 'fixed-root', expected)],
365
 
                         list(tree.list_files(include_root=True)))
 
369
        tree.lock_read()
 
370
        try:
 
371
            self.assertEqual('revision-1', tree.inventory.root.revision)
 
372
            expected = InventoryDirectory('fixed-root', '', None)
 
373
            expected.revision = 'revision-1'
 
374
            self.assertEqual([('', 'V', 'directory', 'fixed-root', expected)],
 
375
                             list(tree.list_files(include_root=True)))
 
376
        finally:
 
377
            tree.unlock()
366
378
        tree = self.callDeprecated(['NULL_REVISION should be used for the null'
367
379
            ' revision instead of None, as of bzr 0.91.'],
368
380
            wt.branch.repository.revision_tree, None)
369
 
        self.assertEqual([], list(tree.list_files(include_root=True)))
 
381
        tree.lock_read()
 
382
        try:
 
383
            self.assertEqual([], list(tree.list_files(include_root=True)))
 
384
        finally:
 
385
            tree.unlock()
370
386
        tree = wt.branch.repository.revision_tree(NULL_REVISION)
371
 
        self.assertEqual([], list(tree.list_files(include_root=True)))
 
387
        tree.lock_read()
 
388
        try:
 
389
            self.assertEqual([], list(tree.list_files(include_root=True)))
 
390
        finally:
 
391
            tree.unlock()
372
392
 
373
393
    def test_get_revision_delta(self):
374
394
        tree_a = self.make_branch_and_tree('a')
386
406
        self.assertIsInstance(delta, TreeDelta)
387
407
        self.assertEqual([('vla', 'file2', 'file')], delta.added)
388
408
 
 
409
    def test_get_revision_delta_filtered(self):
 
410
        tree_a = self.make_branch_and_tree('a')
 
411
        self.build_tree(['a/foo', 'a/bar/', 'a/bar/b1', 'a/bar/b2', 'a/baz'])
 
412
        tree_a.add(['foo', 'bar', 'bar/b1', 'bar/b2', 'baz'],
 
413
                   ['foo-id', 'bar-id', 'b1-id', 'b2-id', 'baz-id'])
 
414
        tree_a.commit('rev1', rev_id='rev1')
 
415
        self.build_tree(['a/bar/b3'])
 
416
        tree_a.add('bar/b3', 'b3-id')
 
417
        tree_a.commit('rev2', rev_id='rev2')
 
418
 
 
419
        # Test multiple files
 
420
        delta = tree_a.branch.repository.get_revision_delta('rev1',
 
421
            specific_fileids=['foo-id', 'baz-id'])
 
422
        self.assertIsInstance(delta, TreeDelta)
 
423
        self.assertEqual([
 
424
            ('baz', 'baz-id', 'file'),
 
425
            ('foo', 'foo-id', 'file'),
 
426
            ], delta.added)
 
427
        # Test a directory
 
428
        delta = tree_a.branch.repository.get_revision_delta('rev1',
 
429
            specific_fileids=['bar-id'])
 
430
        self.assertIsInstance(delta, TreeDelta)
 
431
        self.assertEqual([
 
432
            ('bar', 'bar-id', 'directory'),
 
433
            ('bar/b1', 'b1-id', 'file'),
 
434
            ('bar/b2', 'b2-id', 'file'),
 
435
            ], delta.added)
 
436
        # Test a file in a directory
 
437
        delta = tree_a.branch.repository.get_revision_delta('rev1',
 
438
            specific_fileids=['b2-id'])
 
439
        self.assertIsInstance(delta, TreeDelta)
 
440
        self.assertEqual([
 
441
            ('bar', 'bar-id', 'directory'),
 
442
            ('bar/b2', 'b2-id', 'file'),
 
443
            ], delta.added)
 
444
        # Try another revision
 
445
        delta = tree_a.branch.repository.get_revision_delta('rev2',
 
446
                specific_fileids=['b3-id'])
 
447
        self.assertIsInstance(delta, TreeDelta)
 
448
        self.assertEqual([
 
449
            ('bar', 'bar-id', 'directory'),
 
450
            ('bar/b3', 'b3-id', 'file'),
 
451
            ], delta.added)
 
452
        delta = tree_a.branch.repository.get_revision_delta('rev2',
 
453
                specific_fileids=['foo-id'])
 
454
        self.assertIsInstance(delta, TreeDelta)
 
455
        self.assertEqual([], delta.added)
 
456
 
389
457
    def test_clone_bzrdir_repository_revision(self):
390
458
        # make a repository with some revisions,
391
459
        # and clone it, this should not have unreferenced revisions.
518
586
        tree = self.make_branch_and_tree('.')
519
587
        tree.commit('message', rev_id='rev_id')
520
588
        rev_tree = tree.branch.repository.revision_tree(tree.last_revision())
 
589
        rev_tree.lock_read()
 
590
        self.addCleanup(rev_tree.unlock)
521
591
        self.assertEqual('rev_id', rev_tree.inventory.root.revision)
522
592
 
523
593
    def test_upgrade_from_format4(self):
691
761
                         repo.get_signature_text('A'))
692
762
 
693
763
    def test_add_revision_inventory_sha1(self):
694
 
        repo = self.make_repository('repo')
695
764
        inv = Inventory(revision_id='A')
696
765
        inv.root.revision = 'A'
697
766
        inv.root.file_id = 'fixed-root'
 
767
        # Insert the inventory on its own to an identical repository, to get
 
768
        # its sha1.
 
769
        reference_repo = self.make_repository('reference_repo')
 
770
        reference_repo.lock_write()
 
771
        reference_repo.start_write_group()
 
772
        inv_sha1 = reference_repo.add_inventory('A', inv, [])
 
773
        reference_repo.abort_write_group()
 
774
        reference_repo.unlock()
 
775
        # Now insert a revision with this inventory, and it should get the same
 
776
        # sha1.
 
777
        repo = self.make_repository('repo')
698
778
        repo.lock_write()
699
779
        repo.start_write_group()
700
780
        repo.add_revision('A', Revision('A', committer='B', timestamp=0,
702
782
        repo.commit_write_group()
703
783
        repo.unlock()
704
784
        repo.lock_read()
705
 
        self.assertEquals(osutils.sha_string(
706
 
            repo._serializer.write_inventory_to_string(inv)),
707
 
            repo.get_revision('A').inventory_sha1)
 
785
        self.assertEquals(inv_sha1, repo.get_revision('A').inventory_sha1)
708
786
        repo.unlock()
709
787
 
710
788
    def test_install_revisions(self):