/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_smart.py

  • Committer: Andrew Bennetts
  • Date: 2008-05-22 07:49:06 UTC
  • mto: (3452.2.9 inter-remote-pack)
  • mto: This revision was merged to the branch mainline in revision 3511.
  • Revision ID: andrew.bennetts@canonical.com-20080522074906-dcdk44d7y8cdn4no
Greatly simplify RemoteBranch.update_revisions.  Still needs more tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
397
397
            request.execute(''))
398
398
 
399
399
 
400
 
class TestSmartServerBranchRequestSetLastRevision(tests.TestCaseWithMemoryTransport):
 
400
class SetLastRevisionCommonTests(object):
 
401
    """Mixin class for tests common to Branch.set_last_revision* variants."""
401
402
 
402
 
    def test_empty(self):
403
 
        backing = self.get_transport()
404
 
        request = smart.branch.SmartServerBranchRequestSetLastRevision(backing)
405
 
        b = self.make_branch('.')
406
 
        branch_token = b.lock_write()
407
 
        repo_token = b.repository.lock_write()
408
 
        b.repository.unlock()
409
 
        try:
410
 
            self.assertEqual(SmartServerResponse(('ok',)),
411
 
                request.execute(
412
 
                    '', branch_token, repo_token,
413
 
                    'null:'))
414
 
        finally:
415
 
            b.unlock()
 
403
    request_class = None
416
404
 
417
405
    def test_not_present_revision_id(self):
418
406
        backing = self.get_transport()
419
 
        request = smart.branch.SmartServerBranchRequestSetLastRevision(backing)
 
407
        request = self.request_class(backing)
420
408
        b = self.make_branch('.')
421
409
        branch_token = b.lock_write()
422
410
        repo_token = b.repository.lock_write()
431
419
        finally:
432
420
            b.unlock()
433
421
 
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('.')
438
 
        tree.lock_write()
439
 
        tree.add('')
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')
443
 
        tree.unlock()
444
 
        branch_token = tree.branch.lock_write()
445
 
        repo_token = tree.branch.repository.lock_write()
446
 
        tree.branch.repository.unlock()
447
 
        try:
448
 
            self.assertEqual(
449
 
                SmartServerResponse(('ok',)),
450
 
                request.execute(
451
 
                    '', branch_token, repo_token,
452
 
                    rev_id_utf8))
453
 
            self.assertEqual([rev_id_utf8], tree.branch.revision_history())
454
 
        finally:
455
 
            tree.branch.unlock()
456
 
 
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('.')
461
 
        tree.lock_write()
462
 
        tree.add('')
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')
466
 
        tree.unlock()
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()
471
 
        try:
472
 
            self.assertEqual(
473
 
                SmartServerResponse(('ok',)),
474
 
                request.execute(
475
 
                    '', branch_token, repo_token,
476
 
                    rev_id_utf8))
477
 
            self.assertEqual([rev_id_utf8], tree.branch.revision_history())
 
422
 
 
423
class TestSmartServerBranchRequestSetLastRevision(
 
424
    tests.TestCaseWithMemoryTransport, SetLastRevisionCommonTests):
 
425
 
 
426
    request_class = smart.branch.SmartServerBranchRequestSetLastRevision
 
427
 
 
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('.')
 
432
        tree.lock_write()
 
433
        tree.add('')
 
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')
 
437
        tree.unlock()
 
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()
 
442
        try:
 
443
            self.assertEqual(
 
444
                SuccessfulSmartServerResponse(('ok',)),
 
445
                request.execute(
 
446
                    '', branch_token, repo_token,
 
447
                    rev_id_utf8))
 
448
            self.assertEqual([rev_id_utf8], tree.branch.revision_history())
 
449
        finally:
 
450
            tree.branch.unlock()
 
451
 
 
452
 
 
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('.')
 
457
        tree.lock_write()
 
458
        tree.add('')
 
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')
 
462
        tree.unlock()
 
463
        branch_token = tree.branch.lock_write()
 
464
        repo_token = tree.branch.repository.lock_write()
 
465
        tree.branch.repository.unlock()
 
466
        try:
 
467
            self.assertEqual(
 
468
                SuccessfulSmartServerResponse(('ok',)),
 
469
                request.execute(
 
470
                    '', branch_token, repo_token,
 
471
                    rev_id_utf8))
 
472
            self.assertEqual([rev_id_utf8], tree.branch.revision_history())
 
473
        finally:
 
474
            tree.branch.unlock()
 
475
 
 
476
 
 
477
class TestSmartServerBranchRequestSetLastRevisionDescendant(
 
478
    tests.TestCaseWithMemoryTransport, SetLastRevisionCommonTests):
 
479
 
 
480
    request_class = \
 
481
        smart.branch.SmartServerBranchRequestSetLastRevisionDescendant
 
482
 
 
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()
 
490
        try:
 
491
            self.assertEqual(SmartServerResponse(('ok',)),
 
492
                request.execute(
 
493
                    '', branch_token, repo_token,
 
494
                    'null:'))
 
495
        finally:
 
496
            b.unlock()
 
497
 
 
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()
 
505
        try:
 
506
            self.assertEqual(SmartServerResponse(('ok', 0)),
 
507
                request.execute(
 
508
                    '', branch_token, repo_token,
 
509
                    'null:'))
 
510
        finally:
 
511
            b.unlock()
 
512
 
 
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('.')
 
517
        tree.lock_write()
 
518
        tree.add('')
 
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')
 
522
        tree.unlock()
 
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()
 
527
        try:
 
528
            self.assertEqual(
 
529
                SuccessfulSmartServerResponse(('ok', 1)),
 
530
                request.execute(
 
531
                    '', branch_token, repo_token,
 
532
                    rev_id_utf8))
 
533
            self.assertEqual([rev_id_utf8], tree.branch.revision_history())
 
534
        finally:
 
535
            tree.branch.unlock()
 
536
 
 
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('.')
 
541
        tree.lock_write()
 
542
        tree.add('')
 
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')
 
546
        tree.unlock()
 
547
        branch_token = tree.branch.lock_write()
 
548
        repo_token = tree.branch.repository.lock_write()
 
549
        tree.branch.repository.unlock()
 
550
        try:
 
551
            self.assertEqual(
 
552
                FailedSmartServerResponse(('NotDescendant',)),
 
553
                request.execute(
 
554
                    '', branch_token, repo_token,
 
555
                    rev_id_utf8))
 
556
            self.assertEqual('second-rev', tree.branch.last_revision())
 
557
        finally:
 
558
            tree.branch.unlock()
 
559
 
 
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('.')
 
564
        tree.lock_write()
 
565
        tree.add('')
 
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
 
573
        # child-1.
 
574
        new_r2 = tree.commit('2nd commit', rev_id='child-2')
 
575
        tree.unlock()
 
576
        branch_token = tree.branch.lock_write()
 
577
        repo_token = tree.branch.repository.lock_write()
 
578
        tree.branch.repository.unlock()
 
579
        try:
 
580
            self.assertEqual(
 
581
                FailedSmartServerResponse(('NotDescendant',)),
 
582
                request.execute(
 
583
                    '', branch_token, repo_token,
 
584
                    'child-1'))
 
585
            self.assertEqual('child-2', tree.branch.last_revision())
478
586
        finally:
479
587
            tree.branch.unlock()
480
588