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