/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_shelf.py

  • Committer: Martin
  • Date: 2017-06-27 00:57:14 UTC
  • mto: This revision was merged to the branch mainline in revision 6722.
  • Revision ID: gzlist@googlemail.com-20170627005714-64ns3u0x5g866cdp
Adapt StaticTuple tests to change in comparison semantics on Python 3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2008, 2009, 2010 Canonical Ltd
 
1
# Copyright (C) 2008-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
16
16
 
17
17
import os
18
18
 
19
 
from bzrlib import (
 
19
from .. import (
20
20
    errors,
21
21
    osutils,
22
 
    pack,
23
22
    shelf,
24
23
    tests,
25
24
    transform,
26
25
    workingtree,
27
26
    )
 
27
from ..bzr import (
 
28
    pack,
 
29
    )
 
30
from . import (
 
31
    features,
 
32
    )
28
33
 
29
34
 
30
35
EMPTY_SHELF = ("Bazaar pack format 1 (introduced in 0.18)\n"
187
192
 
188
193
    def check_shelve_creation(self, creator, tree):
189
194
        self.assertRaises(StopIteration,
190
 
                          tree.iter_entries_by_dir(['foo-id']).next)
 
195
                          next, tree.iter_entries_by_dir(['foo-id']))
191
196
        s_trans_id = creator.shelf_transform.trans_id_file_id('foo-id')
192
197
        self.assertEqual('foo-id',
193
198
                         creator.shelf_transform.final_file_id(s_trans_id))
194
 
        self.failIfExists('foo')
195
 
        self.failIfExists('bar')
 
199
        self.assertPathDoesNotExist('foo')
 
200
        self.assertPathDoesNotExist('bar')
196
201
        self.assertShelvedFileEqual('a\n', creator, 'foo-id')
197
202
        s_bar_trans_id = creator.shelf_transform.trans_id_file_id('bar-id')
198
203
        self.assertEqual('directory',
214
219
 
215
220
    def _test_shelve_symlink_creation(self, link_name, link_target,
216
221
                                      shelve_change=False):
217
 
        self.requireFeature(tests.SymlinkFeature)
 
222
        self.requireFeature(features.SymlinkFeature)
218
223
        tree = self.make_branch_and_tree('.')
219
224
        tree.lock_write()
220
225
        self.addCleanup(tree.unlock)
231
236
            creator.shelve_creation('foo-id')
232
237
        creator.transform()
233
238
        s_trans_id = creator.shelf_transform.trans_id_file_id('foo-id')
234
 
        self.failIfExists(link_name)
 
239
        self.assertPathDoesNotExist(link_name)
235
240
        limbo_name = creator.shelf_transform._limbo_name(s_trans_id)
236
241
        self.assertEqual(link_target, osutils.readlink(limbo_name))
237
242
        ptree = creator.shelf_transform.get_preview_tree()
241
246
        self._test_shelve_symlink_creation('foo', 'bar')
242
247
 
243
248
    def test_shelve_unicode_symlink_creation(self):
244
 
        self.requireFeature(tests.UnicodeFilenameFeature)
 
249
        self.requireFeature(features.UnicodeFilenameFeature)
245
250
        self._test_shelve_symlink_creation(u'fo\N{Euro Sign}o',
246
251
                                           u'b\N{Euro Sign}ar')
247
252
 
251
256
    def _test_shelve_symlink_target_change(self, link_name,
252
257
                                           old_target, new_target,
253
258
                                           shelve_change=False):
254
 
        self.requireFeature(tests.SymlinkFeature)
 
259
        self.requireFeature(features.SymlinkFeature)
255
260
        tree = self.make_branch_and_tree('.')
256
261
        tree.lock_write()
257
262
        self.addCleanup(tree.unlock)
282
287
        self._test_shelve_symlink_target_change('foo', 'bar', 'baz')
283
288
 
284
289
    def test_shelve_unicode_symlink_target_change(self):
285
 
        self.requireFeature(tests.UnicodeFilenameFeature)
 
290
        self.requireFeature(features.UnicodeFilenameFeature)
286
291
        self._test_shelve_symlink_target_change(
287
292
            u'fo\N{Euro Sign}o', u'b\N{Euro Sign}ar', u'b\N{Euro Sign}az')
288
293
 
305
310
        creator.shelve_creation('foo-id')
306
311
        creator.transform()
307
312
        self.assertRaises(StopIteration,
308
 
                          tree.iter_entries_by_dir(['foo-id']).next)
 
313
                          next, tree.iter_entries_by_dir(['foo-id']))
309
314
        self.assertShelvedFileEqual('', creator, 'foo-id')
310
315
        s_trans_id = creator.shelf_transform.trans_id_file_id('foo-id')
311
316
        self.assertEqual('foo-id',
312
317
                         creator.shelf_transform.final_file_id(s_trans_id))
313
 
        self.failIfExists('foo')
 
318
        self.assertPathDoesNotExist('foo')
314
319
 
315
320
    def prepare_shelve_deletion(self):
316
321
        tree = self.make_branch_and_tree('tree')
330
335
        return creator, tree
331
336
 
332
337
    def check_shelve_deletion(self, tree):
333
 
        self.assertTrue('foo-id' in tree)
334
 
        self.assertTrue('bar-id' in tree)
 
338
        self.assertTrue(tree.has_id('foo-id'))
 
339
        self.assertTrue(tree.has_id('bar-id'))
335
340
        self.assertFileEqual('baz', 'tree/foo/bar')
336
341
 
337
342
    def test_shelve_deletion(self):
362
367
                         sorted(list(creator.iter_shelvable())))
