/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: 2017-07-23 22:06:41 UTC
  • mfrom: (6738 trunk)
  • mto: This revision was merged to the branch mainline in revision 6739.
  • Revision ID: jelmer@jelmer.uk-20170723220641-69eczax9bmv8d6kk
Merge trunk, address review comments.

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