~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_diff.py

  • Committer: John Arbash Meinel
  • Author(s): Mark Hammond
  • Date: 2008-09-09 17:02:21 UTC
  • mto: This revision was merged to the branch mainline in revision 3697.
  • Revision ID: john@arbash-meinel.com-20080909170221-svim3jw2mrz0amp3
An updated transparent icon for bzr.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
import os
18
18
import os.path
35
35
    )
36
36
from bzrlib.errors import BinaryFile, NoDiff, ExecutableMissing
37
37
import bzrlib.osutils as osutils
38
 
import bzrlib.revision as _mod_revision
39
38
import bzrlib.transform as transform
40
39
import bzrlib.patiencediff
41
40
import bzrlib._patiencediff_py
184
183
                              StringIO(), diff_opts=['-u'])
185
184
        finally:
186
185
            os.environ['PATH'] = orig_path
187
 
 
 
186
        
188
187
    def test_internal_diff_default(self):
189
188
        # Default internal diff encoding is utf8
190
189
        output = StringIO()
355
354
+file2 contents at rev 3
356
355
 
357
356
''')
358
 
 
 
357
        
359
358
    def test_diff_add_files(self):
360
 
        tree1 = self.b.repository.revision_tree(_mod_revision.NULL_REVISION)
 
359
        tree1 = self.b.repository.revision_tree(None)
361
360
        tree2 = self.b.repository.revision_tree('rev-1')
362
361
        output = self.get_diff(tree1, tree2)
363
362
        # the files have the epoch time stamp for the tree in which
397
396
        self.wt.rename_one('file1', 'file1b')
398
397
        old_tree = self.b.repository.revision_tree('rev-1')
399
398
        new_tree = self.b.repository.revision_tree('rev-4')
400
 
        out = self.get_diff(old_tree, new_tree, specific_files=['file1b'],
 
399
        out = self.get_diff(old_tree, new_tree, specific_files=['file1b'], 
401
400
                            working_tree=self.wt)
402
401
        self.assertContainsRe(out, 'file1\t')
403
402
 
409
408
        self.wt.rename_one('file1', 'dir1/file1')
410
409
        old_tree = self.b.repository.revision_tree('rev-1')
411
410
        new_tree = self.b.repository.revision_tree('rev-4')
412
 
        out = self.get_diff(old_tree, new_tree, specific_files=['dir1'],
 
411
        out = self.get_diff(old_tree, new_tree, specific_files=['dir1'], 
413
412
                            working_tree=self.wt)
414
413
        self.assertContainsRe(out, 'file1\t')
415
 
        out = self.get_diff(old_tree, new_tree, specific_files=['dir2'],
 
414
        out = self.get_diff(old_tree, new_tree, specific_files=['dir2'], 
416
415
                            working_tree=self.wt)
417
416
        self.assertNotContainsRe(out, 'file1\t')
418
417
 
704
703
            r'--- olddir/oldfile.*\n\+\+\+ newdir/newfile.*\n\@\@ -1,1 \+0,0'
705
704
             ' \@\@\n-old\n\n')
706
705
        self.assertContainsRe(self.differ.to_file.getvalue(),
707
 
                              "=== target is u'new'\n")
 
706
                              "=== target is 'new'\n")
708
707
 
709
708
    def test_diff_directory(self):
710
709
        self.build_tree(['new-tree/new-dir/'])
787
786
        self.assertEquals(unique_lcs('ab', 'ab'), [(0,0), (1,1)])
788
787
        self.assertEquals(unique_lcs('abcde', 'cdeab'), [(2,0), (3,1), (4,2)])
789
788
        self.assertEquals(unique_lcs('cdeab', 'abcde'), [(0,2), (1,3), (2,4)])
790
 
        self.assertEquals(unique_lcs('abXde', 'abYde'), [(0,0), (1,1),
 
789
        self.assertEquals(unique_lcs('abXde', 'abYde'), [(0,0), (1,1), 
791
790
                                                         (3,3), (4,4)])
792
791
        self.assertEquals(unique_lcs('acbac', 'abc'), [(2,1)])
793
792
 
808
807
        test_one('abcdbce', 'afbcgdbce', [(0,0), (1, 2), (2, 3), (3, 5),
809
808
                                          (4, 6), (5, 7), (6, 8)])
810
809
 
811
 
        # recurse_matches doesn't match non-unique
 
810
        # recurse_matches doesn't match non-unique 
812
811
        # lines surrounded by bogus text.
813
812
        # The update has been done in patiencediff.SequenceMatcher instead
814
813
 
951
950
                 ('delete', 1,2, 1,1),
952
951
                 ('equal',  2,3, 1,2),
953
952
                ])
954
 
        chk_ops('aBccDe', 'abccde',
 
953
        chk_ops('aBccDe', 'abccde', 
955
954
                [('equal',   0,1, 0,1),
956
955
                 ('replace', 1,5, 1,5),
957
956
                 ('equal',   5,6, 5,6),
958
957
                ])
959
 
        chk_ops('aBcDec', 'abcdec',
 
958
        chk_ops('aBcDec', 'abcdec', 
960
959
                [('equal',   0,1, 0,1),
961
960
                 ('replace', 1,2, 1,2),
962
961
                 ('equal',   2,3, 2,3),
963
962
                 ('replace', 3,4, 3,4),
964
963
                 ('equal',   4,6, 4,6),
965
964
                ])
966
 
        chk_ops('aBcdEcdFg', 'abcdecdfg',
 
965
        chk_ops('aBcdEcdFg', 'abcdecdfg', 
967
966
                [('equal',   0,1, 0,1),
968
967
                 ('replace', 1,8, 1,8),
969
968
                 ('equal',   8,9, 8,9)
970
969
                ])
971
 
        chk_ops('aBcdEeXcdFg', 'abcdecdfg',
 
970
        chk_ops('aBcdEeXcdFg', 'abcdecdfg', 
972
971
                [('equal',   0,1, 0,1),
973
972
                 ('replace', 1,2, 1,2),
974
973
                 ('equal',   2,4, 2,4),
1034
1033
    """
1035
1034
    gnxrf_netf = ['svyr*']
1036
1035
    gnxrf_bcgvbaf = ['ab-erphefr']
1037
 
 
 
1036
  
1038
1037
    qrs eha(frys, svyr_yvfg, ab_erphefr=Snyfr):
1039
1038
        sebz omeyvo.nqq vzcbeg fzneg_nqq, nqq_ercbegre_cevag, nqq_ercbegre_ahyy
1040
1039
        vs vf_dhvrg():
1048
1047
'''.splitlines(True), '''\
1049
1048
    trg nqqrq jura lbh nqq n svyr va gur qverpgbel.
1050
1049
 
1051
 
    --qel-eha jvyy fubj juvpu svyrf jbhyq or nqqrq, ohg abg npghnyyl
 
1050
    --qel-eha jvyy fubj juvpu svyrf jbhyq or nqqrq, ohg abg npghnyyl 
1052
1051
    nqq gurz.
1053
1052
    """
1054
1053
    gnxrf_netf = ['svyr*']
1083
1082
                 'how are you today?\n']
1084
1083
        unified_diff = bzrlib.patiencediff.unified_diff
1085
1084
        psm = self._PatienceSequenceMatcher
1086
 
        self.assertEquals(['--- \n',
1087
 
                           '+++ \n',
 
1085
        self.assertEquals([ '---  \n',
 
1086
                           '+++  \n',
1088
1087
                           '@@ -1,3 +1,2 @@\n',
1089
1088
                           ' hello there\n',
1090
1089
                           '-world\n',
1095
1094
        txt_a = map(lambda x: x+'\n', 'abcdefghijklmnop')
1096
1095
        txt_b = map(lambda x: x+'\n', 'abcdefxydefghijklmnop')
1097
1096
        # This is the result with LongestCommonSubstring matching
1098
 
        self.assertEquals(['--- \n',
1099
 
                           '+++ \n',
 
1097
        self.assertEquals(['---  \n',
 
1098
                           '+++  \n',
1100
1099
                           '@@ -1,6 +1,11 @@\n',
1101
1100
                           ' a\n',
1102
1101
                           ' b\n',
1111
1110
                           ' f\n']
1112
1111
                          , list(unified_diff(txt_a, txt_b)))
1113
1112
        # And the patience diff
1114
 
        self.assertEquals(['--- \n',
1115
 
                           '+++ \n',
 
1113
        self.assertEquals(['---  \n',
 
1114
                           '+++  \n',
1116
1115
                           '@@ -4,6 +4,11 @@\n',
1117
1116
                           ' d\n',
1118
1117
                           ' e\n',
1129
1128
                          , list(unified_diff(txt_a, txt_b,
1130
1129
                                 sequencematcher=psm)))
1131
1130
 
1132
 
    def test_patience_unified_diff_with_dates(self):
1133
 
        txt_a = ['hello there\n',
1134
 
                 'world\n',
1135
 
                 'how are you today?\n']
1136
 
        txt_b = ['hello there\n',
1137
 
                 'how are you today?\n']
1138
 
        unified_diff = bzrlib.patiencediff.unified_diff
1139
 
        psm = self._PatienceSequenceMatcher
1140
 
        self.assertEquals(['--- a\t2008-08-08\n',
1141
 
                           '+++ b\t2008-09-09\n',
1142
 
                           '@@ -1,3 +1,2 @@\n',
1143
 
                           ' hello there\n',
1144
 
                           '-world\n',
1145
 
                           ' how are you today?\n'
1146
 
                          ]
1147
 
                          , list(unified_diff(txt_a, txt_b,
1148
 
                                 fromfile='a', tofile='b',
1149
 
                                 fromfiledate='2008-08-08',
1150
 
                                 tofiledate='2008-09-09',
1151
 
                                 sequencematcher=psm)))
1152
 
 
1153
1131
 
1154
1132
class TestPatienceDiffLib_c(TestPatienceDiffLib):
1155
1133
 
1195
1173
 
1196
1174
        unified_diff_files = bzrlib.patiencediff.unified_diff_files
1197
1175
        psm = self._PatienceSequenceMatcher
1198
 
        self.assertEquals(['--- a1\n',
1199
 
                           '+++ b1\n',
 
1176
        self.assertEquals(['--- a1 \n',
 
1177
                           '+++ b1 \n',
1200
1178
                           '@@ -1,3 +1,2 @@\n',
1201
1179
                           ' hello there\n',
1202
1180
                           '-world\n',
1211
1189
        open('b2', 'wb').writelines(txt_b)
1212
1190
 
1213
1191
        # This is the result with LongestCommonSubstring matching
1214
 
        self.assertEquals(['--- a2\n',
1215
 
                           '+++ b2\n',
 
1192
        self.assertEquals(['--- a2 \n',
 
1193
                           '+++ b2 \n',
1216
1194
                           '@@ -1,6 +1,11 @@\n',
1217
1195
                           ' a\n',
1218
1196
                           ' b\n',
1228
1206
                          , list(unified_diff_files('a2', 'b2')))
1229
1207
 
1230
1208
        # And the patience diff
1231
 
        self.assertEquals(['--- a2\n',
1232
 
                           '+++ b2\n',
 
1209
        self.assertEquals(['--- a2 \n',
 
1210
                           '+++ b2 \n',
1233
1211
                           '@@ -4,6 +4,11 @@\n',
1234
1212
                           ' d\n',
1235
1213
                           ' e\n',