/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 bzrlib/tests/test_diff.py

Merge up with bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
import os
 
18
import os.path
18
19
from cStringIO import StringIO
19
20
import errno
20
21
import subprocess
21
22
from tempfile import TemporaryFile
22
23
 
 
24
from bzrlib import tests
23
25
from bzrlib.diff import (
24
26
    DiffFromTool,
25
27
    DiffPath,
30
32
    internal_diff,
31
33
    show_diff_trees,
32
34
    )
33
 
from bzrlib.errors import BinaryFile, NoDiff
 
35
from bzrlib.errors import BinaryFile, NoDiff, ExecutableMissing
34
36
import bzrlib.osutils as osutils
35
37
import bzrlib.patiencediff
36
38
import bzrlib._patiencediff_py
663
665
             ' \@\@\n-old\n\+new\n\n')
664
666
 
665
667
    def test_diff_kind_change(self):
 
668
        self.requireFeature(tests.SymlinkFeature)
666
669
        self.build_tree_contents([('old-tree/olddir/',),
667
670
                                  ('old-tree/olddir/oldfile', 'old\n')])
668
671
        self.old_tree.add('olddir')
1243
1246
        self.addCleanup(diff_obj.finish)
1244
1247
        self.assertEqual(['diff', '%(old_path)s', '%(new_path)s'],
1245
1248
            diff_obj.command_template)
 
1249
 
 
1250
    def test_from_string_u5(self):
1246
1251
        diff_obj = DiffFromTool.from_string('diff -u\\ 5', None, None, None)
 
1252
        self.addCleanup(diff_obj.finish)
1247
1253
        self.assertEqual(['diff', '-u 5', '%(old_path)s', '%(new_path)s'],
1248
1254
                         diff_obj.command_template)
1249
1255
        self.assertEqual(['diff', '-u 5', 'old-path', 'new-path'],
1256
1262
                                None, None, output)
1257
1263
        self.addCleanup(diff_obj.finish)
1258
1264
        diff_obj._execute('old', 'new')
1259
 
        self.assertEqual(output.getvalue(), 'old new\n')
 
1265
        self.assertEqual(output.getvalue().rstrip(), 'old new')
 
1266
 
 
1267
    def test_excute_missing(self):
 
1268
        diff_obj = DiffFromTool(['a-tool-which-is-unlikely-to-exist'],
 
1269
                                None, None, None)
 
1270
        self.addCleanup(diff_obj.finish)
 
1271
        e = self.assertRaises(ExecutableMissing, diff_obj._execute, 'old',
 
1272
                              'new')
 
1273
        self.assertEqual('a-tool-which-is-unlikely-to-exist could not be found'
 
1274
                         ' on this machine', str(e))
1260
1275
 
1261
1276
    def test_prepare_files(self):
1262
1277
        output = StringIO()
1263
1278
        tree = self.make_branch_and_tree('tree')
1264
 
        self.build_tree_contents([('tree/file', 'oldcontent')])
1265
 
        tree.add('file', 'file-id')
1266
 
        tree.commit('old tree')
1267
 
        self.build_tree_contents([('tree/file', 'newcontent')])
 
1279
        self.build_tree_contents([('tree/oldname', 'oldcontent')])
 
1280
        tree.add('oldname', 'file-id')
 
1281
        tree.commit('old tree', timestamp=0)
 
1282
        tree.rename_one('oldname', 'newname')
 
1283
        self.build_tree_contents([('tree/newname', 'newcontent')])
1268
1284
        old_tree = tree.basis_tree()
1269
1285
        old_tree.lock_read()
1270
1286
        self.addCleanup(old_tree.unlock)
 
1287
        tree.lock_read()
 
1288
        self.addCleanup(tree.unlock)
1271
1289
        diff_obj = DiffFromTool(['python', '-c',
1272
1290
                                 'print "%(old_path)s %(new_path)s"'],
1273
1291
                                old_tree, tree, output)
1276
1294
        old_path, new_path = diff_obj._prepare_files('file-id', 'oldname',
1277
1295
                                                     'newname')
1278
1296
        self.assertContainsRe(old_path, 'old/oldname$')
 
1297
        self.assertEqual(0, os.stat(old_path).st_mtime)
1279
1298
        self.assertContainsRe(new_path, 'new/newname$')
1280
1299
        self.assertFileEqual('oldcontent', old_path)
1281
1300
        self.assertFileEqual('newcontent', new_path)
 
1301
        if osutils.has_symlinks():
 
1302
            self.assertTrue(os.path.samefile('tree/newname', new_path))
1282
1303
        # make sure we can create files with the same parent directories
1283
1304
        diff_obj._prepare_files('file-id', 'oldname2', 'newname2')