~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/repository_implementations/__init__.py

  • Committer: Andrew Bennetts
  • Date: 2007-10-11 07:01:04 UTC
  • mto: This revision was merged to the branch mainline in revision 2905.
  • Revision ID: andrew.bennetts@canonical.com-20071011070104-9rfs3gv9zknm09i8
Some improvements suggested by Martin's review.

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
    ReadonlySmartTCPServer_for_testing,
37
37
    )
38
38
from bzrlib.tests import (
 
39
                          adapt_modules,
39
40
                          default_transport,
40
41
                          iter_suite_tests,
41
42
                          TestScenarioApplier,
544
545
    format_applier.scenarios = (disk_format_adapter.scenarios +
545
546
                                remote_repo_adapter.scenarios)
546
547
 
547
 
    # broken_scenario_applier adapts tests by BrokenRepoScenario; it's intended
548
 
    # to be used on top of format_applier.
 
548
    # broken_scenario_applier adapts tests by BrokenRepoScenario by repository
 
549
    # format; i.e. by the cartesian product of format scenarios and broken
 
550
    # repository scenarios.
 
551
    broken_scenarios = [(s.__name__, {'scenario_class': s})
 
552
                        for s in all_scenarios]
 
553
    broken_scenarios_for_all_formats = [
 
554
        ('%s,%s' % (f_scenario_name, b_scenario_name),
 
555
         dict(f_scenario_dict.items() + b_scenario_dict.items()))
 
556
        for f_scenario_name, f_scenario_dict in format_applier.scenarios
 
557
        for b_scenario_name, b_scenario_dict in broken_scenarios]
549
558
    broken_scenario_applier = TestScenarioApplier()
550
 
    broken_scenario_applier.scenarios = [(s.__name__, {'scenario_class': s})
551
 
                                         for s in all_scenarios]
 
559
    broken_scenario_applier.scenarios = broken_scenarios_for_all_formats
552
560
 
553
561
    prefix = 'bzrlib.tests.repository_implementations.'
554
 
    # A list of tests: (module_name, [adapters]).
555
562
    test_repository_implementations = [
556
 
        ('test_break_lock', [format_applier]),
557
 
        ('test_check_reconcile', [format_applier, broken_scenario_applier]),
558
 
        ('test_check', [format_applier]),
559
 
        ('test_commit_builder', [format_applier]),
560
 
        ('test_fetch', [format_applier]),
561
 
        ('test_fileid_involved', [format_applier]),
562
 
        ('test_has_same_location', [format_applier]),
563
 
        ('test_iter_reverse_revision_history', [format_applier]),
564
 
        ('test_pack', [format_applier]),
565
 
        ('test_reconcile', [format_applier]),
566
 
        ('test_repository', [format_applier]),
567
 
        ('test_revision', [format_applier]),
568
 
        ('test_statistics', [format_applier]),
569
 
        ('test_write_group', [format_applier]),
 
563
        'test_break_lock',
 
564
        'test_check',
 
565
        'test_commit_builder',
 
566
        'test_fetch',
 
567
        'test_fileid_involved',
 
568
        'test_has_same_location',
 
569
        'test_iter_reverse_revision_history',
 
570
        'test_pack',
 
571
        'test_reconcile',
 
572
        'test_repository',
 
573
        'test_revision',
 
574
        'test_statistics',
 
575
        'test_write_group',
570
576
        ]
571
577
 
572
578
    result = TestSuite()
573
579
    loader = TestLoader()
 
580
    module_name_list = [prefix + module_name
 
581
                        for module_name in test_repository_implementations]
 
582
    adapt_modules(module_name_list, format_applier, loader, result)
 
583
    adapt_modules(
 
584
        [prefix + 'test_check_reconcile'],
 
585
        broken_scenario_applier, loader, result)
574
586
 
575
 
    for module_name, appliers in test_repository_implementations:
576
 
        tests = loader.loadTestsFromModuleNames([prefix + module_name])
577
 
        suite = TestSuite()
578
 
        suite.addTests(tests)
579
 
        for applier in appliers:
580
 
            new_suite = TestSuite()
581
 
            for test in iter_suite_tests(suite):
582
 
                new_suite.addTests(applier.adapt(test))
583
 
            suite = new_suite
584
 
        result.addTests(suite)
585
 
    
586
587
    return result