700
700
class DiffWasIs(diff.DiffPath):
702
def diff(self, file_id, old_path, new_path, old_kind, new_kind):
702
def diff(self, old_path, new_path, old_kind, new_kind):
703
703
self.to_file.write(b'was: ')
704
704
self.to_file.write(self.old_tree.get_file(old_path).read())
705
705
self.to_file.write(b'is: ')
728
728
self.new_tree.add('newdir')
729
729
self.new_tree.add('newdir/newfile', b'file-id')
730
730
differ = diff.DiffText(self.old_tree, self.new_tree, BytesIO())
731
differ.diff_text('olddir/oldfile', None, 'old label',
732
'new label', b'file-id', None)
731
differ.diff_text('olddir/oldfile', None, 'old label', 'new label')
733
732
self.assertEqual(
734
733
b'--- old label\n+++ new label\n@@ -1,1 +0,0 @@\n-old\n\n',
735
734
differ.to_file.getvalue())
736
735
differ.to_file.seek(0)
737
736
differ.diff_text(None, 'newdir/newfile',
738
'old label', 'new label', None, b'file-id')
737
'old label', 'new label')
739
738
self.assertEqual(
740
739
b'--- old label\n+++ new label\n@@ -0,0 +1,1 @@\n+new\n\n',
741
740
differ.to_file.getvalue())
742
741
differ.to_file.seek(0)
743
742
differ.diff_text('olddir/oldfile', 'newdir/newfile',
744
'old label', 'new label', b'file-id', b'file-id')
743
'old label', 'new label')
745
744
self.assertEqual(
746
745
b'--- old label\n+++ new label\n@@ -1,1 +1,1 @@\n-old\n+new\n\n',
747
746
differ.to_file.getvalue())
789
788
('new-tree/newdir/newfile', b'new\n')])
790
789
self.new_tree.add('newdir')
791
790
self.new_tree.add('newdir/newfile', b'file-id')
792
self.differ.diff(b'file-id', 'olddir/oldfile', 'newdir/newfile')
791
self.differ.diff('olddir/oldfile', 'newdir/newfile')
793
792
self.assertContainsRe(
794
793
self.differ.to_file.getvalue(),
795
794
br'--- olddir/oldfile.*\n\+\+\+ newdir/newfile.*\n\@\@ -1,1 \+1,1'
805
804
os.symlink('new', 'new-tree/newdir/newfile')
806
805
self.new_tree.add('newdir')
807
806
self.new_tree.add('newdir/newfile', b'file-id')
808
self.differ.diff(b'file-id', 'olddir/oldfile', 'newdir/newfile')
807
self.differ.diff('olddir/oldfile', 'newdir/newfile')
809
808
self.assertContainsRe(
810
809
self.differ.to_file.getvalue(),
811
810
br'--- olddir/oldfile.*\n\+\+\+ newdir/newfile.*\n\@\@ -1,1 \+0,0'
816
815
def test_diff_directory(self):
817
816
self.build_tree(['new-tree/new-dir/'])
818
817
self.new_tree.add('new-dir', b'new-dir-id')
819
self.differ.diff(b'new-dir-id', None, 'new-dir')
818
self.differ.diff(None, 'new-dir')
820
819
self.assertEqual(self.differ.to_file.getvalue(), b'')
822
821
def create_old_new(self):
838
837
differ = diff.DiffTree(self.old_tree, self.new_tree, BytesIO())
840
839
diff.DiffTree.diff_factories = old_diff_factories
841
differ.diff(b'file-id', 'olddir/oldfile', 'newdir/newfile')
840
differ.diff('olddir/oldfile', 'newdir/newfile')
842
841
self.assertNotContainsRe(
843
842
differ.to_file.getvalue(),
844
843
br'--- olddir/oldfile.*\n\+\+\+ newdir/newfile.*\n\@\@ -1,1 \+1,1'
850
849
self.create_old_new()
851
850
differ = diff.DiffTree(self.old_tree, self.new_tree, BytesIO(),
852
851
extra_factories=[DiffWasIs.from_diff_tree])
853
differ.diff(b'file-id', 'olddir/oldfile', 'newdir/newfile')
852
differ.diff('olddir/oldfile', 'newdir/newfile')
854
853
self.assertNotContainsRe(
855
854
differ.to_file.getvalue(),
856
855
br'--- olddir/oldfile.*\n\+\+\+ newdir/newfile.*\n\@\@ -1,1 \+1,1'
1492
1491
self.addCleanup(diff_obj.finish)
1493
1492
self.assertContainsRe(diff_obj._root, 'brz-diff-[^/]*')
1494
1493
old_path, new_path = diff_obj._prepare_files(
1495
'oldname', 'newname', file_id=b'file-id')
1494
'oldname', 'newname')
1496
1495
self.assertContainsRe(old_path, 'old/oldname$')
1497
1496
self.assertEqual(315532800, os.stat(old_path).st_mtime)
1498
1497
self.assertContainsRe(new_path, 'tree/newname$')
1501
1500
if osutils.host_os_dereferences_symlinks():
1502
1501
self.assertTrue(os.path.samefile('tree/newname', new_path))
1503
1502
# make sure we can create files with the same parent directories
1504
diff_obj._prepare_files('oldname2', 'newname2', file_id=b'file2-id')
1503
diff_obj._prepare_files('oldname2', 'newname2')
1507
1506
class TestDiffFromToolEncodedFilename(tests.TestCaseWithTransport):