/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 brzlib/tests/test_shelf_ui.py

  • Committer: Jelmer Vernooij
  • Date: 2017-05-21 12:41:27 UTC
  • mto: This revision was merged to the branch mainline in revision 6623.
  • Revision ID: jelmer@jelmer.uk-20170521124127-iv8etg0vwymyai6y
s/bzr/brz/ in apport config.

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
from cStringIO import StringIO
19
19
import os
20
20
import sys
21
21
from textwrap import dedent
22
22
 
23
 
from .. import (
 
23
from brzlib import (
24
24
    errors,
25
25
    shelf_ui,
26
26
    revision,
27
 
    shelf,
28
27
    tests,
29
 
    )
30
 
from . import script
31
 
from . import (
 
28
)
 
29
from brzlib.tests import script
 
30
from brzlib.tests import (
32
31
    features,
33
32
    )
34
33
 
43
42
                                  auto, auto_apply, file_list, message,
44
43
                                  destroy, reporter=reporter)
45
44
        self.expected = []
46
 
        self.diff_writer = BytesIO()
 
45
        self.diff_writer = StringIO()
47
46
 
48
47
    def expect(self, message, response):
49
48
        self.expected.append((message, response))
60
59
        return response
61
60
 
62
61
 
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'
 
62
LINES_AJ = 'a\nb\nc\nd\ne\nf\ng\nh\ni\nj\n'
 
63
 
 
64
 
 
65
LINES_ZY = 'z\nb\nc\nd\ne\nf\ng\nh\ni\ny\n'
 
66
 
 
67
 
 
68
LINES_AY = 'a\nb\nc\nd\ne\nf\ng\nh\ni\ny\n'
70
69
 
71
70
 
72
71
class ShelfTestCase(tests.TestCaseWithTransport):
74
73
    def create_shelvable_tree(self):
75
74
        tree = self.make_branch_and_tree('tree')
76
75
        self.build_tree_contents([('tree/foo', LINES_AJ)])
77
 
        tree.add('foo', b'foo-id')
 
76
        tree.add('foo', 'foo-id')
78
77
        tree.commit('added foo')
79
78
        self.build_tree_contents([('tree/foo', LINES_ZY)])
80
79
        return tree
151
150
 
152
151
    def test_shelve_binary_change(self):
153
152
        tree = self.create_shelvable_tree()
154
 
        self.build_tree_contents([('tree/foo', b'\x00')])
 
153
        self.build_tree_contents([('tree/foo', '\x00')])
155
154
        tree.lock_tree_write()
156
155
        self.addCleanup(tree.unlock)
157
156
        shelver = ExpectShelver(tree, tree.basis_tree())
217
216
        self.requireFeature(features.SymlinkFeature)
218
217
        tree = self.create_shelvable_tree()
219
218
        os.symlink('bar', 'tree/baz')
220
 
        tree.add('baz', b'baz-id')
 
219
        tree.add('baz', 'baz-id')
221
220
        tree.commit("Add symlink")
222
221
        os.unlink('tree/baz')
223
222
        os.symlink('vax', 'tree/baz')
226
225
        shelver = ExpectShelver(tree, tree.basis_tree())
227
226
        self.addCleanup(shelver.finalize)
228
227
        shelver.expect('Shelve changing target of "baz" from "bar" to '
229
 
                       '"vax"?', 0)
 
228
                '"vax"?', 0)
230
229
        shelver.expect('Shelve 1 change(s)?', 0)
231
230
        shelver.run()
232
231
        self.assertEqual('bar', os.readlink('tree/baz'))
253
252
        self.assertFileEqual(LINES_ZY, 'tree/foo')
254
253
 
255
254
    def test_shelve_all(self):
256
 
        self.create_shelvable_tree()
 
255
        tree = self.create_shelvable_tree()
257
256
        shelver = ExpectShelver.from_args(sys.stdout, all=True,
258
 
                                          directory='tree')
 
257
            directory='tree')
259
258
        try:
260
259
            shelver.run()
261
260
        finally:
300
299
    def test_shelve_old_root_preserved(self):
301
300
        tree1 = self.make_branch_and_tree('tree1')
302
301
        tree1.commit('add root')
303
 
        tree1_root_id = tree1.path2id('')
 
302
        tree1_root_id = tree1.get_root_id()
304
303
        tree2 = self.make_branch_and_tree('tree2')
305
304
        rev2 = tree2.commit('add root')
306
 
        self.assertNotEqual(tree1_root_id, tree2.path2id(''))
 
305
        self.assertNotEqual(tree1_root_id, tree2.get_root_id())
307
306
        tree1.merge_from_branch(tree2.branch,
308
307
                                from_revision=revision.NULL_REVISION)
309
308
        tree1.commit('merging in tree2')
310
 
        self.assertEqual(tree1_root_id, tree1.path2id(''))
 
309
        self.assertEqual(tree1_root_id, tree1.get_root_id())
311
310
        # This is essentially assertNotRaises(InconsistentDelta)
312
311
        # With testtools 0.9.9, it can be rewritten as:
313
312
        # with ExpectedException(AssertionError,
376
375
 
377
376
    def test_shelve_binary_change(self):
378
377
        tree = self.create_shelvable_tree()
379
 
        self.build_tree_contents([('tree/foo', b'\x00')])
 
