19
from bzrlib import shelf
20
from bzrlib.tests import TestCaseWithTransport
21
from bzrlib.tests.script import ScriptRunner
19
from breezy import shelf
20
from breezy.tests import TestCaseWithTransport
21
from breezy.tests.script import ScriptRunner
24
24
class TestShelveList(TestCaseWithTransport):
26
26
def test_no_shelved_changes(self):
27
27
tree = self.make_branch_and_tree('.')
28
28
err = self.run_bzr('shelve --list')[1]
29
self.assertEqual('No shelved changes.\n', err)
29
self.assertEqual(b'No shelved changes.\n', err)
31
31
def make_creator(self, tree):
32
32
creator = shelf.ShelfCreator(tree, tree.basis_tree(), [])
38
38
creator = self.make_creator(tree)
39
39
shelf_id = tree.get_shelf_manager().shelve_changes(creator, 'Foo')
40
40
out, err = self.run_bzr('shelve --list', retcode=1)
41
self.assertEqual('', err)
42
self.assertEqual(' 1: Foo\n', out)
41
self.assertEqual(b'', err)
42
self.assertEqual(b' 1: Foo\n', out)
44
def test_shelve_list_via_directory(self):
45
tree = self.make_branch_and_tree('tree')
46
creator = self.make_creator(tree)
47
shelf_id = tree.get_shelf_manager().shelve_changes(creator, 'Foo')
48
out, err = self.run_bzr('shelve -d tree --list', retcode=1)
49
self.assertEqual(b'', err)
50
self.assertEqual(b' 1: Foo\n', out)
44
52
def test_shelve_no_message(self):
45
53
tree = self.make_branch_and_tree('.')
46
54
creator = self.make_creator(tree)
47
55
shelf_id = tree.get_shelf_manager().shelve_changes(creator)
48
56
out, err = self.run_bzr('shelve --list', retcode=1)
49
self.assertEqual('', err)
50
self.assertEqual(' 1: <no message>\n', out)
57
self.assertEqual(b'', err)
58
self.assertEqual(b' 1: <no message>\n', out)
52
60
def test_shelf_order(self):
53
61
tree = self.make_branch_and_tree('.')
56
64
creator = self.make_creator(tree)
57
65
tree.get_shelf_manager().shelve_changes(creator, 'Bar')
58
66
out, err = self.run_bzr('shelve --list', retcode=1)
59
self.assertEqual('', err)
60
self.assertEqual(' 2: Bar\n 1: Foo\n', out)
67
self.assertEqual(b'', err)
68
self.assertEqual(b' 2: Bar\n 1: Foo\n', out)
62
70
def test_shelve_destroy(self):
63
71
tree = self.make_branch_and_tree('.')
64
72
self.build_tree(['file'])
66
74
self.run_bzr('shelve --all --destroy')
67
self.failIfExists('file')
75
self.assertPathDoesNotExist('file')
68
76
self.assertIs(None, tree.get_shelf_manager().last_shelf())
70
78
def test_unshelve_keep(self):
71
# https://bugs.edge.launchpad.net/bzr/+bug/492091
79
# https://bugs.launchpad.net/bzr/+bug/492091
72
80
tree = self.make_branch_and_tree('.')
73
81
# shelve apparently unhappy working with a tree with no root yet
74
82
tree.commit('make root')
77
85
sr = ScriptRunner()
78
86
sr.run_script(self, '''
80
$ bzr shelve --all -m Foo
89
$ brz shelve --all -m Foo
92
2>Changes shelved with id "1".
96
2>Using changes with id "1".
99
2>All changes applied successfully.
106
class TestUnshelvePreview(TestCaseWithTransport):
108
def test_non_ascii(self):
109
"""Test that we can show a non-ascii diff that would result from unshelving"""
111
init_content = u'Initial: \u0418\u0437\u043d\u0430\u0447\n'.encode('utf-8')
112
more_content = u'More: \u0415\u0449\u0451\n'.encode('utf-8')
113
next_content = init_content + more_content
114
diff_part = '@@ -1,1 +1,2 @@\n %s+%s' % (init_content, more_content)
116
tree = self.make_branch_and_tree('.')
117
self.build_tree_contents([('a_file', init_content)])
119
tree.commit(message='committed')
120
self.build_tree_contents([('a_file', next_content)])
121
self.run_bzr(['shelve', '--all'])
122
out, err = self.run_bzr(['unshelve', '--preview'], encoding='latin-1')
124
self.assertContainsString(out, diff_part)
92
127
class TestShelveRelpath(TestCaseWithTransport):
98
133
os.chdir('tree/dir')
99
134
self.run_bzr('shelve --all ../file')
136
def test_shelve_via_directory(self):
137
tree = self.make_branch_and_tree('tree')
138
self.build_tree(['tree/file', 'tree/dir/'])
140
self.run_bzr('shelve -d tree/dir --all ../file')
143
class TestShelveUnshelve(TestCaseWithTransport):
145
def test_directory(self):
146
"""Test --directory option"""
147
tree = self.make_branch_and_tree('tree')
148
self.build_tree_contents([('tree/a', b'initial\n')])
150
tree.commit(message='committed')
151
self.build_tree_contents([('tree/a', b'initial\nmore\n')])
152
self.run_bzr('shelve -d tree --all')
153
self.assertFileEqual(b'initial\n', 'tree/a')
154
self.run_bzr('unshelve --directory tree')
155
self.assertFileEqual(b'initial\nmore\n', 'tree/a')