363
368
        creator.shelve_deletion('foo-id')
364
369
        creator.transform()
365
 
        self.failUnlessExists('tree/foo')
 
370
        self.assertPathExists('tree/foo')
366
371
 
367
372
    def prepare_shelve_change_kind(self):
368
373
        tree = self.make_branch_and_tree('tree')
421
426
                         sorted(list(creator.iter_shelvable())))
422
427
        creator.shelve_deletion('foo-id')
423
428
        creator.transform()
424
 
        self.failUnlessExists('tree/foo')
 
429
        self.assertPathExists('tree/foo')
425
430
 
426
431
    def test_shelve_serialization(self):
427
432
        tree = self.make_branch_and_tree('.')
462
467
        self.addCleanup(tt.finalize)
463
468
        records = iter(parser.read_pending_records())
464
469
        #skip revision-id
465
 
        records.next()
 
470
        next(records)
466
471
        tt.deserialize(records)
467
472
 
468
473
    def test_shelve_unversioned(self):
568
573
        list(creator.iter_shelvable())
569
574
        creator.shelve_deletion('foo-id')
570
575
        creator.shelve_deletion('bar-id')
571
 
        shelf_file = open('shelf', 'w+b')
572
 
        self.addCleanup(shelf_file.close)
573
 
        creator.write_shelf(shelf_file)
574
 
        creator.transform()
575
 
        creator.finalize()
 
576
        with open('shelf', 'w+b') as shelf_file:
 
577
            creator.write_shelf(shelf_file)
 
578
            creator.transform()
 
579
            creator.finalize()
576
580
        # validate the test setup
577
 
        self.assertTrue('foo-id' in tree)
578
 
        self.assertTrue('bar-id' in tree)
 
581
        self.assertTrue(tree.has_id('foo-id'))
 
582
        self.assertTrue(tree.has_id('bar-id'))
579
583
        self.assertFileEqual('baz', 'tree/foo/bar')
580
 
        shelf_file.seek(0)
581
 
        unshelver = shelf.Unshelver.from_tree_and_shelf(tree, shelf_file)
582
 
        self.addCleanup(unshelver.finalize)
583
 
        unshelver.make_merger().do_merge()
584
 
        self.assertFalse('foo-id' in tree)
585
 
        self.assertFalse('bar-id' in tree)
 
584
        with open('shelf', 'r+b') as shelf_file:
 
585
            unshelver = shelf.Unshelver.from_tree_and_shelf(tree, shelf_file)
 
586
            self.addCleanup(unshelver.finalize)
 
587
            unshelver.make_merger().do_merge()
 
588
        self.assertFalse(tree.has_id('foo-id'))
 
589
        self.assertFalse(tree.has_id('bar-id'))
586
590
 
587
591
    def test_unshelve_base(self):
588
592
        tree = self.make_branch_and_tree('tree')
623
627
                              shelf_file)
624
628
        self.assertEqual('Shelf corrupt.', str(e))
625
629
 
 
630
    def test_unshelve_subdir_in_now_removed_dir(self):
 
631
        tree = self.make_branch_and_tree('.')
 
632
        self.addCleanup(tree.lock_write().unlock)
 
633
        self.build_tree(['dir/', 'dir/subdir/', 'dir/subdir/foo'])
 
634
        tree.add(['dir'], ['dir-id'])
 
635
        tree.commit('versioned dir')
 
636
        tree.add(['dir/subdir', 'dir/subdir/foo'], ['subdir-id', 'foo-id'])
 
637
        creator = shelf.ShelfCreator(tree, tree.basis_tree())
 
638
        self.addCleanup(creator.finalize)
 
639
        for change in creator.iter_shelvable():
 
640
            creator.shelve_change(change)
 
641
        shelf_manager = tree.get_shelf_manager()
 
642
        shelf_id = shelf_manager.shelve_changes(creator)
 
643
        self.assertPathDoesNotExist('dir/subdir')
 
644
        tree.remove(['dir'])
 
645
        unshelver = shelf_manager.get_unshelver(shelf_id)
 
646
        self.addCleanup(unshelver.finalize)
 
647
        unshelver.make_merger().do_merge()
 
648
        self.assertPathExists('dir/subdir/foo')
 
649
        self.assertEqual('dir-id', tree.path2id('dir'))
 
650
        self.assertEqual('subdir-id', tree.path2id('dir/subdir'))
 
651
        self.assertEqual('foo-id', tree.path2id('dir/subdir/foo'))
 
652
 
626
653
 
627
654
class TestShelfManager(tests.TestCaseWithTransport):
628
655
 
723
750
        creator.shelve_creation('foo-id')
724
751
        shelf_manager = tree.get_shelf_manager()
725
752
        shelf_id = shelf_manager.shelve_changes(creator)
726
 
        self.failIfExists('tree/foo')
 
753
        self.assertPathDoesNotExist('tree/foo')
727
754
        unshelver = shelf_manager.get_unshelver(shelf_id)
728
755
        self.addCleanup(unshelver.finalize)
729
756
        unshelver.make_merger().do_merge()