125
class SubdirCommit(TestCaseInTempDir):
125
class SubdirCommit(TestCaseWithTransport):
127
127
def test_subdir_commit(self):
128
"""Test committing a subdirectory, and committing within a directory."""
129
run_bzr = self.run_bzr
130
eq = self.assertEqual
128
"""Test committing a subdirectory, and committing a directory."""
129
tree = self.make_branch_and_tree('.')
132
131
self.build_tree(['a/', 'b/'])
135
b = Branch.open(u'.')
137
for fn in ('a/one', 'b/two', 'top'):
138
file(fn, 'w').write('old contents')
141
run_bzr(['commit', '-m', 'first revision'])
143
for fn in ('a/one', 'b/two', 'top'):
144
file(fn, 'w').write('new contents')
132
def set_contents(contents):
133
self.build_tree_contents([
138
set_contents('old contents')
139
tree.smart_add(['.'])
140
tree.commit('first revision')
141
set_contents('new contents')
146
143
mutter('start selective subdir commit')
147
run_bzr(['commit', 'a', '-m', 'commit a only'])
144
self.run_bzr(['commit', 'a', '-m', 'commit a only'])
149
old = b.repository.revision_tree(b.get_rev_id(1))
150
146
new = b.repository.revision_tree(b.get_rev_id(2))
153
eq(new.get_file_by_path('b/two').read(), 'old contents')
154
eq(new.get_file_by_path('top').read(), 'old contents')
155
eq(new.get_file_by_path('a/one').read(), 'new contents')
149
self.assertEqual(new.get_file_by_path('b/two').read(), 'old contents')
150
self.assertEqual(new.get_file_by_path('top').read(), 'old contents')
151
self.assertEqual(new.get_file_by_path('a/one').read(), 'new contents')
159
155
# commit from here should do nothing
160
run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'])
156
self.run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'])
161
157
v3 = b.repository.revision_tree(b.get_rev_id(3))
163
eq(v3.get_file_by_path('b/two').read(), 'old contents')
164
eq(v3.get_file_by_path('top').read(), 'old contents')
165
eq(v3.get_file_by_path('a/one').read(), 'new contents')
159
self.assertEqual(v3.get_file_by_path('b/two').read(), 'old contents')
160
self.assertEqual(v3.get_file_by_path('top').read(), 'old contents')
161
self.assertEqual(v3.get_file_by_path('a/one').read(), 'new contents')
168
164
# commit in subdirectory commits whole tree
169
run_bzr(['commit', '-m', 'commit whole tree from subdir'])
165
self.run_bzr(['commit', '-m', 'commit whole tree from subdir'])
170
166
v4 = b.repository.revision_tree(b.get_rev_id(4))
172
eq(v4.get_file_by_path('b/two').read(), 'new contents')
173
eq(v4.get_file_by_path('top').read(), 'new contents')
168
self.assertEqual(v4.get_file_by_path('b/two').read(), 'new contents')
169
self.assertEqual(v4.get_file_by_path('top').read(), 'new contents')
176
172
# TODO: factor out some kind of assert_tree_state() method
179
if __name__ == '__main__':