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