86
81
"""Commit and check two versions of a single file."""
87
82
wt = self.make_branch_and_tree('.')
89
with open('hello', 'w') as f:
90
f.write('hello world')
84
file('hello', 'w').write('hello world')
92
rev1 = wt.commit(message='add hello')
94
with open('hello', 'w') as f:
96
rev2 = wt.commit(message='commit 2')
86
wt.commit(message='add hello')
87
file_id = wt.path2id('hello')
89
file('hello', 'w').write('version 2')
90
wt.commit(message='commit 2')
92
eq = self.assertEquals
100
rev = b.repository.get_revision(rev1)
94
rh = b.revision_history()
95
rev = b.repository.get_revision(rh[0])
101
96
eq(rev.message, 'add hello')
103
tree1 = b.repository.revision_tree(rev1)
98
tree1 = b.repository.revision_tree(rh[0])
105
text = tree1.get_file_text('hello')
100
text = tree1.get_file_text(file_id)
107
self.assertEqual(b'hello world', text)
102
self.assertEqual('hello world', text)
109
tree2 = b.repository.revision_tree(rev2)
104
tree2 = b.repository.revision_tree(rh[1])
110
105
tree2.lock_read()
111
text = tree2.get_file_text('hello')
106
text = tree2.get_file_text(file_id)
113
self.assertEqual(b'version 2', text)
115
def test_commit_lossy_native(self):
116
"""Attempt a lossy commit to a native branch."""
117
wt = self.make_branch_and_tree('.')
119
with open('hello', 'w') as f:
120
f.write('hello world')
122
revid = wt.commit(message='add hello', rev_id=b'revid', lossy=True)
123
self.assertEqual(b'revid', revid)
125
def test_commit_lossy_foreign(self):
126
"""Attempt a lossy commit to a foreign branch."""
127
test_foreign.register_dummy_foreign_for_test(self)
128
wt = self.make_branch_and_tree('.',
129
format=test_foreign.DummyForeignVcsDirFormat())
131
with open('hello', 'w') as f:
132
f.write('hello world')
134
revid = wt.commit(message='add hello', lossy=True,
135
timestamp=1302659388, timezone=0)
136
self.assertEqual(b'dummy-v1:1302659388-0-UNKNOWN', revid)
138
def test_commit_bound_lossy_foreign(self):
139
"""Attempt a lossy commit to a bzr branch bound to a foreign branch."""
140
test_foreign.register_dummy_foreign_for_test(self)
141
foreign_branch = self.make_branch('foreign',
142
format=test_foreign.DummyForeignVcsDirFormat())
143
wt = foreign_branch.create_checkout("local")
145
with open('local/hello', 'w') as f:
146
f.write('hello world')
148
revid = wt.commit(message='add hello', lossy=True,
149
timestamp=1302659388, timezone=0)
150
self.assertEqual(b'dummy-v1:1302659388-0-0', revid)
151
self.assertEqual(b'dummy-v1:1302659388-0-0',
152
foreign_branch.last_revision())
153
self.assertEqual(b'dummy-v1:1302659388-0-0',
154
wt.branch.last_revision())
108
self.assertEqual('version 2', text)
156
110
def test_missing_commit(self):
157
111
"""Test a commit with a missing file"""
158
112
wt = self.make_branch_and_tree('.')
160
with open('hello', 'w') as f:
161
f.write('hello world')
162
wt.add(['hello'], [b'hello-id'])
114
file('hello', 'w').write('hello world')
115
wt.add(['hello'], ['hello-id'])
163
116
wt.commit(message='add hello')
165
118
os.remove('hello')
166
reporter = CapturingReporter()
167
wt.commit('removed hello', rev_id=b'rev2', reporter=reporter)
169
[('missing', u'hello'), ('deleted', u'hello')],
119
wt.commit('removed hello', rev_id='rev2')
172
tree = b.repository.revision_tree(b'rev2')
173
self.assertFalse(tree.has_id(b'hello-id'))
121
tree = b.repository.revision_tree('rev2')
122
self.assertFalse(tree.has_id('hello-id'))
175
124
def test_partial_commit_move(self):
176
125
"""Test a partial commit where a file was renamed but not committed.
217
165
message='empty tree',
218
166
allow_pointless=False)
219
167
wt.commit(message='empty tree', allow_pointless=True)
220
self.assertEqual(b.revno(), 2)
168
self.assertEquals(b.revno(), 2)
222
170
def test_selective_delete(self):
223
171
"""Selective commit in tree with deletions"""
224
172
wt = self.make_branch_and_tree('.')
226
with open('hello', 'w') as f:
228
with open('buongia', 'w') as f:
174
file('hello', 'w').write('hello')
175
file('buongia', 'w').write('buongia')
230
176
wt.add(['hello', 'buongia'],
231
[b'hello-id', b'buongia-id'])
177
['hello-id', 'buongia-id'])
232
178
wt.commit(message='add files',
233
rev_id=b'test@rev-1')
235
181
os.remove('hello')
236
with open('buongia', 'w') as f:
182
file('buongia', 'w').write('new text')
238
183
wt.commit(message='update text',
239
specific_files=['buongia'],
240
allow_pointless=False,
241
rev_id=b'test@rev-2')
184
specific_files=['buongia'],
185
allow_pointless=False,
243
188
wt.commit(message='remove hello',
244
specific_files=['hello'],
245
allow_pointless=False,
246
rev_id=b'test@rev-3')
189
specific_files=['hello'],
190
allow_pointless=False,
248
eq = self.assertEqual
193
eq = self.assertEquals
251
tree2 = b.repository.revision_tree(b'test@rev-2')
196
tree2 = b.repository.revision_tree('test@rev-2')
252
197
tree2.lock_read()
253
198
self.addCleanup(tree2.unlock)
254
199
self.assertTrue(tree2.has_filename('hello'))
255
self.assertEqual(tree2.get_file_text('hello'), b'hello')
256
self.assertEqual(tree2.get_file_text('buongia'), b'new text')
200
self.assertEquals(tree2.get_file_text('hello-id'), 'hello')
201
self.assertEquals(tree2.get_file_text('buongia-id'), 'new text')
258
tree3 = b.repository.revision_tree(b'test@rev-3')
203
tree3 = b.repository.revision_tree('test@rev-3')
259
204
tree3.lock_read()
260
205
self.addCleanup(tree3.unlock)
261
206
self.assertFalse(tree3.has_filename('hello'))
262
self.assertEqual(tree3.get_file_text('buongia'), b'new text')
207
self.assertEquals(tree3.get_file_text('buongia-id'), 'new text')
264
209
def test_commit_rename(self):
265
210
"""Test commit of a revision where a file is renamed."""
266
211
tree = self.make_branch_and_tree('.')
268
213
self.build_tree(['hello'], line_endings='binary')
269
tree.add(['hello'], [b'hello-id'])
270
tree.commit(message='one', rev_id=b'test@rev-1', allow_pointless=False)
214
tree.add(['hello'], ['hello-id'])
215
tree.commit(message='one', rev_id='test@rev-1', allow_pointless=False)
272
217
tree.rename_one('hello', 'fruity')
273
tree.commit(message='renamed', rev_id=b'test@rev-2',
274
allow_pointless=False)
218
tree.commit(message='renamed', rev_id='test@rev-2', allow_pointless=False)
276
eq = self.assertEqual
277
tree1 = b.repository.revision_tree(b'test@rev-1')
220
eq = self.assertEquals
221
tree1 = b.repository.revision_tree('test@rev-1')
278
222
tree1.lock_read()
279
223
self.addCleanup(tree1.unlock)
280
eq(tree1.id2path(b'hello-id'), 'hello')
281
eq(tree1.get_file_text('hello'), b'contents of hello\n')
224
eq(tree1.id2path('hello-id'), 'hello')
225
eq(tree1.get_file_text('hello-id'), 'contents of hello\n')
282
226
self.assertFalse(tree1.has_filename('fruity'))
283
self.check_tree_shape(tree1, ['hello'])
284
eq(tree1.get_file_revision('hello'), b'test@rev-1')
227
self.check_inventory_shape(tree1.inventory, ['hello'])
228
ie = tree1.inventory['hello-id']
229
eq(ie.revision, 'test@rev-1')
286
tree2 = b.repository.revision_tree(b'test@rev-2')
231
tree2 = b.repository.revision_tree('test@rev-2')
287
232
tree2.lock_read()
288
233
self.addCleanup(tree2.unlock)
289
eq(tree2.id2path(b'hello-id'), 'fruity')
290
eq(tree2.get_file_text('fruity'), b'contents of hello\n')
291
self.check_tree_shape(tree2, ['fruity'])
292
eq(tree2.get_file_revision('fruity'), b'test@rev-2')
234
eq(tree2.id2path('hello-id'), 'fruity')
235
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')
294
240
def test_reused_rev_id(self):
295
241
"""Test that a revision id cannot be reused in a branch"""
296
242
wt = self.make_branch_and_tree('.')
298
wt.commit('initial', rev_id=b'test@rev-1', allow_pointless=True)
244
wt.commit('initial', rev_id='test@rev-1', allow_pointless=True)
299
245
self.assertRaises(Exception,
301
247
message='reused id',
302
rev_id=b'test@rev-1',
303
249
allow_pointless=True)
305
251
def test_commit_move(self):
306
252
"""Test commit of revisions with moved files and directories"""
307
eq = self.assertEqual
253
eq = self.assertEquals
308
254
wt = self.make_branch_and_tree('.')
311
257
self.build_tree(['hello', 'a/', 'b/'])
312
wt.add(['hello', 'a', 'b'], [b'hello-id', b'a-id', b'b-id'])
258
wt.add(['hello', 'a', 'b'], ['hello-id', 'a-id', 'b-id'])
313
259
wt.commit('initial', rev_id=r1, allow_pointless=False)
314
260
wt.move(['hello'], 'a')
316
262
wt.commit('two', rev_id=r2, allow_pointless=False)
319
self.check_tree_shape(wt, ['a/', 'a/hello', 'b/'])
265
self.check_inventory_shape(wt.read_working_inventory(),
266
['a/', 'a/hello', 'b/'])
323
270
wt.move(['b'], 'a')
325
272
wt.commit('three', rev_id=r3, allow_pointless=False)
328
self.check_tree_shape(wt,
329
['a/', 'a/hello', 'a/b/'])
330
self.check_tree_shape(b.repository.revision_tree(r3),
331
['a/', 'a/hello', 'a/b/'])
275
self.check_inventory_shape(wt.read_working_inventory(),
276
['a/', 'a/hello', 'a/b/'])
277
self.check_inventory_shape(b.repository.get_inventory(r3),
278
['a/', 'a/hello', 'a/b/'])
335
282
wt.move(['a/hello'], 'a/b')
337
284
wt.commit('four', rev_id=r4, allow_pointless=False)
340
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/'])
344
292
inv = b.repository.get_inventory(r4)
345
eq(inv.get_entry(b'hello-id').revision, r4)
346
eq(inv.get_entry(b'a-id').revision, r1)
347
eq(inv.get_entry(b'b-id').revision, r3)
293
eq(inv['hello-id'].revision, r4)
294
eq(inv['a-id'].revision, r1)
295
eq(inv['b-id'].revision, r3)
349
297
def test_removed_commit(self):
350
298
"""Commit with a removed file"""
351
299
wt = self.make_branch_and_tree('.')
353
with open('hello', 'w') as f:
354
f.write('hello world')
355
wt.add(['hello'], [b'hello-id'])
301
file('hello', 'w').write('hello world')
302
wt.add(['hello'], ['hello-id'])
356
303
wt.commit(message='add hello')
357
304
wt.remove('hello')
358
wt.commit('removed hello', rev_id=b'rev2')
305
wt.commit('removed hello', rev_id='rev2')
360
tree = b.repository.revision_tree(b'rev2')
361
self.assertFalse(tree.has_id(b'hello-id'))
307
tree = b.repository.revision_tree('rev2')
308
self.assertFalse(tree.has_id('hello-id'))
363
310
def test_committed_ancestry(self):
364
311
"""Test commit appends revisions to ancestry."""
368
315
for i in range(4):
369
with open('hello', 'w') as f:
370
f.write((str(i) * 4) + '\n')
316
file('hello', 'w').write((str(i) * 4) + '\n')
372
wt.add(['hello'], [b'hello-id'])
373
rev_id = b'test@rev-%d' % (i + 1)
318
wt.add(['hello'], ['hello-id'])
319
rev_id = 'test@rev-%d' % (i+1)
374
320
rev_ids.append(rev_id)
375
wt.commit(message='rev %d' % (i + 1),
321
wt.commit(message='rev %d' % (i+1),
323
eq = self.assertEquals
324
eq(b.revision_history(), rev_ids)
377
325
for i in range(4):
378
self.assertThat(rev_ids[:i + 1],
379
MatchesAncestry(b.repository, rev_ids[i]))
326
anc = b.repository.get_ancestry(rev_ids[i])
327
eq(anc, [None] + rev_ids[:i+1])
381
329
def test_commit_new_subdir_child_selective(self):
382
330
wt = self.make_branch_and_tree('.')
384
332
self.build_tree(['dir/', 'dir/file1', 'dir/file2'])
385
333
wt.add(['dir', 'dir/file1', 'dir/file2'],
386
[b'dirid', b'file1id', b'file2id'])
387
wt.commit('dir/file1', specific_files=['dir/file1'], rev_id=b'1')
388
inv = b.repository.get_inventory(b'1')
389
self.assertEqual(b'1', inv.get_entry(b'dirid').revision)
390
self.assertEqual(b'1', inv.get_entry(b'file1id').revision)
334
['dirid', 'file1id', 'file2id'])
335
wt.commit('dir/file1', specific_files=['dir/file1'], rev_id='1')
336
inv = b.repository.get_inventory('1')
337
self.assertEqual('1', inv['dirid'].revision)
338
self.assertEqual('1', inv['file1id'].revision)
391
339
# FIXME: This should raise a KeyError I think, rbc20051006
392
self.assertRaises(BzrError, inv.get_entry, b'file2id')
340
self.assertRaises(BzrError, inv.__getitem__, 'file2id')
394
342
def test_strict_commit(self):
395
343
"""Try and commit with unknown files and strict = True, should fail."""
396
from ..errors import StrictCommitFailed
344
from bzrlib.errors import StrictCommitFailed
397
345
wt = self.make_branch_and_tree('.')
399
with open('hello', 'w') as f:
400
f.write('hello world')
347
file('hello', 'w').write('hello world')
402
with open('goodbye', 'w') as f:
403
f.write('goodbye cruel world!')
349
file('goodbye', 'w').write('goodbye cruel world!')
404
350
self.assertRaises(StrictCommitFailed, wt.commit,
405
message='add hello but not goodbye', strict=True)
351
message='add hello but not goodbye', strict=True)
407
353
def test_strict_commit_without_unknowns(self):
408
354
"""Try and commit with no unknown files and strict = True,
356
from bzrlib.errors import StrictCommitFailed
410
357
wt = self.make_branch_and_tree('.')
412
with open('hello', 'w') as f:
413
f.write('hello world')
359
file('hello', 'w').write('hello world')
415
361
wt.commit(message='add hello', strict=True)
431
375
wt = self.make_branch_and_tree('.')
433
with open('hello', 'w') as f:
434
f.write('hello world')
377
file('hello', 'w').write('hello world')
436
379
wt.commit(message='add hello', strict=False)
438
381
def test_signed_commit(self):
440
import breezy.commit as commit
441
oldstrategy = breezy.gpg.GPGStrategy
383
import bzrlib.commit as commit
384
oldstrategy = bzrlib.gpg.GPGStrategy
442
385
wt = self.make_branch_and_tree('.')
443
386
branch = wt.branch
444
wt.commit("base", allow_pointless=True, rev_id=b'A')
445
self.assertFalse(branch.repository.has_signature_for_revision_id(b'A'))
387
wt.commit("base", allow_pointless=True, rev_id='A')
388
self.failIf(branch.repository.has_signature_for_revision_id('A'))
447
from ..testament import Testament
390
from bzrlib.testament import Testament
448
391
# monkey patch gpg signing mechanism
449
breezy.gpg.GPGStrategy = breezy.gpg.LoopbackGPGStrategy
450
conf = config.MemoryStack(b'''
451
create_signatures=always
453
commit.Commit(config_stack=conf).commit(
454
message="base", allow_pointless=True, rev_id=b'B',
392
bzrlib.gpg.GPGStrategy = bzrlib.gpg.LoopbackGPGStrategy
393
commit.Commit(config=MustSignConfig(branch)).commit(message="base",
394
allow_pointless=True,
458
return breezy.gpg.LoopbackGPGStrategy(None).sign(
459
text, breezy.gpg.MODE_CLEAR)
398
return bzrlib.gpg.LoopbackGPGStrategy(None).sign(text)
460
399
self.assertEqual(sign(Testament.from_revision(branch.repository,
461
b'B').as_short_text()),
462
branch.repository.get_signature_text(b'B'))
400
'B').as_short_text()),
401
branch.repository.get_signature_text('B'))
464
breezy.gpg.GPGStrategy = oldstrategy
403
bzrlib.gpg.GPGStrategy = oldstrategy
466
405
def test_commit_failed_signature(self):
468
import breezy.commit as commit
469
oldstrategy = breezy.gpg.GPGStrategy
407
import bzrlib.commit as commit
408
oldstrategy = bzrlib.gpg.GPGStrategy
470
409
wt = self.make_branch_and_tree('.')
471
410
branch = wt.branch
472
wt.commit("base", allow_pointless=True, rev_id=b'A')
473
self.assertFalse(branch.repository.has_signature_for_revision_id(b'A'))
411
wt.commit("base", allow_pointless=True, rev_id='A')
412
self.failIf(branch.repository.has_signature_for_revision_id('A'))
414
from bzrlib.testament import Testament
475
415
# monkey patch gpg signing mechanism
476
breezy.gpg.GPGStrategy = breezy.gpg.DisabledGPGStrategy
477
conf = config.MemoryStack(b'''
478
create_signatures=always
480
self.assertRaises(breezy.gpg.SigningFailed,
481
commit.Commit(config_stack=conf).commit,
416
bzrlib.gpg.GPGStrategy = bzrlib.gpg.DisabledGPGStrategy
417
config = MustSignConfig(branch)
418
self.assertRaises(SigningFailed,
419
commit.Commit(config=config).commit,
483
421
allow_pointless=True,
486
424
branch = Branch.open(self.get_url('.'))
487
self.assertEqual(branch.last_revision(), b'A')
488
self.assertFalse(branch.repository.has_revision(b'B'))
425
self.assertEqual(branch.revision_history(), ['A'])
426
self.failIf(branch.repository.has_revision('B'))
490
breezy.gpg.GPGStrategy = oldstrategy
428
bzrlib.gpg.GPGStrategy = oldstrategy
492
430
def test_commit_invokes_hooks(self):
493
import breezy.commit as commit
431
import bzrlib.commit as commit
494
432
wt = self.make_branch_and_tree('.')
495
433
branch = wt.branch
498
435
def called(branch, rev_id):
499
436
calls.append('called')
500
breezy.ahook = called
437
bzrlib.ahook = called
502
conf = config.MemoryStack(b'post_commit=breezy.ahook breezy.ahook')
503
commit.Commit(config_stack=conf).commit(
504
message="base", allow_pointless=True, rev_id=b'A',
439
config = BranchWithHooks(branch)
440
commit.Commit(config=config).commit(
442
allow_pointless=True,
443
rev_id='A', working_tree = wt)
506
444
self.assertEqual(['called', 'called'], calls)
510
448
def test_commit_object_doesnt_set_nick(self):
511
449
# using the Commit object directly does not set the branch nick.
512
450
wt = self.make_branch_and_tree('.')
514
452
c.commit(working_tree=wt, message='empty tree', allow_pointless=True)
515
self.assertEqual(wt.branch.revno(), 1)
453
self.assertEquals(wt.branch.revno(), 1)
516
454
self.assertEqual({},
517
455
wt.branch.repository.get_revision(
518
wt.branch.last_revision()).properties)
456
wt.branch.last_revision()).properties)
520
458
def test_safe_master_lock(self):
521
459
os.mkdir('master')
680
617
self.requireFeature(SymlinkFeature)
681
618
tree = self.make_branch_and_tree('.')
682
619
os.symlink('target', 'name')
683
tree.add('name', b'a-file-id')
620
tree.add('name', 'a-file-id')
684
621
tree.commit('Added a symlink')
685
self.assertBasisTreeKind('symlink', tree, 'name')
622
self.assertBasisTreeKind('symlink', tree, 'a-file-id')
687
624
os.unlink('name')
688
625
self.build_tree(['name'])
689
626
tree.commit('Changed symlink to file')
690
self.assertBasisTreeKind('file', tree, 'name')
627
self.assertBasisTreeKind('file', tree, 'a-file-id')
692
629
os.unlink('name')
693
630
os.symlink('target', 'name')
694
631
tree.commit('file to symlink')
695
self.assertBasisTreeKind('symlink', tree, 'name')
632
self.assertBasisTreeKind('symlink', tree, 'a-file-id')
697
634
os.unlink('name')
699
636
tree.commit('symlink to directory')
700
self.assertBasisTreeKind('directory', tree, 'name')
637
self.assertBasisTreeKind('directory', tree, 'a-file-id')
703
640
os.symlink('target', 'name')
704
641
tree.commit('directory to symlink')
705
self.assertBasisTreeKind('symlink', tree, 'name')
642
self.assertBasisTreeKind('symlink', tree, 'a-file-id')
707
644
# prepare for directory <-> file tests
708
645
os.unlink('name')
710
647
tree.commit('symlink to directory')
711
self.assertBasisTreeKind('directory', tree, 'name')
648
self.assertBasisTreeKind('directory', tree, 'a-file-id')
714
651
self.build_tree(['name'])
715
652
tree.commit('Changed directory to file')
716
self.assertBasisTreeKind('file', tree, 'name')
653
self.assertBasisTreeKind('file', tree, 'a-file-id')
718
655
os.unlink('name')
720
657
tree.commit('file to directory')
721
self.assertBasisTreeKind('directory', tree, 'name')
658
self.assertBasisTreeKind('directory', tree, 'a-file-id')
723
660
def test_commit_unversioned_specified(self):
724
661
"""Commit should raise if specified files isn't in basis or worktree"""
838
774
def test_multiple_authors(self):
839
775
tree = self.make_branch_and_tree('foo')
840
776
rev_id = tree.commit('commit 1',
841
authors=['John Doe <jdoe@example.com>',
842
'Jane Rey <jrey@example.com>'])
777
authors=['John Doe <jdoe@example.com>',
778
'Jane Rey <jrey@example.com>'])
843
779
rev = tree.branch.repository.get_revision(rev_id)
844
780
self.assertEqual('John Doe <jdoe@example.com>\n'
845
'Jane Rey <jrey@example.com>', rev.properties['authors'])
781
'Jane Rey <jrey@example.com>', rev.properties['authors'])
846
782
self.assertFalse('author' in rev.properties)
784
def test_author_and_authors_incompatible(self):
785
tree = self.make_branch_and_tree('foo')
786
self.assertRaises(AssertionError, tree.commit, 'commit 1',
787
authors=['John Doe <jdoe@example.com>',
788
'Jane Rey <jrey@example.com>'],
789
author="Jack Me <jme@example.com>")
848
791
def test_author_with_newline_rejected(self):
849
792
tree = self.make_branch_and_tree('foo')
850
793
self.assertRaises(AssertionError, tree.commit, 'commit 1',
851
authors=['John\nDoe <jdoe@example.com>'])
794
authors=['John\nDoe <jdoe@example.com>'])
853
796
def test_commit_with_checkout_and_branch_sharing_repo(self):
854
797
repo = self.make_repository('repo', shared=True)
855
798
# make_branch_and_tree ignores shared repos
856
branch = controldir.ControlDir.create_branch_convenience('repo/branch')
799
branch = bzrdir.BzrDir.create_branch_convenience('repo/branch')
857
800
tree2 = branch.create_checkout('repo/tree2')
858
tree2.commit('message', rev_id=b'rev1')
859
self.assertTrue(tree2.branch.repository.has_revision(b'rev1'))
862
class FilterExcludedTests(TestCase):
864
def test_add_file_not_excluded(self):
866
('fid', (None, 'newpath'),
867
0, (False, False), ('pid', 'pid'), ('newpath', 'newpath'),
868
('file', 'file'), (True, True))]
869
self.assertEqual(changes, list(
870
filter_excluded(changes, ['otherpath'])))
872
def test_add_file_excluded(self):
874
('fid', (None, 'newpath'),
875
0, (False, False), ('pid', 'pid'), ('newpath', 'newpath'),
876
('file', 'file'), (True, True))]
877
self.assertEqual([], list(filter_excluded(changes, ['newpath'])))
879
def test_delete_file_excluded(self):
881
('fid', ('somepath', None),
882
0, (False, None), ('pid', None), ('newpath', None),
883
('file', None), (True, None))]
884
self.assertEqual([], list(filter_excluded(changes, ['somepath'])))
886
def test_move_from_or_to_excluded(self):
888
('fid', ('oldpath', 'newpath'),
889
0, (False, False), ('pid', 'pid'), ('oldpath', 'newpath'),
890
('file', 'file'), (True, True))]
891
self.assertEqual([], list(filter_excluded(changes, ['oldpath'])))
892
self.assertEqual([], list(filter_excluded(changes, ['newpath'])))
801
tree2.commit('message', rev_id='rev1')
802
self.assertTrue(tree2.branch.repository.has_revision('rev1'))