5
class ShelfTests(bzrlib.tests.TestCaseInTempDir):
6
ORIGINAL = '\n\nhello test world\n\n'
7
MODIFIED = '\n\ngoodbye test world\n\n'
8
DIFF_HEADER = "=== modified file 'test_file'\n"
9
DIFF_1 = """--- test_file\t
18
DIFF_2 = """--- test_file\t
30
def test_shelf_multi(self):
33
def __test_loop(self, count):
34
from bzrlib.branch import Branch
35
b = Branch.initialize('.')
37
# Create a test file and commit it
38
file('test_file', 'w').write(self.ORIGINAL)
39
b.working_tree().add('test_file')
40
b.working_tree().commit(message='add test_file')
45
# Modify the test file
46
file('test_file', 'w').write(self.MODIFIED)
48
# Check the diff is right
49
self.assertEqual(self.capture('diff', retcode=1),
50
self.DIFF_HEADER + self.DIFF_1 + '\n')
53
self.run_bzr('shelve', retcode=True)
55
# Make sure there is no diff anymore
56
self.assertEqual(self.capture('diff', retcode=0), '')
58
# Make sure the file is actually back the way it was
59
self.assertEqual(file('test_file').read(), self.ORIGINAL)
61
# Check the shelf is right
62
shelf = b._transport.get('.bzr/x-shelf/default/00').read()
63
self.assertEqual(shelf, self.DIFF_1)
66
self.run_bzr('unshelve', retcode=True)
68
# Check the diff is right again
69
self.assertEqual(self.capture('diff', retcode=1),
70
self.DIFF_HEADER + self.DIFF_1 + '\n')
72
# Make sure the file is back the way it should be
73
self.assertEqual(file('test_file').read(), self.MODIFIED)
75
def test_shelf_nothing_to_shelve(self):
77
from bzrlib.branch import Branch
78
b = Branch.initialize('.')
80
# Create a test file and commit it
81
file('test_file', 'w').write(self.ORIGINAL)
82
b.working_tree().add('test_file')
83
b.working_tree().commit(message='add test_file')
86
self.run_bzr('shelve', retcode=True)
88
if b._transport.has('.bzr/x-shelf/default/00'):
89
self.fail("Shelf exists, but it shouldn't")
91
def test_shelf_with_revision(self):
92
from bzrlib.branch import Branch
93
b = Branch.initialize('.')
95
# Create a test file and commit it
96
file('test_file', 'w').write(self.ORIGINAL)
97
b.working_tree().add('test_file')
98
b.working_tree().commit(message='add test_file')
100
# Modify the test file and commit it
101
file('test_file', 'w').write(self.MODIFIED)
102
b.working_tree().commit(message='update test_file')
105
self.run_bzr('shelve', '-r', '1', retcode=True)
107
# Check the diff is right
108
self.assertEqual(self.capture('diff', retcode=1),
109
self.DIFF_HEADER + self.DIFF_2 + '\n')
111
# Make sure the file is the way it should be
112
self.assertEqual(file('test_file').read(), self.ORIGINAL)
115
self.run_bzr('unshelve', retcode=True)
117
# Make sure the file is back the way it should be
118
self.assertEqual(file('test_file').read(), self.MODIFIED)
120
def test_shelf_with_two_revisions(self):
121
from bzrlib.branch import Branch
122
b = Branch.initialize('.')
124
cmd = 'shelve -r 1..2'
125
(stdout, stderr) = self.run_bzr_captured(cmd.split(), retcode=None)
127
self.assertEqual(stderr.split('\n')[0],
128
'bzr: ERROR: bzrlib.errors.BzrCommandError: shelve only ' \
129
'accepts a single revision parameter.')