125
class SubdirCommit(TestCaseWithTransport):
125
class SubdirCommit(TestCaseInTempDir):
127
127
def test_subdir_commit(self):
128
"""Test committing a subdirectory, and committing a directory."""
129
tree = self.make_branch_and_tree('.')
128
"""Test committing a subdirectory, and committing within a directory."""
129
run_bzr = self.run_bzr
130
eq = self.assertEqual
131
132
self.build_tree(['a/', 'b/'])
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')
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')
143
146
mutter('start selective subdir commit')
144
self.run_bzr(['commit', 'a', '-m', 'commit a only'])
147
run_bzr(['commit', 'a', '-m', 'commit a only'])
149
old = b.repository.revision_tree(b.get_rev_id(1))
146
150
new = b.repository.revision_tree(b.get_rev_id(2))
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')
152
eq(new.get_file_by_path('b/two').read(), 'old contents')
153
eq(new.get_file_by_path('top').read(), 'old contents')
154
eq(new.get_file_by_path('a/one').read(), 'new contents')
155
157
# commit from here should do nothing
156
self.run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'])
158
run_bzr(['commit', '.', '-m', 'commit subdir only', '--unchanged'])
157
159
v3 = b.repository.revision_tree(b.get_rev_id(3))
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')
160
eq(v3.get_file_by_path('b/two').read(), 'old contents')
161
eq(v3.get_file_by_path('top').read(), 'old contents')
162
eq(v3.get_file_by_path('a/one').read(), 'new contents')
164
164
# commit in subdirectory commits whole tree
165
self.run_bzr(['commit', '-m', 'commit whole tree from subdir'])
165
run_bzr(['commit', '-m', 'commit whole tree from subdir'])
166
166
v4 = b.repository.revision_tree(b.get_rev_id(4))
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')
167
eq(v4.get_file_by_path('b/two').read(), 'new contents')
168
eq(v4.get_file_by_path('top').read(), 'new contents')
172
170
# TODO: factor out some kind of assert_tree_state() method
173
if __name__ == '__main__':