28
28
from bzrlib.config import BranchConfig
29
29
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed,
31
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
31
from bzrlib.tests import (
33
TestCaseWithTransport,
34
38
# TODO: Test commit with some added, and added-but-missing files
104
108
self.assertEqual('version 2', text)
110
def test_commit_lossy_native(self):
111
"""Attempt a lossy commit to a native branch."""
112
wt = self.make_branch_and_tree('.')
114
file('hello', 'w').write('hello world')
116
revid = wt.commit(message='add hello', rev_id='revid', lossy=True)
117
self.assertEquals('revid', revid)
119
def test_commit_lossy_foreign(self):
120
"""Attempt a lossy commit to a foreign branch."""
121
test_foreign.register_dummy_foreign_for_test(self)
122
wt = self.make_branch_and_tree('.',
123
format=test_foreign.DummyForeignVcsDirFormat())
125
file('hello', 'w').write('hello world')
127
revid = wt.commit(message='add hello', lossy=True,
128
timestamp=1302659388, timezone=0)
129
self.assertEquals('dummy-v1:1302659388.0-0-UNKNOWN', revid)
131
def test_commit_bound_lossy_foreign(self):
132
"""Attempt a lossy commit to a bzr branch bound to a foreign branch."""
133
test_foreign.register_dummy_foreign_for_test(self)
134
foreign_branch = self.make_branch('foreign',
135
format=test_foreign.DummyForeignVcsDirFormat())
136
wt = foreign_branch.create_checkout("local")
138
file('local/hello', 'w').write('hello world')
140
revid = wt.commit(message='add hello', lossy=True,
141
timestamp=1302659388, timezone=0)
142
self.assertEquals('dummy-v1:1302659388.0-0-0', revid)
143
self.assertEquals('dummy-v1:1302659388.0-0-0',
144
foreign_branch.last_revision())
145
self.assertEquals('dummy-v1:1302659388.0-0-0',
146
wt.branch.last_revision())
106
148
def test_missing_commit(self):
107
149
"""Test a commit with a missing file"""
108
150
wt = self.make_branch_and_tree('.')
220
262
eq(tree1.id2path('hello-id'), 'hello')
221
263
eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
222
264
self.assertFalse(tree1.has_filename('fruity'))
223
self.check_inventory_shape(tree1.inventory, ['hello'])
224
ie = tree1.inventory['hello-id']
225
eq(ie.revision, 'test@rev-1')
265
self.check_tree_shape(tree1, ['hello'])
266
eq(tree1.get_file_revision('hello-id'), 'test@rev-1')
227
268
tree2 = b.repository.revision_tree('test@rev-2')
228
269
tree2.lock_read()
229
270
self.addCleanup(tree2.unlock)
230
271
eq(tree2.id2path('hello-id'), 'fruity')
231
272
eq(tree2.get_file_text('hello-id'), 'contents of hello\n')
232
self.check_inventory_shape(tree2.inventory, ['fruity'])
233
ie = tree2.inventory['hello-id']
234
eq(ie.revision, 'test@rev-2')
273
self.check_tree_shape(tree2, ['fruity'])
274
eq(tree2.get_file_revision('hello-id'), 'test@rev-2')
236
276
def test_reused_rev_id(self):
237
277
"""Test that a revision id cannot be reused in a branch"""
258
298
wt.commit('two', rev_id=r2, allow_pointless=False)
261
self.check_inventory_shape(wt.read_working_inventory(),
262
['a/', 'a/hello', 'b/'])
301
self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
268
307
wt.commit('three', rev_id=r3, allow_pointless=False)
271
self.check_inventory_shape(wt.read_working_inventory(),
310
self.check_tree_shape(wt,
272
311
['a/', 'a/hello', 'a/b/'])
273
self.check_inventory_shape(b.repository.get_inventory(r3),
312
self.check_tree_shape(b.repository.revision_tree(r3),
274
313
['a/', 'a/hello', 'a/b/'])
280
319
wt.commit('four', rev_id=r4, allow_pointless=False)
283
self.check_inventory_shape(wt.read_working_inventory(),
284
['a/', 'a/b/hello', 'a/b/'])
322
self.check_tree_shape(wt, ['a/', 'a/b/hello', 'a/b/'])
349
387
def test_strict_commit_without_unknowns(self):
350
388
"""Try and commit with no unknown files and strict = True,
352
from bzrlib.errors import StrictCommitFailed
353
390
wt = self.make_branch_and_tree('.')
355
392
file('hello', 'w').write('hello world')
381
418
wt = self.make_branch_and_tree('.')
382
419
branch = wt.branch
383
420
wt.commit("base", allow_pointless=True, rev_id='A')
384
self.failIf(branch.repository.has_signature_for_revision_id('A'))
421
self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
386
423
from bzrlib.testament import Testament
387
424
# monkey patch gpg signing mechanism
405
442
wt = self.make_branch_and_tree('.')
406
443
branch = wt.branch
407
444
wt.commit("base", allow_pointless=True, rev_id='A')
408
self.failIf(branch.repository.has_signature_for_revision_id('A'))
445
self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
410
from bzrlib.testament import Testament
411
447
# monkey patch gpg signing mechanism
412
448
bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
413
449
config = MustSignConfig(branch)
420
456
branch = Branch.open(self.get_url('.'))
421
457
self.assertEqual(branch.revision_history(), ['A'])
422
self.failIf(branch.repository.has_revision('B'))
458
self.assertFalse(branch.repository.has_revision('B'))
424
460
bzrlib.gpg.GPGStrategy = oldstrategy