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