~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_smart_add.py

  • Committer: Vincent Ladeuil
  • Date: 2012-01-18 14:09:19 UTC
  • mto: This revision was merged to the branch mainline in revision 6468.
  • Revision ID: v.ladeuil+lp@free.fr-20120118140919-rlvdrhpc0nq1lbwi
Change set/remove to require a lock for the branch config files.

This means that tests (or any plugin for that matter) do not requires an
explicit lock on the branch anymore to change a single option. This also
means the optimisation becomes "opt-in" and as such won't be as
spectacular as it may be and/or harder to get right (nothing fails
anymore).

This reduces the diff by ~300 lines.

Code/tests that were updating more than one config option is still taking
a lock to at least avoid some IOs and demonstrate the benefits through
the decreased number of hpss calls.

The duplication between BranchStack and BranchOnlyStack will be removed
once the same sharing is in place for local config files, at which point
the Stack class itself may be able to host the changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
        # The first part just logs if appropriate
31
31
        # Now generate a custom id
32
32
        file_id = osutils.safe_file_id(kind + '-'
33
 
                                       + path.raw_path.replace('/', '%'),
 
33
                                       + path.replace('/', '%'),
34
34
                                       warn=False)
35
35
        if self.should_print:
36
36
            self._to_file.write('added %s with id %s\n'
37
 
                                % (path.raw_path, file_id))
 
37
                                % (path, file_id))
38
38
        return file_id
39
39
 
40
40
 
115
115
        self.assertNotEqual(None, c_id)
116
116
        self.base_tree.lock_read()
117
117
        self.addCleanup(self.base_tree.unlock)
118
 
        self.failIf(c_id in self.base_tree)
 
118
        self.assertFalse(self.base_tree.has_id(c_id))
119
119
 
120
120
        d_id = new_tree.path2id('subdir/d')
121
121
        self.assertNotEqual(None, d_id)
122
 
        self.failIf(d_id in self.base_tree)
 
122
        self.assertFalse(self.base_tree.has_id(d_id))
123
123
 
124
124
    def test_copy_existing_dir(self):
125
125
        self.make_base_tree()
140
140
        self.assertNotEqual(None, a_id)
141
141
        self.base_tree.lock_read()
142
142
        self.addCleanup(self.base_tree.unlock)
143
 
        self.failIf(a_id in self.base_tree)
 
143
        self.assertFalse(self.base_tree.has_id(a_id))
144
144
 
145
145
 
146
146
class TestAddActions(tests.TestCase):
152
152
        self.run_action("adding path\n")
153
153
 
154
154
    def run_action(self, output):
155
 
        from bzrlib.mutabletree import _FastPath
156
155
        inv = inventory.Inventory()
157
156
        stdout = StringIO()
158
157
        action = add.AddAction(to_file=stdout, should_print=bool(output))
159
158
 
160
159
        self.apply_redirected(None, stdout, None, action, inv, None,
161
 
            _FastPath('path'), 'file')
 
160
            'path', 'file')
162
161
        self.assertEqual(stdout.getvalue(), output)