8
class ShelfTests(bzrlib.tests.TestCaseInTempDir):
9
ORIGINAL = '\n\nhello test world\n\n'
10
MODIFIED = '\n\ngoodbye test world\n\n'
11
DIFF_HEADER = "=== modified file 'test_file'\n"
12
DIFF_1 = """--- test_file\t
21
DIFF_2 = """--- test_file\t
31
from bzrlib.branch import Branch
32
from bzrlib.workingtree import WorkingTree
33
b = Branch.initialize('.')
34
tree = WorkingTree(b.base, b)
36
# Create a test file and commit it
37
file('test_file', 'w').write(self.ORIGINAL)
39
tree.commit(message='add test_file')
41
# Modify the test file
42
file('test_file', 'w').write(self.MODIFIED)
44
# Check the diff is right
45
self.assertEqual(self.capture('diff', retcode=1),
46
self.DIFF_HEADER + self.DIFF_1 + '\n')
49
self.run_bzr('shelve', '--all', retcode=1)
51
# Make sure there is no diff anymore
52
self.assertEqual(self.capture('diff'), '')
54
# Make sure the file is actually back the way it was
55
self.assertEqual(file('test_file').read(), self.ORIGINAL)
57
# Check the shelf is right
58
shelf = file('.bzr-shelf').read()
59
self.assertEqual(shelf, self.DIFF_1)
62
self.run_bzr('unshelve', retcode=1)
64
# Check the diff is right again
65
self.assertEqual(self.capture('diff', retcode=1),
66
self.DIFF_HEADER + self.DIFF_1 + '\n')
68
# Make sure the file is back the way it should be
69
self.assertEqual(file('test_file').read(), self.MODIFIED)
71
def test_shelf_nothing_to_shelve(self):
72
from bzrlib.branch import Branch
73
from bzrlib.workingtree import WorkingTree
74
b = Branch.initialize('.')
75
tree = WorkingTree(b.base, b)
77
# Create a test file and commit it
78
file('test_file', 'w').write(self.ORIGINAL)
80
tree.commit(message='add test_file')
83
self.run_bzr('shelve', '--all')
85
if os.path.exists('.bzr-shelf'):
86
self.fail("Shelf exists, but it shouldn't")
88
def test_shelf_with_revision(self):
89
from bzrlib.branch import Branch
90
from bzrlib.workingtree import WorkingTree
91
b = Branch.initialize('.')
92
tree = WorkingTree(b.base, b)
94
# Create a test file and commit it
95
file('test_file', 'w').write(self.ORIGINAL)
97
tree.commit(message='add test_file')
99
# Modify the test file and commit it
100
file('test_file', 'w').write(self.MODIFIED)
101
tree.commit(message='update test_file')
104
self.run_bzr('shelve', '-r', '1', '--all', retcode=1)
106
# Check the diff is right
107
self.assertEqual(self.capture('diff', retcode=1),
108
self.DIFF_HEADER + self.DIFF_2 + '\n')
110
# Make sure the file is the way it should be
111
self.assertEqual(file('test_file').read(), self.ORIGINAL)
114
self.run_bzr('unshelve', retcode=1)
116
# Make sure the file is back the way it should be
117
self.assertEqual(file('test_file').read(), self.MODIFIED)
119
def test_shelf_with_two_revisions(self):
120
from bzrlib.branch import Branch
121
b = Branch.initialize('.')
123
cmd = 'shelve -r 1..2'
124
(stdout, stderr) = self.run_bzr_captured(cmd.split(), retcode=None)
126
self.assertEqual(stderr.split('\n')[0],
127
'bzr: ERROR: bzrlib.errors.BzrCommandError: shelve only accepts a single revision parameter.')
129
def test_shelf_with_whitespace(self):
130
"""Shows that bzr doesn't handle whitespace well"""
132
file('file name', 'wb').write('hello')
134
self.run_bzr('commit', '-m', 'added')
135
file('file name', 'wb').write('goodbye')
136
self.run_bzr('shelve', '--all', 'file name', retcode=1)
138
def test_whitespace_branches(self):
139
os.mkdir('name with space')
140
os.chdir('name with space')
142
file('filename', 'wb').write('hello')
144
self.run_bzr('commit', '-m', 'added')
145
file('filename', 'wb').write('goodbye')
146
self.run_bzr('shelve', '--all', 'filename', retcode=1)