~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_dirstate.py

  • Committer: Ross Lagerwall
  • Date: 2012-08-07 06:32:51 UTC
  • mto: (6437.63.5 2.5)
  • mto: This revision was merged to the branch mainline in revision 6558.
  • Revision ID: rosslagerwall@gmail.com-20120807063251-x9p03ghg2ws8oqjc
Add bzrlib/locale to .bzrignore

bzrlib/locale is generated with ./setup.py build_mo which is in turn called
by ./setup.py build

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
import tempfile
21
21
 
22
22
from bzrlib import (
23
 
    controldir,
 
23
    bzrdir,
24
24
    dirstate,
25
25
    errors,
26
26
    inventory,
31
31
    tests,
32
32
    workingtree_4,
33
33
    )
 
34
from bzrlib.transport import memory
34
35
from bzrlib.tests import (
35
36
    features,
36
37
    test_osutils,
64
65
    _native_to_unicode = None # Not used yet
65
66
 
66
67
    def setUp(self):
67
 
        super(TestCaseWithDirState, self).setUp()
 
68
        tests.TestCaseWithTransport.setUp(self)
 
69
 
68
70
        self.overrideAttr(osutils,
69
71
                          '_selected_dir_reader', self._dir_reader_class())
70
72
 
754
756
    def test_set_state_from_inventory_no_content_no_parents(self):
755
757
        # setting the current inventory is a slow but important api to support.
756
758
        tree1, revid1 = self.make_minimal_tree()
757
 
        inv = tree1.root_inventory
 
759
        inv = tree1.inventory
758
760
        root_id = inv.path2id('')
759
761
        expected_result = [], [
760
762
            (('', '', root_id), [
775
777
 
776
778
    def test_set_state_from_scratch_no_parents(self):
777
779
        tree1, revid1 = self.make_minimal_tree()
778
 
        inv = tree1.root_inventory
 
780
        inv = tree1.inventory
779
781
        root_id = inv.path2id('')
780
782
        expected_result = [], [
781
783
            (('', '', root_id), [
796
798
 
797
799
    def test_set_state_from_scratch_identical_parent(self):
798
800
        tree1, revid1 = self.make_minimal_tree()
799
 
        inv = tree1.root_inventory
 
801
        inv = tree1.inventory
800
802
        root_id = inv.path2id('')
801
803
        rev_tree1 = tree1.branch.repository.revision_tree(revid1)
802
804
        d_entry = ('d', '', 0, False, dirstate.DirState.NULLSTAT)
854
856
                tree._dirstate._get_entry(0, 'foo-id'))
855
857
 
856
858
            # extract the inventory, and add something to it
857
 
            inv = tree._get_root_inventory()
 
859
            inv = tree._get_inventory()
858
860
            # should see the file we poked in...
859
861
            self.assertTrue(inv.has_id('foo-id'))
860
862
            self.assertTrue(inv.has_filename('foo'))
890
892
                      ['a-id', 'b-id', 'a-b-id', 'foo-id', 'bar-id'])
891
893
            tree1.commit('rev1', rev_id='rev1')
892
894
            root_id = tree1.get_root_id()
893
 
            inv = tree1.root_inventory
 
895
            inv = tree1.inventory
894
896
        finally:
895
897
            tree1.unlock()
896
898
        expected_result1 = [('', '', root_id, 'd'),
1324
1326
        try:
1325
1327
            tree1.add(['b'], ['b-id'])
1326
1328
            root_id = tree1.get_root_id()
1327
 
            inv = tree1.root_inventory
 
1329
            inv = tree1.inventory
1328
1330
            state = dirstate.DirState.initialize('dirstate')
1329
1331
            try:
1330
1332
                # Set the initial state with 'b'
2208
2210
class TestDirstateTreeReference(TestCaseWithDirState):
2209
2211
 
2210
2212
    def test_reference_revision_is_none(self):
2211
 
        tree = self.make_branch_and_tree('tree', format='development-subtree')
 
2213
        tree = self.make_branch_and_tree('tree', format='dirstate-with-subtree')
2212
2214
        subtree = self.make_branch_and_tree('tree/subtree',
2213
 
                            format='development-subtree')
 
2215
                            format='dirstate-with-subtree')
2214
2216
        subtree.set_root_id('subtree')
2215
2217
        tree.add_reference(subtree)
2216
2218
        tree.add('subtree')
2442
2444
    """A minimal api to get InventoryRevisionTree to work."""
2443
2445
 
2444
2446
    def __init__(self):
2445
 
        default_format = controldir.format_registry.make_bzrdir('default')
 
2447
        default_format = bzrdir.format_registry.make_bzrdir('default')
2446
2448
        self._format = default_format.repository_format
2447
2449
 
2448
2450
    def lock_read(self):
2478
2480
    def create_tree_from_shape(self, rev_id, shape):
2479
2481
        dir_ids = {'': 'root-id'}
2480
2482
        inv = inventory.Inventory('root-id', rev_id)
2481
 
        for info in shape:
2482
 
            if len(info) == 2:
2483
 
                path, file_id = info
2484
 
                ie_rev_id = rev_id
2485
 
            else:
2486
 
                path, file_id, ie_rev_id = info
 
2483
        for path, file_id in shape:
2487
2484
            if path == '':
2488
2485
                # Replace the root entry
2489
2486
                del inv._byid[inv.root.file_id]
2491
2488
                inv._byid[file_id] = inv.root
2492
2489
                dir_ids[''] = file_id
2493
2490
                continue
2494
 
            inv.add(self.path_to_ie(path, file_id, ie_rev_id, dir_ids))
 
2491
            inv.add(self.path_to_ie(path, file_id, rev_id, dir_ids))
2495
2492
        return revisiontree.InventoryRevisionTree(_Repo(), inv, rev_id)
2496
2493
 
2497
2494
    def create_empty_dirstate(self):
2530
2527
        basis_tree = self.create_tree_from_shape('basis', basis)
2531
2528
        target_tree = self.create_tree_from_shape('target', target)
2532
2529
        state = self.create_empty_dirstate()
2533
 
        state.set_state_from_scratch(active_tree.root_inventory,
 
2530
        state.set_state_from_scratch(active_tree.inventory,
2534
2531
            [('basis', basis_tree)], [])
2535
 
        delta = target_tree.root_inventory._make_delta(
2536
 
            basis_tree.root_inventory)
 
2532
        delta = target_tree.inventory._make_delta(basis_tree.inventory)
2537
2533
        state.update_basis_by_delta(delta, 'target')
2538
2534
        state._validate()
2539
2535
        dirstate_tree = workingtree_4.DirStateRevisionTree(state,
2544
2540
        # And the dirblock state should be identical to the state if we created
2545
2541
        # it from scratch.
2546
2542
        state2 = self.create_empty_dirstate()
2547
 
        state2.set_state_from_scratch(active_tree.root_inventory,
 
2543
        state2.set_state_from_scratch(active_tree.inventory,
2548
2544
            [('target', target_tree)], [])
2549
2545
        self.assertEqual(state2._dirblocks, state._dirblocks)
2550
2546
        return state
2565
2561
        basis_tree = self.create_tree_from_shape('basis', basis)
2566
2562
        inv_delta = self.create_inv_delta(delta, 'target')
2567
2563
        state = self.create_empty_dirstate()
2568
 
        state.set_state_from_scratch(active_tree.root_inventory,
 
2564
        state.set_state_from_scratch(active_tree.inventory,
2569
2565
            [('basis', basis_tree)], [])
2570
2566
        self.assertRaises(errors.InconsistentDelta,
2571
2567
            state.update_basis_by_delta, inv_delta, 'target')
2620
2616
            target=[('file', 'file-id')],
2621
2617
            )
2622
2618
 
2623
 
    def test_add_file_in_empty_dir_not_matching_active_state(self):
2624
 
        state = self.assertUpdate(
2625
 
                active=[],
2626
 
                basis=[('dir/', 'dir-id')],
2627
 
                target=[('dir/', 'dir-id', 'basis'), ('dir/file', 'file-id')],
2628
 
                )
2629
 
 
2630
2619
    def test_add_file_missing_in_active_state(self):
2631
2620
        state = self.assertUpdate(
2632
2621
            active=[],