~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_workingtree.py

  • Committer: Vincent Ladeuil
  • Date: 2010-02-09 17:27:46 UTC
  • mto: (5029.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5030.
  • Revision ID: v.ladeuil+lp@free.fr-20100209172746-6f4mvlnr2mac807j
Move NoSmartTransportServer to bzrlib.tests.test_server

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#
14
14
# You should have received a copy of the GNU General Public License
15
15
# along with this program; if not, write to the Free Software
16
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
17
 
18
18
from cStringIO import StringIO
19
19
import os
28
28
from bzrlib.bzrdir import BzrDir
29
29
from bzrlib.lockdir import LockDir
30
30
from bzrlib.mutabletree import needs_tree_write_lock
31
 
from bzrlib.symbol_versioning import zero_thirteen
32
31
from bzrlib.tests import TestCase, TestCaseWithTransport, TestSkipped
33
32
from bzrlib.transport import get_transport
34
33
from bzrlib.workingtree import (
82
81
            workingtree.WorkingTreeFormat.set_default_format(old_format)
83
82
        self.assertEqual(old_format, workingtree.WorkingTreeFormat.get_default_format())
84
83
 
 
84
    def test_open(self):
 
85
        tree = self.make_branch_and_tree('.')
 
86
        open_direct = workingtree.WorkingTree.open('.')
 
87
        self.assertEqual(tree.basedir, open_direct.basedir)
 
88
        open_no_args = workingtree.WorkingTree.open()
 
89
        self.assertEqual(tree.basedir, open_no_args.basedir)
 
90
 
 
91
    def test_open_containing(self):
 
92
        tree = self.make_branch_and_tree('.')
 
93
        open_direct, relpath = workingtree.WorkingTree.open_containing('.')
 
94
        self.assertEqual(tree.basedir, open_direct.basedir)
 
95
        self.assertEqual('', relpath)
 
96
        open_no_args, relpath = workingtree.WorkingTree.open_containing()
 
97
        self.assertEqual(tree.basedir, open_no_args.basedir)
 
98
        self.assertEqual('', relpath)
 
99
        open_subdir, relpath = workingtree.WorkingTree.open_containing('subdir')
 
100
        self.assertEqual(tree.basedir, open_subdir.basedir)
 
101
        self.assertEqual('subdir', relpath)
 
102
 
85
103
 
86
104
class SampleTreeFormat(workingtree.WorkingTreeFormat):
87
105
    """A sample format
88
106
 
89
 
    this format is initializable, unsupported to aid in testing the 
 
107
    this format is initializable, unsupported to aid in testing the
90
108
    open and open_downlevel routines.
91
109
    """
92
110
 
124
142
            found_format = workingtree.WorkingTreeFormat.find_format(dir)
125
143
            self.failUnless(isinstance(found_format, format.__class__))
126
144
        check_format(workingtree.WorkingTreeFormat3(), "bar")
127
 
        
 
145
 
128
146
    def test_find_format_no_tree(self):
129
147
        dir = bzrdir.BzrDirMetaFormat1().initialize('.')
130
148
        self.assertRaises(errors.NoWorkingTree,
175
193
        t = control.get_workingtree_transport(None)
176
194
        self.assertEqualDiff('Bazaar-NG Working Tree format 3',
177
195
                             t.get('format').read())
178
 
        self.assertEqualDiff(t.get('inventory').read(), 
 
196
        self.assertEqualDiff(t.get('inventory').read(),
179
197
                              '<inventory format="5">\n'
180
198
                              '</inventory>\n',
181
199
                             )
184
202
        self.assertFalse(t.has('inventory.basis'))
185
203
        # no last-revision file means 'None' or 'NULLREVISION'
186
204
        self.assertFalse(t.has('last-revision'))
187
 
        # TODO RBC 20060210 do a commit, check the inventory.basis is created 
 
205
        # TODO RBC 20060210 do a commit, check the inventory.basis is created
188
206
        # correctly and last-revision file becomes present.
189
207
 
190
208
    def test_uses_lockdir(self):
191
209
        """WorkingTreeFormat3 uses its own LockDir:
192
 
            
 
210
 
193
211
            - lock is a directory
194
212
            - when the WorkingTree is locked, LockDir can see that
195
213
        """
217
235
        control.create_repository()
218
236
        control.create_branch()
219
237
        tree = workingtree.WorkingTreeFormat3().initialize(control)
220
 
        tree._control_files._transport.delete("pending-merges")
 
238
        tree._transport.delete("pending-merges")
221
239
        self.assertEqual([], tree.get_parent_ids())
222
240
 
223
241
 
251
269
        self.assertEqual(list(tree.conflicts()), [expected])
252
270
 
253
271
 
254
 
class TestNonFormatSpecificCode(TestCaseWithTransport):
255
 
    """This class contains tests of workingtree that are not format specific."""
256
 
 
257
 
    def test_gen_file_id(self):
258
 
        file_id = self.applyDeprecated(zero_thirteen, workingtree.gen_file_id,
259
 
                                      'filename')
260
 
        self.assertStartsWith(file_id, 'filename-')
261
 
 
262
 
    def test_gen_root_id(self):
263
 
        file_id = self.applyDeprecated(zero_thirteen, workingtree.gen_root_id)
264
 
        self.assertStartsWith(file_id, 'tree_root-')
265
 
        
266
 
 
267
272
class InstrumentedTree(object):
268
273
    """A instrumented tree to check the needs_tree_write_lock decorator."""
269
274
 
281
286
    @needs_tree_write_lock
282
287
    def method_that_raises(self):
283
288
        """This method causes an exception when called with parameters.
284
 
        
 
289
 
285
290
        This allows the decorator code to be checked - it should still call
286
291
        unlock.
287
292
        """