27
from bzrlib.lock import write_locked
28
28
from bzrlib.lockdir import LockDir
29
29
from bzrlib.mutabletree import needs_tree_write_lock
30
30
from bzrlib.tests import TestCase, TestCaseWithTransport, TestSkipped
218
218
workingtree.WorkingTreeFormatMetaDir.find_format,
221
def test_register_unregister_format(self):
222
format = SampleTreeFormat()
224
dir = bzrdir.BzrDirMetaFormat1().initialize('.')
225
dir.create_repository()
228
format.initialize(dir)
229
# register a format for it.
230
self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
231
workingtree.WorkingTreeFormat.register_format, format)
232
self.assertTrue(format in
233
self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
234
workingtree.WorkingTreeFormat.get_formats))
235
# which branch.Open will refuse (not supported)
236
self.assertRaises(errors.UnsupportedFormatError, workingtree.WorkingTree.open, '.')
237
# but open_downlevel will work
238
self.assertEqual(format.open(dir), workingtree.WorkingTree.open_downlevel('.'))
239
# unregister the format
240
self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
241
workingtree.WorkingTreeFormat.unregister_format, format)
242
self.assertFalse(format in
243
self.applyDeprecated(symbol_versioning.deprecated_in((2, 4, 0)),
244
workingtree.WorkingTreeFormat.get_formats))
246
221
def test_find_format_with_features(self):
247
222
tree = self.make_branch_and_tree('.', format='2a')
248
223
tree.update_feature_flags({"name": "necessity"})
520
495
self.make_branch('qux')
521
496
trees = workingtree.WorkingTree.find_trees('.')
522
497
self.assertEqual(2, len(list(trees)))
500
class TestStoredUncommitted(TestCaseWithTransport):
502
def store_uncommitted(self):
503
tree = self.make_branch_and_tree('tree')
504
tree.commit('get root in there')
505
self.build_tree_contents([('tree/file', 'content')])
506
tree.add('file', 'file-id')
507
tree.store_uncommitted()
510
def test_store_uncommitted(self):
511
self.store_uncommitted()
512
self.assertPathDoesNotExist('tree/file')
514
def test_store_uncommitted_no_change(self):
515
tree = self.make_branch_and_tree('tree')
516
tree.commit('get root in there')
517
tree.store_uncommitted()
518
self.assertIs(None, tree.branch.get_unshelver(tree))
520
def test_restore_uncommitted(self):
521
with write_locked(self.store_uncommitted()) as tree:
522
tree.restore_uncommitted()
523
self.assertPathExists('tree/file')
524
self.assertIs(None, tree.branch.get_unshelver(tree))
526
def test_restore_uncommitted_none(self):
527
tree = self.make_branch_and_tree('tree')
528
tree.restore_uncommitted()