Rev 5415: Add failing tests for bug #323111. in file:///home/vila/src/bzr/bugs/323111-orphans/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Tue Sep 7 16:48:29 BST 2010
At file:///home/vila/src/bzr/bugs/323111-orphans/
------------------------------------------------------------
revno: 5415
revision-id: v.ladeuil+lp at free.fr-20100907154829-rkvcdtj1nfk9ax60
parent: v.ladeuil+lp at free.fr-20100907130724-45ozcn9rpxfg7lws
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: orphan-non-versioned-files
timestamp: Tue 2010-09-07 17:48:29 +0200
message:
Add failing tests for bug #323111.
-------------- next part --------------
=== modified file 'bzrlib/tests/per_workingtree/test_pull.py'
--- a/bzrlib/tests/per_workingtree/test_pull.py 2010-09-06 10:08:36 +0000
+++ b/bzrlib/tests/per_workingtree/test_pull.py 2010-09-07 15:48:29 +0000
@@ -17,6 +17,7 @@
from cStringIO import StringIO
+from bzrlib import tests
from bzrlib.tests import per_workingtree
@@ -62,3 +63,35 @@
tree.commit('second')
to_tree.pull(tree.branch)
self.assertEqual('second_root_id', to_tree.get_root_id())
+
+
+class TestPullWithOrphans(per_workingtree.TestCaseWithWorkingTree):
+
+ def make_branch_deleting_dir(self, relpath=None):
+ if relpath is None:
+ relpath = 'trunk'
+ builder = self.make_branch_builder(relpath)
+ builder.start_series()
+
+ # Create an empty trunk
+ builder.build_snapshot('1', None, [
+ ('add', ('', 'root-id', 'directory', ''))])
+ builder.build_snapshot('2', ['1'], [
+ ('add', ('dir', 'dir-id', 'directory', '')),
+ ('add', ('file', 'file-id', 'file', 'trunk content\n')),])
+ builder.build_snapshot('3', ['2'], [
+ ('unversion', 'dir-id'),])
+ builder.finish_series()
+ return builder.get_branch()
+
+ def test_pull_orphans(self):
+ from bzrlib import workingtree
+ if isinstance(self.workingtree_format, workingtree.WorkingTreeFormat2):
+ raise tests.TestSkipped(
+ 'WorkingTreeFormat2 does not support missing parent conflicts')
+ trunk = self.make_branch_deleting_dir('trunk')
+ work = trunk.bzrdir.sprout('work', revision_id='2').open_workingtree()
+ # Add an unversioned file in dir
+ self.build_tree(['work/dir/foo'])
+ work.pull(trunk)
+ self.assertLength(0, work.conflicts())
=== modified file 'bzrlib/tests/test_transform.py'
--- a/bzrlib/tests/test_transform.py 2010-09-07 10:53:24 +0000
+++ b/bzrlib/tests/test_transform.py 2010-09-07 15:48:29 +0000
@@ -2341,6 +2341,38 @@
self.failUnlessExists('a/b')
+class TestTransformMissingParent(tests.TestCaseWithTransport):
+
+ def get_tree_transform_with_unversioned_dir(self):
+ wt = self.make_branch_and_tree('.')
+ self.build_tree(['dir/',])
+ wt.add(['dir'], ['dir-id'])
+ wt.commit('Create dir')
+ tt = TreeTransform(wt)
+ self.addCleanup(tt.finalize)
+ return wt, tt
+
+ def test_resolve_create_parent_for_versioned_file(self):
+ wt, tt = self.get_tree_transform_with_unversioned_dir()
+ dir_tid = tt.trans_id_tree_file_id('dir-id')
+ file_tid = tt.new_file('file', dir_tid, 'Contents', file_id='file-id')
+ tt.delete_contents(dir_tid)
+ tt.unversion_file(dir_tid)
+ conflicts = resolve_conflicts(tt)
+ # one conflict for the missing directory, one for the unversioned
+ # parent
+ self.assertLength(2, conflicts)
+
+ def test_resolve_orphan_non_versioned_file(self):
+ wt, tt = self.get_tree_transform_with_unversioned_dir()
+ dir_tid = tt.trans_id_tree_file_id('dir-id')
+ tt.new_file('file', 'dir-id', 'Contents')
+ tt.delete_contents(dir_tid)
+ tt.unversion_file(dir_tid)
+ conflicts = resolve_conflicts(tt)
+ self.assertLength(0, conflicts)
+
+
A_ENTRY = ('a-id', ('a', 'a'), True, (True, True),
('TREE_ROOT', 'TREE_ROOT'), ('a', 'a'), ('file', 'file'),
(False, False))
More information about the bazaar-commits
mailing list