Rev 2406: Add a bunch of direct tests for 'show_diff_trees' in http://bzr.arbash-meinel.com/branches/bzr/0.16-dev/diff_renamed_103870

John Arbash Meinel john at arbash-meinel.com
Wed Apr 11 22:57:50 BST 2007


At http://bzr.arbash-meinel.com/branches/bzr/0.16-dev/diff_renamed_103870

------------------------------------------------------------
revno: 2406
revision-id: john at arbash-meinel.com-20070411215736-rii53nkqb42hezup
parent: pqm at pqm.ubuntu.com-20070411044855-b83c4dc6fd093648
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: diff_renamed_103870
timestamp: Wed 2007-04-11 16:57:36 -0500
message:
  Add a bunch of direct tests for 'show_diff_trees'
modified:
  bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
-------------- next part --------------
=== modified file 'bzrlib/tests/test_diff.py'
--- a/bzrlib/tests/test_diff.py	2007-03-11 19:39:37 +0000
+++ b/bzrlib/tests/test_diff.py	2007-04-11 21:57:36 +0000
@@ -214,7 +214,22 @@
         self.assertEqual(out.splitlines(True) + ['\n'], lines)
 
 
-class TestDiffDates(TestCaseWithTransport):
+class TestShowDiffTreesHelper(TestCaseWithTransport):
+    """Has a helper for running show_diff_trees"""
+
+    def get_diff(self, tree1, tree2, specific_files=None, working_tree=None):
+        output = StringIO()
+        if working_tree is not None:
+            extra_trees = (working_tree,)
+        else:
+            extra_trees = ()
+        show_diff_trees(tree1, tree2, output, specific_files=specific_files,
+                        extra_trees=extra_trees, old_label='old/',
+                        new_label='new/')
+        return output.getvalue()
+
+
+class TestDiffDates(TestShowDiffTreesHelper):
 
     def setUp(self):
         super(TestDiffDates, self).setUp()
@@ -254,17 +269,6 @@
         # set the date stamps for files in the working tree to known values
         os.utime('file1', (1144195200, 1144195200)) # 2006-04-05 00:00:00 UTC
 
-    def get_diff(self, tree1, tree2, specific_files=None, working_tree=None):
-        output = StringIO()
-        if working_tree is not None:
-            extra_trees = (working_tree,)
-        else:
-            extra_trees = ()
-        show_diff_trees(tree1, tree2, output, specific_files=specific_files,
-                        extra_trees=extra_trees, old_label='old/', 
-                        new_label='new/')
-        return output.getvalue()
-
     def test_diff_rev_tree_working_tree(self):
         output = self.get_diff(self.wt.basis_tree(), self.wt)
         # note that the date for old/file1 is from rev 2 rather than from
@@ -354,6 +358,70 @@
         self.assertNotContainsRe(out, 'file1\t')
 
 
+
+class TestShowDiffTrees(TestShowDiffTreesHelper):
+    """Direct tests for show_diff_trees"""
+
+    def test_modified_file(self):
+        """Test when a file is modified."""
+        tree = self.make_branch_and_tree('tree')
+        self.build_tree_contents([('tree/file', 'contents\n')])
+        tree.add(['file'], ['file-id'])
+        tree.commit('one', rev_id='rev-1')
+
+        self.build_tree_contents([('tree/file', 'new contents\n')])
+        diff = self.get_diff(tree.basis_tree(), tree)
+        self.assertContainsRe(diff, "=== modified file 'file'\n")
+        self.assertContainsRe(diff, '--- old/file\t')
+        self.assertContainsRe(diff, '\\+\\+\\+ new/file\t')
+        self.assertContainsRe(diff, '-contents\n'
+                                    '\\+new contents\n')
+
+    def test_renamed_directory(self):
+        """Test when only a directory is only renamed."""
+        tree = self.make_branch_and_tree('tree')
+        self.build_tree(['tree/dir/'])
+        self.build_tree_contents([('tree/dir/file', 'contents\n')])
+        tree.add(['dir', 'dir/file'], ['dir-id', 'file-id'])
+        tree.commit('one', rev_id='rev-1')
+
+        tree.rename_one('dir', 'newdir')
+        diff = self.get_diff(tree.basis_tree(), tree)
+        # Renaming a directory should be a single "you renamed this dir" even
+        # when there are files inside.
+        self.assertEqual("=== renamed directory 'dir' => 'newdir'\n", diff)
+
+    def test_renamed_file(self):
+        """Test when a file is only renamed."""
+        tree = self.make_branch_and_tree('tree')
+        self.build_tree_contents([('tree/file', 'contents\n')])
+        tree.add(['file'], ['file-id'])
+        tree.commit('one', rev_id='rev-1')
+
+        tree.rename_one('file', 'newname')
+        diff = self.get_diff(tree.basis_tree(), tree)
+        self.assertContainsRe(diff, "=== renamed file 'file' => 'newname'\n")
+        # We shouldn't have a --- or +++ line, because there is no content
+        # change
+        self.assertNotContainsRe(diff, '---')
+
+    def test_renamed_and_modified_file(self):
+        """Test when a file is only renamed."""
+        tree = self.make_branch_and_tree('tree')
+        self.build_tree_contents([('tree/file', 'contents\n')])
+        tree.add(['file'], ['file-id'])
+        tree.commit('one', rev_id='rev-1')
+
+        tree.rename_one('file', 'newname')
+        self.build_tree_contents([('tree/newname', 'new contents\n')])
+        diff = self.get_diff(tree.basis_tree(), tree)
+        self.assertContainsRe(diff, "=== renamed file 'file' => 'newname'\n")
+        self.assertContainsRe(diff, '--- old/file\t')
+        self.assertContainsRe(diff, '\\+\\+\\+ new/newname\t')
+        self.assertContainsRe(diff, '-contents\n'
+                                    '\\+new contents\n')
+
+
 class TestPatienceDiffLib(TestCase):
 
     def test_unique_lcs(self):



More information about the bazaar-commits mailing list