28
28
from bzrlib.config import BranchConfig
29
29
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed,
31
from bzrlib.tests import (
33
TestCaseWithTransport,
31
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
38
34
# TODO: Test commit with some added, and added-but-missing files
108
104
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())
148
106
def test_missing_commit(self):
149
107
"""Test a commit with a missing file"""
150
108
wt = self.make_branch_and_tree('.')
262
220
eq(tree1.id2path('hello-id'), 'hello')
263
221
eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
264
222
self.assertFalse(tree1.has_filename('fruity'))
265
self.check_tree_shape(tree1, ['hello'])
266
eq(tree1.get_file_revision('hello-id'), 'test@rev-1')
223
self.check_inventory_shape(tree1.inventory, ['hello'])
224
ie = tree1.inventory['hello-id']
225
eq(ie.revision, 'test@rev-1')
268
227
tree2 = b.repository.revision_tree('test@rev-2')
269
228
tree2.lock_read()
270
229
self.addCleanup(tree2.unlock)
271
230
eq(tree2.id2path('hello-id'), 'fruity')
272
231
eq(tree2.get_file_text('hello-id'), 'contents of hello\n')
273
self.check_tree_shape(tree2, ['fruity'])
274
eq(tree2.get_file_revision('hello-id'), 'test@rev-2')
232
self.check_inventory_shape(tree2.inventory, ['fruity'])
233
ie = tree2.inventory['hello-id']
234
eq(ie.revision, 'test@rev-2')
276
236
def test_reused_rev_id(self):
277
237
"""Test that a revision id cannot be reused in a branch"""
298
258
wt.commit('two', rev_id=r2, allow_pointless=False)
301
self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
261
self.check_inventory_shape(wt.read_working_inventory(),
262
['a/', 'a/hello', 'b/'])
307
268
wt.commit('three', rev_id=r3, allow_pointless=False)
310
self.check_tree_shape(wt,
271
self.check_inventory_shape(wt.read_working_inventory(),
311
272
['a/', 'a/hello', 'a/b/'])
312
self.check_tree_shape(b.repository.revision_tree(r3),
273
self.check_inventory_shape(b.repository.get_inventory(r3),
313
274
['a/', 'a/hello', 'a/b/'])
319
280
wt.commit('four', rev_id=r4, allow_pointless=False)
322
self.check_tree_shape(wt, ['a/', 'a/b/hello', 'a/b/'])
283
self.check_inventory_shape(wt.read_working_inventory(),
284
['a/', 'a/b/hello', 'a/b/'])
387
349
def test_strict_commit_without_unknowns(self):
388
350
"""Try and commit with no unknown files and strict = True,
352
from bzrlib.errors import StrictCommitFailed
390
353
wt = self.make_branch_and_tree('.')
392
355
file('hello', 'w').write('hello world')
418
381
wt = self.make_branch_and_tree('.')
419
382
branch = wt.branch
420
383
wt.commit("base", allow_pointless=True, rev_id='A')
421
self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
384
self.failIf(branch.repository.has_signature_for_revision_id('A'))
423
386
from bzrlib.testament import Testament
424
387
# monkey patch gpg signing mechanism
442
405
wt = self.make_branch_and_tree('.')
443
406
branch = wt.branch
444
407
wt.commit("base", allow_pointless=True, rev_id='A')
445
self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
408
self.failIf(branch.repository.has_signature_for_revision_id('A'))
410
from bzrlib.testament import Testament
447
411
# monkey patch gpg signing mechanism
448
412
bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
449
413
config = MustSignConfig(branch)
456
420
branch = Branch.open(self.get_url('.'))
457
421
self.assertEqual(branch.revision_history(), ['A'])
458
self.assertFalse(branch.repository.has_revision('B'))
422
self.failIf(branch.repository.has_revision('B'))
460
424
bzrlib.gpg.GPGStrategy = oldstrategy