/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_diff.py

  • Committer: Jelmer Vernooij
  • Date: 2019-08-11 13:33:45 UTC
  • mfrom: (7379 work)
  • mto: This revision was merged to the branch mainline in revision 7389.
  • Revision ID: jelmer@jelmer.uk-20190811133345-dp9j3c569vxj4l9y
merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
import tempfile
22
22
 
23
23
from .. import (
 
24
    cleanup,
24
25
    diff,
25
26
    errors,
26
27
    osutils,
867
868
class TestDiffFromTool(tests.TestCaseWithTransport):
868
869
 
869
870
    def test_from_string(self):
870
 
        diff_obj = diff.DiffFromTool.from_string('diff', None, None, None)
 
871
        diff_obj = diff.DiffFromTool.from_string(
 
872
            ['diff', '{old_path}', '{new_path}'],
 
873
            None, None, None)
871
874
        self.addCleanup(diff_obj.finish)
872
 
        self.assertEqual(['diff', '@old_path', '@new_path'],
 
875
        self.assertEqual(['diff', '{old_path}', '{new_path}'],
873
876
                         diff_obj.command_template)
874
877
 
875
878
    def test_from_string_u5(self):
876
 
        diff_obj = diff.DiffFromTool.from_string('diff "-u 5"',
877
 
                                                 None, None, None)
 
879
        diff_obj = diff.DiffFromTool.from_string(
 
880
            ['diff', "-u 5", '{old_path}', '{new_path}'], None, None, None)
878
881
        self.addCleanup(diff_obj.finish)
879
 
        self.assertEqual(['diff', '-u 5', '@old_path', '@new_path'],
 
882
        self.assertEqual(['diff', '-u 5', '{old_path}', '{new_path}'],
880
883
                         diff_obj.command_template)
881
884
        self.assertEqual(['diff', '-u 5', 'old-path', 'new-path'],
882
885
                         diff_obj._get_command('old-path', 'new-path'))
883
886
 
884
887
    def test_from_string_path_with_backslashes(self):
885
888
        self.requireFeature(features.backslashdir_feature)
886
 
        tool = 'C:\\Tools\\Diff.exe'
 
889
        tool = ['C:\\Tools\\Diff.exe', '{old_path}', '{new_path}']
887
890
        diff_obj = diff.DiffFromTool.from_string(tool, None, None, None)
888
891
        self.addCleanup(diff_obj.finish)
889
 
        self.assertEqual(['C:\\Tools\\Diff.exe', '@old_path', '@new_path'],
 
892
        self.assertEqual(['C:\\Tools\\Diff.exe', '{old_path}', '{new_path}'],
890
893
                         diff_obj.command_template)
891
894
        self.assertEqual(['C:\\Tools\\Diff.exe', 'old-path', 'new-path'],
892
895
                         diff_obj._get_command('old-path', 'new-path'))
894
897
    def test_execute(self):
895
898
        output = BytesIO()
896
899
        diff_obj = diff.DiffFromTool([sys.executable, '-c',
897
 
                                      'print("@old_path @new_path")'],
 
900
                                      'print("{old_path} {new_path}")'],
898
901
                                     None, None, output)
899
902
        self.addCleanup(diff_obj.finish)
900
903
        diff_obj._execute('old', 'new')
922
925
        basis_tree.lock_read()
923
926
        self.addCleanup(basis_tree.unlock)
924
927
        diff_obj = diff.DiffFromTool([sys.executable, '-c',
925
 
                                      'print "@old_path @new_path"'],
 
928
                                      'print "{old_path} {new_path}"'],
926
929
                                     basis_tree, tree, output)
927
930
        diff_obj._prepare_files('file', 'file', file_id=b'file-id')
928
931
        # The old content should be readonly
958
961
        tree.lock_read()
959
962
        self.addCleanup(tree.unlock)
960
963
        diff_obj = diff.DiffFromTool([sys.executable, '-c',
961
 
                                      'print "@old_path @new_path"'],
 
964
                                      'print "{old_path} {new_path}"'],
962
965
                                     old_tree, tree, output)
963
966
        self.addCleanup(diff_obj.finish)
964
967
        self.assertContainsRe(diff_obj._root, 'brz-diff-[^/]*')
980
983
    def test_encodable_filename(self):
981
984
        # Just checks file path for external diff tool.
982
985
        # We cannot change CPython's internal encoding used by os.exec*.
983
 
        diffobj = diff.DiffFromTool(['dummy', '@old_path', '@new_path'],
 
986
        diffobj = diff.DiffFromTool(['dummy', '{old_path}', '{new_path}'],
984
987
                                    None, None, None)
985
988
        for _, scenario in EncodingAdapter.encoding_scenarios:
986
989
            encoding = scenario['encoding']
995
998
            self.assertTrue(fullpath.startswith(diffobj._root + '/safe'))
996
999
 
997
1000
    def test_unencodable_filename(self):
998
 
        diffobj = diff.DiffFromTool(['dummy', '@old_path', '@new_path'],
 
1001
        diffobj = diff.DiffFromTool(['dummy', '{old_path}', '{new_path}'],
999
1002
                                    None, None, None)
1000
1003
        for _, scenario in EncodingAdapter.encoding_scenarios:
1001
1004
            encoding = scenario['encoding']
1019
1022
 
1020
1023
    def call_gtabtd(self, path_list, revision_specs, old_url, new_url):
1021
1024
        """Call get_trees_and_branches_to_diff_locked."""
 
1025
        exit_stack = cleanup.ExitStack()
 
1026
        self.addCleanup(exit_stack.close)
1022
1027
        return diff.get_trees_and_branches_to_diff_locked(
1023
 
            path_list, revision_specs, old_url, new_url, self.addCleanup)
 
1028
            path_list, revision_specs, old_url, new_url, exit_stack)
1024
1029
 
1025
1030
    def test_basic(self):
1026
1031
        tree = self.make_branch_and_tree('tree')