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

  • Committer: Jelmer Vernooij
  • Date: 2020-03-22 01:35:14 UTC
  • mfrom: (7490.7.6 work)
  • mto: This revision was merged to the branch mainline in revision 7499.
  • Revision ID: jelmer@jelmer.uk-20200322013514-7vw1ntwho04rcuj3
merge lp:brz/3.1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
 
 
18
from io import BytesIO
18
19
import os
19
20
import sys
20
21
from textwrap import dedent
26
27
    shelf,
27
28
    tests,
28
29
    )
29
 
from ..sixish import (
30
 
    BytesIO,
31
 
    )
32
30
from . import script
33
31
from . import (
34
32
    features,
62
60
        return response
63
61
 
64
62
 
65
 
LINES_AJ = 'a\nb\nc\nd\ne\nf\ng\nh\ni\nj\n'
66
 
 
67
 
 
68
 
LINES_ZY = 'z\nb\nc\nd\ne\nf\ng\nh\ni\ny\n'
69
 
 
70
 
 
71
 
LINES_AY = 'a\nb\nc\nd\ne\nf\ng\nh\ni\ny\n'
 
63
LINES_AJ = b'a\nb\nc\nd\ne\nf\ng\nh\ni\nj\n'
 
64
 
 
65
 
 
66
LINES_ZY = b'z\nb\nc\nd\ne\nf\ng\nh\ni\ny\n'
 
67
 
 
68
 
 
69
LINES_AY = b'a\nb\nc\nd\ne\nf\ng\nh\ni\ny\n'
72
70
 
73
71
 
74
72
class ShelfTestCase(tests.TestCaseWithTransport):
76
74
    def create_shelvable_tree(self):
77
75
        tree = self.make_branch_and_tree('tree')
78
76
        self.build_tree_contents([('tree/foo', LINES_AJ)])
79
 
        tree.add('foo', 'foo-id')
 
77
        tree.add('foo', b'foo-id')
80
78
        tree.commit('added foo')
81
79
        self.build_tree_contents([('tree/foo', LINES_ZY)])
82
80
        return tree
153
151
 
154
152
    def test_shelve_binary_change(self):
155
153
        tree = self.create_shelvable_tree()
156
 
        self.build_tree_contents([('tree/foo', '\x00')])
 
154
        self.build_tree_contents([('tree/foo', b'\x00')])
157
155
        tree.lock_tree_write()
158
156
        self.addCleanup(tree.unlock)
159
157
        shelver = ExpectShelver(tree, tree.basis_tree())
219
217
        self.requireFeature(features.SymlinkFeature)
220
218
        tree = self.create_shelvable_tree()
221
219
        os.symlink('bar', 'tree/baz')
222
 
        tree.add('baz', 'baz-id')
 
220
        tree.add('baz', b'baz-id')
223
221
        tree.commit("Add symlink")
224
222
        os.unlink('tree/baz')
225
223
        os.symlink('vax', 'tree/baz')
228
226
        shelver = ExpectShelver(tree, tree.basis_tree())
229
227
        self.addCleanup(shelver.finalize)
230
228
        shelver.expect('Shelve changing target of "baz" from "bar" to '
231
 
                '"vax"?', 0)
 
229
                       '"vax"?', 0)
232
230
        shelver.expect('Shelve 1 change(s)?', 0)
233
231
        shelver.run()
234
232
        self.assertEqual('bar', os.readlink('tree/baz'))
255
253
        self.assertFileEqual(LINES_ZY, 'tree/foo')
256
254
 
257
255
    def test_shelve_all(self):
258
 
        tree = self.create_shelvable_tree()
 
256
        self.create_shelvable_tree()
259
257
        shelver = ExpectShelver.from_args(sys.stdout, all=True,
260
 
            directory='tree')
 
258
                                          directory='tree')
261
259
        try:
262
260
            shelver.run()
263
261
        finally:
302
300
    def test_shelve_old_root_preserved(self):
303
301
        tree1 = self.make_branch_and_tree('tree1')
304
302
        tree1.commit('add root')
305
 
        tree1_root_id = tree1.get_root_id()
 
303
        tree1_root_id = tree1.path2id('')
306
304
        tree2 = self.make_branch_and_tree('tree2')
307
305
        rev2 = tree2.commit('add root')
308
 
        self.assertNotEqual(tree1_root_id, tree2.get_root_id())
 
306
        self.assertNotEqual(tree1_root_id, tree2.path2id(''))
