Rev 4599: Cleanup conflict tests. in file:///home/vila/src/bzr/experimental/conflict-manager/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Thu Aug 13 15:34:56 BST 2009
At file:///home/vila/src/bzr/experimental/conflict-manager/
------------------------------------------------------------
revno: 4599
revision-id: v.ladeuil+lp at free.fr-20090813143456-rnzl2lkja386f25w
parent: v.ladeuil+lp at free.fr-20090813061932-ia102mjscytelufh
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: cleanup
timestamp: Thu 2009-08-13 16:34:56 +0200
message:
Cleanup conflict tests.
* bzrlib/tests/test_conflicts.py:
Fix imports, reorder test for better locality of references
regarding test data.
-------------- next part --------------
=== modified file 'bzrlib/tests/test_conflicts.py'
--- a/bzrlib/tests/test_conflicts.py 2009-03-23 14:59:43 +0000
+++ b/bzrlib/tests/test_conflicts.py 2009-08-13 14:34:56 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2005 Canonical Ltd
+# Copyright (C) 2005, 2006, 2007, 2008, 2009 Canonical Ltd
#
# 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
@@ -17,9 +17,12 @@
import os
-from bzrlib import bzrdir
-from bzrlib.tests import TestCaseWithTransport, TestCase
-from bzrlib.branch import Branch
+from bzrlib import (
+ bzrdir,
+ conflicts,
+ errors,
+ tests,
+ )
from bzrlib.conflicts import (
ConflictList,
ContentsConflict,
@@ -34,7 +37,6 @@
resolve,
restore,
)
-from bzrlib.errors import NotConflicted
# TODO: Test commit with some added, and added-but-missing files
@@ -44,30 +46,67 @@
# be a sorted list.
# u'\xe5' == a with circle
# '\xc3\xae' == u'\xee' == i with hat
-# So these are u'pathg' and 'idg' only with a circle and a hat. (shappo?)
-example_conflicts = ConflictList([
- MissingParent('Not deleting', u'p\xe5thg', '\xc3\xaedg'),
- ContentsConflict(u'p\xe5tha', None, '\xc3\xaeda'),
- TextConflict(u'p\xe5tha'),
- PathConflict(u'p\xe5thb', u'p\xe5thc', '\xc3\xaedb'),
- DuplicateID('Unversioned existing file', u'p\xe5thc', u'p\xe5thc2',
- '\xc3\xaedc', '\xc3\xaedc'),
- DuplicateEntry('Moved existing file to', u'p\xe5thdd.moved', u'p\xe5thd',
- '\xc3\xaedd', None),
- ParentLoop('Cancelled move', u'p\xe5the', u'p\xe5th2e',
- None, '\xc3\xaed2e'),
- UnversionedParent('Versioned directory', u'p\xe5thf', '\xc3\xaedf'),
- NonDirectoryParent('Created directory', u'p\xe5thg', '\xc3\xaedg'),
+# So these are u'path' and 'id' only with a circle and a hat. (shappo?)
+example_conflicts = conflicts.ConflictList(
+ [conflicts.MissingParent('Not deleting', u'p\xe5thg', '\xc3\xaedg'),
+ conflicts.ContentsConflict(u'p\xe5tha', None, '\xc3\xaeda'),
+ conflicts.TextConflict(u'p\xe5tha'),
+ conflicts.PathConflict(u'p\xe5thb', u'p\xe5thc', '\xc3\xaedb'),
+ conflicts.DuplicateID('Unversioned existing file',
+ u'p\xe5thc', u'p\xe5thc2',
+ '\xc3\xaedc', '\xc3\xaedc'),
+ conflicts.DuplicateEntry('Moved existing file to',
+ u'p\xe5thdd.moved', u'p\xe5thd',
+ '\xc3\xaedd', None),
+ conflicts.ParentLoop('Cancelled move', u'p\xe5the', u'p\xe5th2e',
+ None, '\xc3\xaed2e'),
+ conflicts.UnversionedParent('Versioned directory',
+ u'p\xe5thf', '\xc3\xaedf'),
+ conflicts.NonDirectoryParent('Created directory',
+ u'p\xe5thg', '\xc3\xaedg'),
])
-class TestConflicts(TestCaseWithTransport):
+class TestConflictStanzas(tests.TestCase):
+
+ def test_stanza_roundtrip(self):
+ # write and read our example stanza.
+ stanza_iter = example_conflicts.to_stanzas()
+ processed = conflicts.ConflictList.from_stanzas(stanza_iter)
+ for o, p in zip(processed, example_conflicts):
+ self.assertEqual(o, p)
+
+ self.assertIsInstance(o.path, unicode)
+
+ if o.file_id is not None:
+ self.assertIsInstance(o.file_id, str)
+
+ conflict_path = getattr(o, 'conflict_path', None)
+ if conflict_path is not None:
+ self.assertIsInstance(conflict_path, unicode)
+
+ conflict_file_id = getattr(o, 'conflict_file_id', None)
+ if conflict_file_id is not None:
+ self.assertIsInstance(conflict_file_id, str)
+
+ def test_stanzification(self):
+ for stanza in example_conflicts.to_stanzas():
+ if 'file_id' in stanza:
+ # In Stanza form, the file_id has to be unicode.
+ self.assertStartsWith(stanza['file_id'], u'\xeed')
+ self.assertStartsWith(stanza['path'], u'p\xe5th')
+ if 'conflict_path' in stanza:
+ self.assertStartsWith(stanza['conflict_path'], u'p\xe5th')
+ if 'conflict_file_id' in stanza:
+ self.assertStartsWith(stanza['conflict_file_id'], u'\xeed')
+
+
+class TestConflicts(tests.TestCaseWithTransport):
def test_conflicts(self):
"""Conflicts are detected properly"""
tree = self.make_branch_and_tree('.',
format=bzrdir.BzrDirFormat6())
- b = tree.branch
file('hello', 'w').write('hello world4')
file('hello.THIS', 'w').write('hello world2')
file('hello.BASE', 'w').write('hello world1')
@@ -75,23 +114,22 @@
file('hello.sploo.BASE', 'w').write('yellow world')
file('hello.sploo.OTHER', 'w').write('yellow world2')
tree.lock_read()
- self.assertEqual(len(list(tree.list_files())), 6)
+ self.assertEqual(6, len(list(tree.list_files())))
tree.unlock()
conflicts = tree.conflicts()
- self.assertEqual(len(conflicts), 2)
+ self.assertEqual(2, len(conflicts))
self.assert_('hello' in conflicts[0].path)
self.assert_('hello.sploo' in conflicts[1].path)
restore('hello')
restore('hello.sploo')
- self.assertEqual(len(tree.conflicts()), 0)
+ self.assertEqual(0, len(tree.conflicts()))
self.assertFileEqual('hello world2', 'hello')
self.assertFalse(os.path.lexists('hello.sploo'))
- self.assertRaises(NotConflicted, restore, 'hello')
- self.assertRaises(NotConflicted, restore, 'hello.sploo')
+ self.assertRaises(errors.NotConflicted, restore, 'hello')
+ self.assertRaises(errors.NotConflicted, restore, 'hello.sploo')
def test_resolve_conflict_dir(self):
tree = self.make_branch_and_tree('.')
- b = tree.branch
file('hello', 'w').write('hello world4')
tree.add('hello', 'q')
file('hello.THIS', 'w').write('hello world2')
@@ -102,27 +140,32 @@
def test_select_conflicts(self):
tree = self.make_branch_and_tree('.')
- tree_conflicts = ConflictList([ContentsConflict('foo'),
- ContentsConflict('bar')])
- self.assertEqual((ConflictList([ContentsConflict('bar')]),
- ConflictList([ContentsConflict('foo')])),
- tree_conflicts.select_conflicts(tree, ['foo']))
- self.assertEqual((ConflictList(), tree_conflicts),
+ tree_conflicts = conflicts.ConflictList(
+ [conflicts.ContentsConflict('foo'),
+ conflicts.ContentsConflict('bar')])
+ self.assertEqual(
+ (conflicts.ConflictList([conflicts.ContentsConflict('bar')]),
+ conflicts.ConflictList([conflicts.ContentsConflict('foo')])),
+ tree_conflicts.select_conflicts(tree, ['foo']))
+ self.assertEqual((conflicts.ConflictList(), tree_conflicts),
tree_conflicts.select_conflicts(tree, [''],
ignore_misses=True, recurse=True))
- tree_conflicts = ConflictList([ContentsConflict('foo/baz'),
- ContentsConflict('bar')])
- self.assertEqual((ConflictList([ContentsConflict('bar')]),
- ConflictList([ContentsConflict('foo/baz')])),
- tree_conflicts.select_conflicts(tree, ['foo'],
- recurse=True,
- ignore_misses=True))
- tree_conflicts = ConflictList([PathConflict('qux', 'foo/baz')])
- self.assertEqual((ConflictList(), tree_conflicts),
- tree_conflicts.select_conflicts(tree, ['foo'],
- recurse=True,
- ignore_misses=True))
- self.assertEqual((tree_conflicts, ConflictList()),
+ tree_conflicts = conflicts.ConflictList(
+ [conflicts.ContentsConflict('foo/baz'),
+ conflicts.ContentsConflict('bar')])
+ self.assertEqual(
+ (conflicts.ConflictList([conflicts.ContentsConflict('bar')]),
+ conflicts.ConflictList([conflicts.ContentsConflict('foo/baz')])),
+ tree_conflicts.select_conflicts(tree, ['foo'],
+ recurse=True,
+ ignore_misses=True))
+ tree_conflicts = conflicts.ConflictList(
+ [conflicts.PathConflict('qux', 'foo/baz')])
+ self.assertEqual((conflicts.ConflictList(), tree_conflicts),
+ tree_conflicts.select_conflicts(tree, ['foo'],
+ recurse=True,
+ ignore_misses=True))
+ self.assertEqual((tree_conflicts, conflicts.ConflictList()),
tree_conflicts.select_conflicts(tree, ['foo'],
ignore_misses=True))
@@ -130,44 +173,14 @@
tree = self.make_branch_and_tree('.')
self.build_tree(['dir/', 'dir/hello'])
tree.add(['dir', 'dir/hello'])
- tree.set_conflicts(ConflictList([TextConflict('dir/hello')]))
+ tree.set_conflicts(conflicts.ConflictList(
+ [conflicts.TextConflict('dir/hello')]))
resolve(tree, ['dir'], recursive=False, ignore_misses=True)
- self.assertEqual(ConflictList([TextConflict('dir/hello')]),
+ self.assertEqual(conflicts.ConflictList(
+ [conflicts.TextConflict('dir/hello')]),
tree.conflicts())
resolve(tree, ['dir'], recursive=True, ignore_misses=True)
- self.assertEqual(ConflictList([]),
+ self.assertEqual(conflicts.ConflictList([]),
tree.conflicts())
-class TestConflictStanzas(TestCase):
-
- def test_stanza_roundtrip(self):
- # write and read our example stanza.
- stanza_iter = example_conflicts.to_stanzas()
- processed = ConflictList.from_stanzas(stanza_iter)
- for o, p in zip(processed, example_conflicts):
- self.assertEqual(o, p)
-
- self.assertIsInstance(o.path, unicode)
-
- if o.file_id is not None:
- self.assertIsInstance(o.file_id, str)
-
- conflict_path = getattr(o, 'conflict_path', None)
- if conflict_path is not None:
- self.assertIsInstance(conflict_path, unicode)
-
- conflict_file_id = getattr(o, 'conflict_file_id', None)
- if conflict_file_id is not None:
- self.assertIsInstance(conflict_file_id, str)
-
- def test_stanzification(self):
- for stanza in example_conflicts.to_stanzas():
- if 'file_id' in stanza:
- # In Stanza form, the file_id has to be unicode.
- self.assertStartsWith(stanza['file_id'], u'\xeed')
- self.assertStartsWith(stanza['path'], u'p\xe5th')
- if 'conflict_path' in stanza:
- self.assertStartsWith(stanza['conflict_path'], u'p\xe5th')
- if 'conflict_file_id' in stanza:
- self.assertStartsWith(stanza['conflict_file_id'], u'\xeed')
More information about the bazaar-commits
mailing list