~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_smart_add.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-09-03 22:30:56 UTC
  • mfrom: (3644.2.13 index_builder_cleanup)
  • Revision ID: pqm@pqm.ubuntu.com-20080903223056-b108iytb38xkznci
(jam) Streamline BTreeBuilder.add_node et al to make btree creation
        faster.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2007, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
from cStringIO import StringIO
18
18
 
19
 
from bzrlib import (
20
 
    add,
21
 
    inventory,
22
 
    osutils,
23
 
    tests,
 
19
from bzrlib import osutils
 
20
from bzrlib.add import (
 
21
    AddAction,
 
22
    AddFromBaseAction,
24
23
    )
25
 
 
26
 
 
27
 
class AddCustomIDAction(add.AddAction):
 
24
from bzrlib.tests import TestCase, TestCaseWithTransport
 
25
from bzrlib.inventory import Inventory
 
26
 
 
27
 
 
28
class AddCustomIDAction(AddAction):
28
29
 
29
30
    def __call__(self, inv, parent_ie, path, kind):
30
31
        # The first part just logs if appropriate
31
32
        # Now generate a custom id
32
33
        file_id = osutils.safe_file_id(kind + '-'
33
 
                                       + path.replace('/', '%'),
 
34
                                       + path.raw_path.replace('/', '%'),
34
35
                                       warn=False)
35
36
        if self.should_print:
36
37
            self._to_file.write('added %s with id %s\n'
37
 
                                % (path, file_id))
 
38
                                % (path.raw_path, file_id))
38
39
        return file_id
39
40
 
40
41
 
41
 
class TestAddFrom(tests.TestCaseWithTransport):
 
42
class TestAddFrom(TestCaseWithTransport):
42
43
    """Tests for AddFromBaseAction"""
43
44
 
44
45
    def make_base_tree(self):
59
60
        try:
60
61
            new_tree.lock_write()
61
62
            try:
62
 
                action = add.AddFromBaseAction(base_tree, base_path,
63
 
                                               to_file=to_file,
64
 
                                               should_print=should_print)
 
63
                action = AddFromBaseAction(base_tree, base_path,
 
64
                                           to_file=to_file,
 
65
                                           should_print=should_print)
65
66
                new_tree.smart_add(file_list, action=action)
66
67
            finally:
67
68
                new_tree.unlock()
115
116
        self.assertNotEqual(None, c_id)
116
117
        self.base_tree.lock_read()
117
118
        self.addCleanup(self.base_tree.unlock)
118
 
        self.assertFalse(self.base_tree.has_id(c_id))
 
119
        self.failIf(c_id in self.base_tree)
119
120
 
120
121
        d_id = new_tree.path2id('subdir/d')
121
122
        self.assertNotEqual(None, d_id)
122
 
        self.assertFalse(self.base_tree.has_id(d_id))
 
123
        self.failIf(d_id in self.base_tree)
123
124
 
124
125
    def test_copy_existing_dir(self):
125
126
        self.make_base_tree()
140
141
        self.assertNotEqual(None, a_id)
141
142
        self.base_tree.lock_read()
142
143
        self.addCleanup(self.base_tree.unlock)
143
 
        self.assertFalse(self.base_tree.has_id(a_id))
144
 
 
145
 
 
146
 
class TestAddActions(tests.TestCase):
 
144
        self.failIf(a_id in self.base_tree)
 
145
 
 
146
 
 
147
class TestAddActions(TestCase):
147
148
 
148
149
    def test_quiet(self):
149
150
        self.run_action("")
150
151
 
151
152
    def test__print(self):
152
 
        self.run_action("adding path\n")
 
153
        self.run_action("added path\n")
153
154
 
154
155
    def run_action(self, output):
155
 
        inv = inventory.Inventory()
 
156
        from bzrlib.add import AddAction
 
157
        from bzrlib.mutabletree import _FastPath
 
158
        inv = Inventory()
156
159
        stdout = StringIO()
157
 
        action = add.AddAction(to_file=stdout, should_print=bool(output))
 
160
        action = AddAction(to_file=stdout, should_print=bool(output))
158
161
 
159
162
        self.apply_redirected(None, stdout, None, action, inv, None,
160
 
            'path', 'file')
 
163
            _FastPath('path'), 'file')
161
164
        self.assertEqual(stdout.getvalue(), output)