309
307
        tree1.merge_from_branch(tree2.branch,
310
308
                                from_revision=revision.NULL_REVISION)
311
309
        tree1.commit('merging in tree2')
312
 
        self.assertEqual(tree1_root_id, tree1.get_root_id())
 
310
        self.assertEqual(tree1_root_id, tree1.path2id(''))
313
311
        # This is essentially assertNotRaises(InconsistentDelta)
314
312
        # With testtools 0.9.9, it can be rewritten as:
315
313
        # with ExpectedException(AssertionError,
378
376
 
379
377
    def test_shelve_binary_change(self):
380
378
        tree = self.create_shelvable_tree()
381
 
        self.build_tree_contents([('tree/foo', '\x00')])
 
379
        self.build_tree_contents([('tree/foo', b'\x00')])
382
380
        tree.lock_tree_write()
383
381
        self.addCleanup(tree.unlock)
384
382
        shelver = ExpectShelver(tree, tree.basis_tree(),
439
437
        tree.lock_tree_write()
440
438
        self.addCleanup(tree.unlock)
441
439
        shelver = ExpectShelver(tree, tree.basis_tree(),
442
 
                               reporter=shelf_ui.ApplyReporter())
 
440
                                reporter=shelf_ui.ApplyReporter())
443
441
        self.addCleanup(shelver.finalize)
444
442
        shelver.expect('Change "foo" from directory to a file?', 0)
445
443
        shelver.expect('Apply 1 change(s)?', 0)
448
446
        self.requireFeature(features.SymlinkFeature)
449
447
        tree = self.create_shelvable_tree()
450
448
        os.symlink('bar', 'tree/baz')
451
 
        tree.add('baz', 'baz-id')
 
449
        tree.add('baz', b'baz-id')
452
450
        tree.commit("Add symlink")
453
451
        os.unlink('tree/baz')
454
452
        os.symlink('vax', 'tree/baz')
471
469
        tree.lock_write()
472
470
        try:
473
471
            self.build_tree_contents([('tree/foo', LINES_AJ)])
474
 
            tree.add('foo', 'foo-id')
 
472
            tree.add('foo', b'foo-id')
475
473
            tree.commit('added foo')
476
474
            self.build_tree_contents([('tree/foo', LINES_ZY)])
477
475
            shelver = shelf_ui.Shelver(tree, tree.basis_tree(),
505
503
    def test_unshelve_args_dry_run(self):
506
504
        tree = self.create_tree_with_shelf()
507
505
        unshelver = shelf_ui.Unshelver.from_args(directory='tree',
508
 
            action='dry-run')
 
506
                                                 action='dry-run')
509
507
        try:
510
508
            unshelver.run()
511
509
        finally:
543
541
            +y
544
542
 
545
543
            """)
546
 
        self.assertEqualDiff(expected, diff[-len(expected):])
 
544
        self.assertEqualDiff(expected.encode('utf-8'), diff[-len(expected):])
547
545
 
548
546
    def test_unshelve_args_delete_only(self):
549
547
        tree = self.make_branch_and_tree('tree')
550
548
        manager = tree.get_shelf_manager()
551
549
        shelf_file = manager.new_shelf()[1]
552
550
        try:
553
 
            shelf_file.write('garbage')
 
551
            shelf_file.write(b'garbage')
554
552
        finally:
555
553
            shelf_file.close()
556
554
        unshelver = shelf_ui.Unshelver.from_args(directory='tree',
566
564
        manager = tree.get_shelf_manager()
567
565
        shelf_file = manager.new_shelf()[1]
568
566
        try:
569
 
            shelf_file.write('garbage')
 
567
            shelf_file.write(b'garbage')
570
568
        finally:
571
569
            shelf_file.close()
572
570
        self.assertRaises(shelf.InvalidShelfId,
573
 
            shelf_ui.Unshelver.from_args, directory='tree',
574
 
            action='delete-only', shelf_id='foo')
575
 
 
576
 
 
577
 
class TestUnshelveScripts(TestUnshelver, 
578
 
                          script.TestCaseWithTransportAndScript): 
 
571
                          shelf_ui.Unshelver.from_args, directory='tree',
 
572
                          action='delete-only', shelf_id='foo')
 
573
 
 
574
 
 
575
class TestUnshelveScripts(TestUnshelver,
 
576
                          script.TestCaseWithTransportAndScript):
579
577
 
580
578
    def test_unshelve_messages_keep(self):
581
579
        self.create_tree_with_shelf()