21
21
from bzrlib import (
28
25
from bzrlib.branch import Branch
29
from bzrlib.bzrdir import BzrDir, BzrDirMetaFormat1
26
from bzrlib.bzrdir import BzrDirMetaFormat1
30
27
from bzrlib.commit import Commit, NullCommitReporter
31
28
from bzrlib.config import BranchConfig
32
29
from bzrlib.errors import (PointlessCommit, BzrError, SigningFailed,
34
from bzrlib.tests import SymlinkFeature, TestCaseWithTransport
35
from bzrlib.workingtree import WorkingTree
31
from bzrlib.tests import (
33
TestCaseWithTransport,
38
38
# TODO: Test commit with some added, and added-but-missing files
108
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())
110
148
def test_missing_commit(self):
111
149
"""Test a commit with a missing file"""
112
150
wt = self.make_branch_and_tree('.')
224
262
eq(tree1.id2path('hello-id'), 'hello')
225
263
eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
226
264
self.assertFalse(tree1.has_filename('fruity'))
227
self.check_inventory_shape(tree1.inventory, ['hello'])
228
ie = tree1.inventory['hello-id']
229
eq(ie.revision, 'test@rev-1')
265
self.check_tree_shape(tree1, ['hello'])
266
eq(tree1.get_file_revision('hello-id'), 'test@rev-1')
231
268
tree2 = b.repository.revision_tree('test@rev-2')
232
269
tree2.lock_read()
233
270
self.addCleanup(tree2.unlock)
234
271
eq(tree2.id2path('hello-id'), 'fruity')
235
272
eq(tree2.get_file_text('hello-id'), 'contents of hello\n')
236
self.check_inventory_shape(tree2.inventory, ['fruity'])
237
ie = tree2.inventory['hello-id']
238
eq(ie.revision, 'test@rev-2')
273
self.check_tree_shape(tree2, ['fruity'])
274
eq(tree2.get_file_revision('hello-id'), 'test@rev-2')
240
276
def test_reused_rev_id(self):
241
277
"""Test that a revision id cannot be reused in a branch"""
262
298
wt.commit('two', rev_id=r2, allow_pointless=False)
265
self.check_inventory_shape(wt.read_working_inventory(),
266
['a/', 'a/hello', 'b/'])
301
self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
272
307
wt.commit('three', rev_id=r3, allow_pointless=False)
275
self.check_inventory_shape(wt.read_working_inventory(),
310
self.check_tree_shape(wt,
276
311
['a/', 'a/hello', 'a/b/'])
277
self.check_inventory_shape(b.repository.get_inventory(r3),
312
self.check_tree_shape(b.repository.revision_tree(r3),
278
313
['a/', 'a/hello', 'a/b/'])
284
319
wt.commit('four', rev_id=r4, allow_pointless=False)
287
self.check_inventory_shape(wt.read_working_inventory(),
288
['a/', 'a/b/hello', 'a/b/'])
322
self.check_tree_shape(wt, ['a/', 'a/b/hello', 'a/b/'])
353
387
def test_strict_commit_without_unknowns(self):
354
388
"""Try and commit with no unknown files and strict = True,
356
from bzrlib.errors import StrictCommitFailed
357
390
wt = self.make_branch_and_tree('.')
359
392
file('hello', 'w').write('hello world')
385
418
wt = self.make_branch_and_tree('.')
386
419
branch = wt.branch
387
420
wt.commit("base", allow_pointless=True, rev_id='A')
388
self.failIf(branch.repository.has_signature_for_revision_id('A'))
421
self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
390
423
from bzrlib.testament import Testament
391
424
# monkey patch gpg signing mechanism
409
442
wt = self.make_branch_and_tree('.')
410
443
branch = wt.branch
411
444
wt.commit("base", allow_pointless=True, rev_id='A')
412
self.failIf(branch.repository.has_signature_for_revision_id('A'))
445
self.assertFalse(branch.repository.has_signature_for_revision_id('A'))
414
from bzrlib.testament import Testament
415
447
# monkey patch gpg signing mechanism
416
448
bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
417
449
config = MustSignConfig(branch)
424
456
branch = Branch.open(self.get_url('.'))
425
457
self.assertEqual(branch.revision_history(), ['A'])
426
self.failIf(branch.repository.has_revision('B'))
458
self.assertFalse(branch.repository.has_revision('B'))
428
460
bzrlib.gpg.GPGStrategy = oldstrategy