diff options
Diffstat (limited to 'bzrlib/plugins/weave_fmt/test_workingtree.py')
-rw-r--r-- | bzrlib/plugins/weave_fmt/test_workingtree.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/bzrlib/plugins/weave_fmt/test_workingtree.py b/bzrlib/plugins/weave_fmt/test_workingtree.py new file mode 100644 index 0000000..cea8c6b --- /dev/null +++ b/bzrlib/plugins/weave_fmt/test_workingtree.py @@ -0,0 +1,89 @@ +# Copyright (C) 2005-2011 Canonical Ltd +# Authors: Robert Collins <robert.collins@canonical.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +"""Tests for weave-era working tree formats.""" + +from __future__ import absolute_import + +import os + +from bzrlib import ( + conflicts, + errors, + ) + +from bzrlib.tests import ( + TestCaseWithTransport, + ) + +from bzrlib.plugins.weave_fmt.bzrdir import BzrDirFormat6 + + +class TestFormat2WorkingTree(TestCaseWithTransport): + """Tests that are specific to format 2 trees.""" + + def create_format2_tree(self, url): + return self.make_branch_and_tree( + url, format=BzrDirFormat6()) + + def test_conflicts(self): + # test backwards compatability + tree = self.create_format2_tree('.') + self.assertRaises(errors.UnsupportedOperation, tree.set_conflicts, + None) + file('lala.BASE', 'wb').write('labase') + expected = conflicts.ContentsConflict('lala') + self.assertEqual(list(tree.conflicts()), [expected]) + file('lala', 'wb').write('la') + tree.add('lala', 'lala-id') + expected = conflicts.ContentsConflict('lala', file_id='lala-id') + self.assertEqual(list(tree.conflicts()), [expected]) + file('lala.THIS', 'wb').write('lathis') + file('lala.OTHER', 'wb').write('laother') + # When "text conflict"s happen, stem, THIS and OTHER are text + expected = conflicts.TextConflict('lala', file_id='lala-id') + self.assertEqual(list(tree.conflicts()), [expected]) + os.unlink('lala.OTHER') + os.mkdir('lala.OTHER') + expected = conflicts.ContentsConflict('lala', file_id='lala-id') + self.assertEqual(list(tree.conflicts()), [expected]) + + def test_detect_conflicts(self): + """Conflicts are detected properly""" + tree = self.create_format2_tree('.') + self.build_tree_contents([('hello', 'hello world4'), + ('hello.THIS', 'hello world2'), + ('hello.BASE', 'hello world1'), + ('hello.OTHER', 'hello world3'), + ('hello.sploo.BASE', 'yellowworld'), + ('hello.sploo.OTHER', 'yellowworld2'), + ]) + tree.lock_read() + self.assertLength(6, list(tree.list_files())) + tree.unlock() + tree_conflicts = tree.conflicts() + self.assertLength(2, tree_conflicts) + self.assertTrue('hello' in tree_conflicts[0].path) + self.assertTrue('hello.sploo' in tree_conflicts[1].path) + conflicts.restore('hello') + conflicts.restore('hello.sploo') + self.assertLength(0, tree.conflicts()) + self.assertFileEqual('hello world2', 'hello') + self.assertFalse(os.path.lexists('hello.sploo')) + self.assertRaises(errors.NotConflicted, conflicts.restore, 'hello') + self.assertRaises(errors.NotConflicted, + conflicts.restore, 'hello.sploo') |