434
def test_revision_id_present(self):
435
backing = self.get_transport()
436
request = smart.branch.SmartServerBranchRequestSetLastRevision(backing)
437
tree = self.make_branch_and_memory_tree('.')
440
rev_id_utf8 = u'\xc8'.encode('utf-8')
441
r1 = tree.commit('1st commit', rev_id=rev_id_utf8)
442
r2 = tree.commit('2nd commit')
444
branch_token = tree.branch.lock_write()
445
repo_token = tree.branch.repository.lock_write()
446
tree.branch.repository.unlock()
449
SmartServerResponse(('ok',)),
451
'', branch_token, repo_token,
453
self.assertEqual([rev_id_utf8], tree.branch.revision_history())
457
def test_revision_id_present2(self):
458
backing = self.get_transport()
459
request = smart.branch.SmartServerBranchRequestSetLastRevision(backing)
460
tree = self.make_branch_and_memory_tree('.')
463
rev_id_utf8 = u'\xc8'.encode('utf-8')
464
r1 = tree.commit('1st commit', rev_id=rev_id_utf8)
465
r2 = tree.commit('2nd commit')
467
tree.branch.set_revision_history([])
468
branch_token = tree.branch.lock_write()
469
repo_token = tree.branch.repository.lock_write()
470
tree.branch.repository.unlock()
473
SmartServerResponse(('ok',)),
475
'', branch_token, repo_token,
477
self.assertEqual([rev_id_utf8], tree.branch.revision_history())
423
class TestSmartServerBranchRequestSetLastRevision(
424
tests.TestCaseWithMemoryTransport, SetLastRevisionCommonTests):
426
request_class = smart.branch.SmartServerBranchRequestSetLastRevision
428
def test_revision_id_present2(self):
429
backing = self.get_transport()
430
request = self.request_class(backing)
431
tree = self.make_branch_and_memory_tree('.')
434
rev_id_utf8 = u'\xc8'.encode('utf-8')
435
r1 = tree.commit('1st commit', rev_id=rev_id_utf8)
436
r2 = tree.commit('2nd commit')
438
tree.branch.set_revision_history([])
439
branch_token = tree.branch.lock_write()
440
repo_token = tree.branch.repository.lock_write()
441
tree.branch.repository.unlock()
444
SuccessfulSmartServerResponse(('ok',)),
446
'', branch_token, repo_token,
448
self.assertEqual([rev_id_utf8], tree.branch.revision_history())
453
def test_revision_id_previous(self):
454
backing = self.get_transport()
455
request = self.request_class(backing)
456
tree = self.make_branch_and_memory_tree('.')
459
rev_id_utf8 = u'\xc8'.encode('utf-8')
460
r1 = tree.commit('1st commit', rev_id=rev_id_utf8)
461
r2 = tree.commit('2nd commit')
463
branch_token = tree.branch.lock_write()
464
repo_token = tree.branch.repository.lock_write()
465
tree.branch.repository.unlock()
468
SuccessfulSmartServerResponse(('ok',)),
470
'', branch_token, repo_token,
472
self.assertEqual([rev_id_utf8], tree.branch.revision_history())
477
class TestSmartServerBranchRequestSetLastRevisionDescendant(
478
tests.TestCaseWithMemoryTransport, SetLastRevisionCommonTests):
481
smart.branch.SmartServerBranchRequestSetLastRevisionDescendant
483
def test_empty(self):
484
backing = self.get_transport()
485
request = self.request_class(backing)
486
b = self.make_branch('.')
487
branch_token = b.lock_write()
488
repo_token = b.repository.lock_write()
489
b.repository.unlock()
491
self.assertEqual(SmartServerResponse(('ok',)),
493
'', branch_token, repo_token,
498
def test_empty(self):
499
backing = self.get_transport()
500
request = self.request_class(backing)
501
b = self.make_branch('.')
502
branch_token = b.lock_write()
503
repo_token = b.repository.lock_write()
504
b.repository.unlock()
506
self.assertEqual(SmartServerResponse(('ok', 0)),
508
'', branch_token, repo_token,
513
def test_revision_id_present2(self):
514
backing = self.get_transport()
515
request = self.request_class(backing)
516
tree = self.make_branch_and_memory_tree('.')
519
rev_id_utf8 = u'\xc8'.encode('utf-8')
520
r1 = tree.commit('1st commit', rev_id=rev_id_utf8)
521
r2 = tree.commit('2nd commit')
523
tree.branch.set_revision_history([])
524
branch_token = tree.branch.lock_write()
525
repo_token = tree.branch.repository.lock_write()
526
tree.branch.repository.unlock()
529
SuccessfulSmartServerResponse(('ok', 1)),
531
'', branch_token, repo_token,
533
self.assertEqual([rev_id_utf8], tree.branch.revision_history())
537
def test_revision_id_previous(self):
538
backing = self.get_transport()
539
request = self.request_class(backing)
540
tree = self.make_branch_and_memory_tree('.')
543
rev_id_utf8 = u'\xc8'.encode('utf-8')
544
r1 = tree.commit('1st commit', rev_id=rev_id_utf8)
545
r2 = tree.commit('2nd commit', rev_id='second-rev')
547
branch_token = tree.branch.lock_write()
548
repo_token = tree.branch.repository.lock_write()
549
tree.branch.repository.unlock()
552
FailedSmartServerResponse(('NotDescendant',)),
554
'', branch_token, repo_token,
556
self.assertEqual('second-rev', tree.branch.last_revision())
560
def test_branch_diverged(self):
561
backing = self.get_transport()
562
request = self.request_class(backing)
563
tree = self.make_branch_and_memory_tree('.')
566
r1 = tree.commit('1st commit')
567
revno_1, revid_1 = tree.branch.last_revision_info()
568
r2 = tree.commit('2nd commit', rev_id='child-1')
569
# Undo the second commit
570
tree.branch.set_last_revision_info(revno_1, revid_1)
571
tree.set_parent_ids([revid_1])
572
# Make a new second commit, child-2. child-2 has diverged from
574
new_r2 = tree.commit('2nd commit', rev_id='child-2')
576
branch_token = tree.branch.lock_write()
577
repo_token = tree.branch.repository.lock_write()
578
tree.branch.repository.unlock()
581
FailedSmartServerResponse(('NotDescendant',)),
583
'', branch_token, repo_token,
585
self.assertEqual('child-2', tree.branch.last_revision())
479
587
tree.branch.unlock()