378
        self.build_tree_contents([('tree/foo', '\x00')])
380
379
        tree.lock_tree_write()
381
380
        self.addCleanup(tree.unlock)
382
381
        shelver = ExpectShelver(tree, tree.basis_tree(),
437
436
        tree.lock_tree_write()
438
437
        self.addCleanup(tree.unlock)
439
438
        shelver = ExpectShelver(tree, tree.basis_tree(),
440
 
                                reporter=shelf_ui.ApplyReporter())
 
439
                               reporter=shelf_ui.ApplyReporter())
441
440
        self.addCleanup(shelver.finalize)
442
441
        shelver.expect('Change "foo" from directory to a file?', 0)
443
442
        shelver.expect('Apply 1 change(s)?', 0)
446
445
        self.requireFeature(features.SymlinkFeature)
447
446
        tree = self.create_shelvable_tree()
448
447
        os.symlink('bar', 'tree/baz')
449
 
        tree.add('baz', b'baz-id')
 
448
        tree.add('baz', 'baz-id')
450
449
        tree.commit("Add symlink")
451
450
        os.unlink('tree/baz')
452
451
        os.symlink('vax', 'tree/baz')
469
468
        tree.lock_write()
470
469
        try:
471
470
            self.build_tree_contents([('tree/foo', LINES_AJ)])
472
 
            tree.add('foo', b'foo-id')
 
471
            tree.add('foo', 'foo-id')
473
472
            tree.commit('added foo')
474
473
            self.build_tree_contents([('tree/foo', LINES_ZY)])
475
474
            shelver = shelf_ui.Shelver(tree, tree.basis_tree(),
503
502
    def test_unshelve_args_dry_run(self):
504
503
        tree = self.create_tree_with_shelf()
505
504
        unshelver = shelf_ui.Unshelver.from_args(directory='tree',
506
 
                                                 action='dry-run')
 
505
            action='dry-run')
507
506
        try:
508
507
            unshelver.run()
509
508
        finally:
513
512
 
514
513
    def test_unshelve_args_preview(self):
515
514
        tree = self.create_tree_with_shelf()
516
 
        write_diff_to = BytesIO()
 
515
        write_diff_to = StringIO()
517
516
        unshelver = shelf_ui.Unshelver.from_args(
518
517
            directory='tree', action='preview', write_diff_to=write_diff_to)
519
518
        try:
541
540
            +y
542
541
 
543
542
            """)
544
 
        self.assertEqualDiff(expected.encode('utf-8'), diff[-len(expected):])
 
543
        self.assertEqualDiff(expected, diff[-len(expected):])
545
544
 
546
545
    def test_unshelve_args_delete_only(self):
547
546
        tree = self.make_branch_and_tree('tree')
548
547
        manager = tree.get_shelf_manager()
549
548
        shelf_file = manager.new_shelf()[1]
550
549
        try:
551
 
            shelf_file.write(b'garbage')
 
550
            shelf_file.write('garbage')
552
551
        finally:
553
552
            shelf_file.close()
554
553
        unshelver = shelf_ui.Unshelver.from_args(directory='tree',
564
563
        manager = tree.get_shelf_manager()
565
564
        shelf_file = manager.new_shelf()[1]
566
565
        try:
567
 
            shelf_file.write(b'garbage')
 
566
            shelf_file.write('garbage')
568
567
        finally:
569
568
            shelf_file.close()
570
 
        self.assertRaises(shelf.InvalidShelfId,
571
 
                          shelf_ui.Unshelver.from_args, directory='tree',
572
 
                          action='delete-only', shelf_id='foo')
573
 
 
574
 
 
575
 
class TestUnshelveScripts(TestUnshelver,
576
 
                          script.TestCaseWithTransportAndScript):
 
569
        self.assertRaises(errors.InvalidShelfId,
 
570
            shelf_ui.Unshelver.from_args, directory='tree',
 
571
            action='delete-only', shelf_id='foo')
 
572
 
 
573
 
 
574
class TestUnshelveScripts(TestUnshelver, 
 
575
                          script.TestCaseWithTransportAndScript): 
577
576
 
578
577
    def test_unshelve_messages_keep(self):
579
578
        self.create_tree_with_shelf()
580
579
        self.run_script("""
581
580
$ cd tree
582
 
$ brz unshelve --keep
 
581
$ bzr unshelve --keep
583
582
2>Using changes with id "1".
584
583
2> M  foo
585
584
2>All changes applied successfully.
589
588
        self.create_tree_with_shelf()
590
589
        self.run_script("""
591
590
$ cd tree
592
 
$ brz unshelve --delete-only
 
591
$ bzr unshelve --delete-only
593
592
2>Deleted changes with id "1".
594
593
""")
595
594
 
597
596
        self.create_tree_with_shelf()
598
597
        self.run_script("""
599
598
$ cd tree
600
 
$ brz unshelve --apply
 
599
$ bzr unshelve --apply
601
600
2>Using changes with id "1".
602
601
2> M  foo
603
602
2>All changes applied successfully.
608
607
        self.create_tree_with_shelf()
609
608
        self.run_script("""
610
609
$ cd tree
611
 
$ brz unshelve --dry-run
 
610
$ bzr unshelve --dry-run
612
611
2>Using changes with id "1".
613
612
2> M  foo
614
613
""")