~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_transform.py

(gz) Fix deprecations of win32utils path function unicode wrappers (Martin
 Packman)

Show diffs side-by-side

added added

removed removed

Lines of Context:
62
62
from bzrlib.merge import Merge3Merger, Merger
63
63
from bzrlib.tests import (
64
64
    features,
 
65
    TestCaseInTempDir,
 
66
    TestSkipped,
 
67
    )
 
68
from bzrlib.tests.features import (
65
69
    HardlinkFeature,
66
70
    SymlinkFeature,
67
 
    TestCaseInTempDir,
68
 
    TestSkipped,
69
 
)
 
71
    )
70
72
from bzrlib.transform import (
71
73
    build_tree,
72
74
    create_from_tree,
285
287
        new_trans_id = transform.new_directory('', ROOT_PARENT, 'alt-root-id')
286
288
        self.assertRaises(ValueError, transform.fixup_new_roots)
287
289
 
 
290
    def test_retain_existing_root(self):
 
291
        tt, root = self.get_transform()
 
292
        with tt:
 
293
            tt.new_directory('', ROOT_PARENT, 'new-root-id')
 
294
            tt.fixup_new_roots()
 
295
            self.assertNotEqual('new-root-id', tt.final_file_id(tt.root))
 
296
 
 
297
    def test_retain_existing_root_added_file(self):
 
298
        tt, root = self.get_transform()
 
299
        new_trans_id = tt.new_directory('', ROOT_PARENT, 'new-root-id')
 
300
        child = tt.new_directory('child', new_trans_id, 'child-id')
 
301
        tt.fixup_new_roots()
 
302
        self.assertEqual(tt.root, tt.final_parent(child))
 
303
 
288
304
    def test_add_unversioned_root(self):
289
305
        transform, root = self.get_transform()
290
306
        new_trans_id = transform.new_directory('', ROOT_PARENT, None)
 
307
        transform.delete_contents(transform.root)
291
308
        transform.fixup_new_roots()
292
309
        self.assertNotIn(transform.root, transform._new_id)
293
310
 
306
323
        new_trans_id = transform.new_directory('', ROOT_PARENT, 'alt-root-id')
307
324
        self.assertRaises(ValueError, transform.fixup_new_roots)
308
325
 
 
326
    def test_fixup_new_roots_permits_empty_tree(self):
 
327
        transform, root = self.get_transform()
 
328
        transform.delete_contents(root)
 
329
        transform.unversion_file(root)
 
330
        transform.fixup_new_roots()
 
331
        self.assertIs(None, transform.final_kind(root))
 
332
        self.assertIs(None, transform.final_file_id(root))
 
333
 
309
334
    def test_apply_retains_root_directory(self):
310
335
        # Do not attempt to delete the physical root directory, because that
311
336
        # is impossible.
317
342
                                  transform.apply)
318
343
        self.assertContainsRe('TransformRenameFailed not raised', str(e))
319
344
 
 
345
    def test_apply_retains_file_id(self):
 
346
        transform, root = self.get_transform()
 
347
        old_root_id = transform.tree_file_id(root)
 
348
        transform.unversion_file(root)
 
349
        transform.apply()
 
350
        self.assertEqual(old_root_id, self.wt.get_root_id())
 
351
 
320
352
    def test_hardlink(self):
321
353
        self.requireFeature(HardlinkFeature)
322
354
        transform, root = self.get_transform()
749
781
                            'wizard2', 'behind_curtain')
750
782
 
751
783
    def test_symlinks_unicode(self):
752
 
        self.requireFeature(tests.UnicodeFilenameFeature)
 
784
        self.requireFeature(features.UnicodeFilenameFeature)
753
785
        self._test_symlinks(u'\N{Euro Sign}wizard',
754
786
                            u'wizard-targ\N{Euro Sign}t',
755
787
                            u'\N{Euro Sign}wizard2',
1444
1476
        # The rename will fail because the target directory is not empty (but
1445
1477
        # raises FileExists anyway).
1446
1478
        err = self.assertRaises(errors.FileExists, tt_helper)
1447
 
        self.assertContainsRe(str(err),
1448
 
            "^File exists: .+/baz")
 
1479
        self.assertEndsWith(err.path, "/baz")
1449
1480
 
1450
1481
    def test_two_directories_clash(self):
1451
1482
        def tt_helper():
1463
1494
                wt.unlock()
1464
1495
                raise
1465
1496
        err = self.assertRaises(errors.FileExists, tt_helper)
1466
 
        self.assertContainsRe(str(err),
1467
 
            "^File exists: .+/foo")
 
1497
        self.assertEndsWith(err.path, "/foo")
1468
1498
 
1469
1499
    def test_two_directories_clash_finalize(self):
1470
1500
        def tt_helper():
1482
1512
                tt.finalize()
1483
1513
                raise
1484
1514
        err = self.assertRaises(errors.FileExists, tt_helper)
1485
 
        self.assertContainsRe(str(err),
1486
 
            "^File exists: .+/foo")
 
1515
        self.assertEndsWith(err.path, "/foo")
1487
1516
 
1488
1517
    def test_file_to_directory(self):
1489
1518
        wt = self.make_branch_and_tree('.')
2194
2223
        self.assertEqualStat(source_stat, target_stat)
2195
2224
 
2196
2225
    def test_case_insensitive_build_tree_inventory(self):
2197
 
        if (tests.CaseInsensitiveFilesystemFeature.available()
2198
 
            or tests.CaseInsCasePresFilenameFeature.available()):
 
2226
        if (features.CaseInsensitiveFilesystemFeature.available()
 
2227
            or features.CaseInsCasePresFilenameFeature.available()):
2199
2228
            raise tests.UnavailableFeature('Fully case sensitive filesystem')
2200
2229
        source = self.make_branch_and_tree('source')
2201
2230
        self.build_tree(['source/file', 'source/FILE'])
3314
3343
        self.assertEqual('contents', rev2_tree.get_file_text('file_id'))
3315
3344
 
3316
3345
    def test_ascii_limbo_paths(self):
3317
 
        self.requireFeature(tests.UnicodeFilenameFeature)
 
3346
        self.requireFeature(features.UnicodeFilenameFeature)
3318
3347
        branch = self.make_branch('any')
3319
3348
        tree = branch.repository.revision_tree(_mod_revision.NULL_REVISION)
3320
3349
        tt = TransformPreview(tree)
3337
3366
 
3338
3367
class TestSerializeTransform(tests.TestCaseWithTransport):
3339
3368
 
3340
 
    _test_needs_features = [tests.UnicodeFilenameFeature]
 
3369
    _test_needs_features = [features.UnicodeFilenameFeature]
3341
3370
 
3342
3371
    def get_preview(self, tree=None):
3343
3372
        if tree is None:
3418
3447
        return self.make_records(attribs, contents)
3419
3448
 
3420
3449
    def test_serialize_symlink_creation(self):
3421
 
        self.requireFeature(tests.SymlinkFeature)
 
3450
        self.requireFeature(features.SymlinkFeature)
3422
3451
        tt = self.get_preview()
3423
3452
        tt.new_symlink(u'foo\u1234', tt.root, u'bar\u1234')
3424
3453
        self.assertSerializesTo(self.symlink_creation_records(), tt)
3425
3454
 
3426
3455
    def test_deserialize_symlink_creation(self):
3427
 
        self.requireFeature(tests.SymlinkFeature)
 
3456
        self.requireFeature(features.SymlinkFeature)
3428
3457
        tt = self.get_preview()
3429
3458
        tt.deserialize(iter(self.symlink_creation_records()))
3430
3459
        abspath = tt._limbo_name('new-1')