579
610
bench_history=None,
612
result_decorators=None,
614
"""Create a TextTestRunner.
616
:param result_decorators: An optional list of decorators to apply
617
to the result object being used by the runner. Decorators are
618
applied left to right - the first element in the list is the
583
621
self.stream = unittest._WritelnDecorator(stream)
584
622
self.descriptions = descriptions
585
623
self.verbosity = verbosity
586
624
self._bench_history = bench_history
587
self.list_only = list_only
588
625
self._strict = strict
626
self._result_decorators = result_decorators or []
590
628
def run(self, test):
591
629
"Run the given test case or test suite."
592
startTime = time.time()
593
630
if self.verbosity == 1:
594
631
result_class = TextTestResult
595
632
elif self.verbosity >= 2:
596
633
result_class = VerboseTestResult
597
result = result_class(self.stream,
634
original_result = result_class(self.stream,
598
635
self.descriptions,
600
637
bench_history=self._bench_history,
601
638
strict=self._strict,
603
result.stop_early = self.stop_on_failure
604
result.report_starting()
606
if self.verbosity >= 2:
607
self.stream.writeln("Listing tests only ...\n")
609
for t in iter_suite_tests(test):
610
self.stream.writeln("%s" % (t.id()))
619
if isinstance(test, testtools.ConcurrentTestSuite):
620
# We need to catch bzr specific behaviors
621
test.run(BZRTransformingResult(result))
624
run = result.testsRun
626
stopTime = time.time()
627
timeTaken = stopTime - startTime
629
self.stream.writeln(result.separator2)
630
self.stream.writeln("%s %d test%s in %.3fs" % (actionTaken,
631
run, run != 1 and "s" or "", timeTaken))
632
self.stream.writeln()
633
if not result.wasSuccessful():
634
self.stream.write("FAILED (")
635
failed, errored = map(len, (result.failures, result.errors))
637
self.stream.write("failures=%d" % failed)
639
if failed: self.stream.write(", ")
640
self.stream.write("errors=%d" % errored)
641
if result.known_failure_count:
642
if failed or errored: self.stream.write(", ")
643
self.stream.write("known_failure_count=%d" %
644
result.known_failure_count)
645
self.stream.writeln(")")
647
if result.known_failure_count:
648
self.stream.writeln("OK (known_failures=%d)" %
649
result.known_failure_count)
651
self.stream.writeln("OK")
652
if result.skip_count > 0:
653
skipped = result.skip_count
654
self.stream.writeln('%d test%s skipped' %
655
(skipped, skipped != 1 and "s" or ""))
656
if result.unsupported:
657
for feature, count in sorted(result.unsupported.items()):
658
self.stream.writeln("Missing feature '%s' skipped %d tests." %
640
# Signal to result objects that look at stop early policy to stop,
641
original_result.stop_early = self.stop_on_failure
642
result = original_result
643
for decorator in self._result_decorators:
644
result = decorator(result)
645
result.stop_early = self.stop_on_failure
651
if isinstance(test, testtools.ConcurrentTestSuite):
652
# We need to catch bzr specific behaviors
653
result = BZRTransformingResult(result)
654
result.startTestRun()
659
# higher level code uses our extended protocol to determine
660
# what exit code to give.
661
return original_result
664
664
def iter_suite_tests(suite):
3416
3484
test_prefix_alias_registry.register('bp', 'bzrlib.plugins')
3487
def _test_suite_testmod_names():
3488
"""Return the standard list of test module names to test."""
3491
'bzrlib.tests.blackbox',
3492
'bzrlib.tests.commands',
3493
'bzrlib.tests.per_branch',
3494
'bzrlib.tests.per_bzrdir',
3495
'bzrlib.tests.per_interrepository',
3496
'bzrlib.tests.per_intertree',
3497
'bzrlib.tests.per_inventory',
3498
'bzrlib.tests.per_interbranch',
3499
'bzrlib.tests.per_lock',
3500
'bzrlib.tests.per_transport',
3501
'bzrlib.tests.per_tree',
3502
'bzrlib.tests.per_pack_repository',
3503
'bzrlib.tests.per_repository',
3504
'bzrlib.tests.per_repository_chk',
3505
'bzrlib.tests.per_repository_reference',
3506
'bzrlib.tests.per_versionedfile',
3507
'bzrlib.tests.per_workingtree',
3508
'bzrlib.tests.test__annotator',
3509
'bzrlib.tests.test__chk_map',
3510
'bzrlib.tests.test__dirstate_helpers',
3511
'bzrlib.tests.test__groupcompress',
3512
'bzrlib.tests.test__known_graph',
3513
'bzrlib.tests.test__rio',
3514
'bzrlib.tests.test__walkdirs_win32',
3515
'bzrlib.tests.test_ancestry',
3516
'bzrlib.tests.test_annotate',
3517
'bzrlib.tests.test_api',
3518
'bzrlib.tests.test_atomicfile',
3519
'bzrlib.tests.test_bad_files',
3520
'bzrlib.tests.test_bencode',
3521
'bzrlib.tests.test_bisect_multi',
3522
'bzrlib.tests.test_branch',
3523
'bzrlib.tests.test_branchbuilder',
3524
'bzrlib.tests.test_btree_index',
3525
'bzrlib.tests.test_bugtracker',
3526
'bzrlib.tests.test_bundle',
3527
'bzrlib.tests.test_bzrdir',
3528
'bzrlib.tests.test__chunks_to_lines',
3529
'bzrlib.tests.test_cache_utf8',
3530
'bzrlib.tests.test_chk_map',
3531
'bzrlib.tests.test_chk_serializer',
3532
'bzrlib.tests.test_chunk_writer',
3533
'bzrlib.tests.test_clean_tree',
3534
'bzrlib.tests.test_commands',
3535
'bzrlib.tests.test_commit',
3536
'bzrlib.tests.test_commit_merge',
3537
'bzrlib.tests.test_config',
3538
'bzrlib.tests.test_conflicts',
3539
'bzrlib.tests.test_counted_lock',
3540
'bzrlib.tests.test_crash',
3541
'bzrlib.tests.test_decorators',
3542
'bzrlib.tests.test_delta',
3543
'bzrlib.tests.test_debug',
3544
'bzrlib.tests.test_deprecated_graph',
3545
'bzrlib.tests.test_diff',
3546
'bzrlib.tests.test_directory_service',
3547
'bzrlib.tests.test_dirstate',
3548
'bzrlib.tests.test_email_message',
3549
'bzrlib.tests.test_eol_filters',
3550
'bzrlib.tests.test_errors',
3551
'bzrlib.tests.test_export',
3552
'bzrlib.tests.test_extract',
3553
'bzrlib.tests.test_fetch',
3554
'bzrlib.tests.test_fifo_cache',
3555
'bzrlib.tests.test_filters',
3556
'bzrlib.tests.test_ftp_transport',
3557
'bzrlib.tests.test_foreign',
3558
'bzrlib.tests.test_generate_docs',
3559
'bzrlib.tests.test_generate_ids',
3560
'bzrlib.tests.test_globbing',
3561
'bzrlib.tests.test_gpg',
3562
'bzrlib.tests.test_graph',
3563
'bzrlib.tests.test_groupcompress',
3564
'bzrlib.tests.test_hashcache',
3565
'bzrlib.tests.test_help',
3566
'bzrlib.tests.test_hooks',
3567
'bzrlib.tests.test_http',
3568
'bzrlib.tests.test_http_response',
3569
'bzrlib.tests.test_https_ca_bundle',
3570
'bzrlib.tests.test_identitymap',
3571
'bzrlib.tests.test_ignores',
3572
'bzrlib.tests.test_index',
3573
'bzrlib.tests.test_info',
3574
'bzrlib.tests.test_inv',
3575
'bzrlib.tests.test_inventory_delta',
3576
'bzrlib.tests.test_knit',
3577
'bzrlib.tests.test_lazy_import',
3578
'bzrlib.tests.test_lazy_regex',
3579
'bzrlib.tests.test_lock',
3580
'bzrlib.tests.test_lockable_files',
3581
'bzrlib.tests.test_lockdir',
3582
'bzrlib.tests.test_log',
3583
'bzrlib.tests.test_lru_cache',
3584
'bzrlib.tests.test_lsprof',
3585
'bzrlib.tests.test_mail_client',
3586
'bzrlib.tests.test_memorytree',
3587
'bzrlib.tests.test_merge',
3588
'bzrlib.tests.test_merge3',
3589
'bzrlib.tests.test_merge_core',
3590
'bzrlib.tests.test_merge_directive',
3591
'bzrlib.tests.test_missing',
3592
'bzrlib.tests.test_msgeditor',
3593
'bzrlib.tests.test_multiparent',
3594
'bzrlib.tests.test_mutabletree',
3595
'bzrlib.tests.test_nonascii',
3596
'bzrlib.tests.test_options',
3597
'bzrlib.tests.test_osutils',
3598
'bzrlib.tests.test_osutils_encodings',
3599
'bzrlib.tests.test_pack',
3600
'bzrlib.tests.test_patch',
3601
'bzrlib.tests.test_patches',
3602
'bzrlib.tests.test_permissions',
3603
'bzrlib.tests.test_plugins',
3604
'bzrlib.tests.test_progress',
3605
'bzrlib.tests.test_read_bundle',
3606
'bzrlib.tests.test_reconcile',
3607
'bzrlib.tests.test_reconfigure',
3608
'bzrlib.tests.test_registry',
3609
'bzrlib.tests.test_remote',
3610
'bzrlib.tests.test_rename_map',
3611
'bzrlib.tests.test_repository',
3612
'bzrlib.tests.test_revert',
3613
'bzrlib.tests.test_revision',
3614
'bzrlib.tests.test_revisionspec',
3615
'bzrlib.tests.test_revisiontree',
3616
'bzrlib.tests.test_rio',
3617
'bzrlib.tests.test_rules',
3618
'bzrlib.tests.test_sampler',
3619
'bzrlib.tests.test_selftest',
3620
'bzrlib.tests.test_serializer',
3621
'bzrlib.tests.test_setup',
3622
'bzrlib.tests.test_sftp_transport',
3623
'bzrlib.tests.test_shelf',
3624
'bzrlib.tests.test_shelf_ui',
3625
'bzrlib.tests.test_smart',
3626
'bzrlib.tests.test_smart_add',
3627
'bzrlib.tests.test_smart_request',
3628
'bzrlib.tests.test_smart_transport',
3629
'bzrlib.tests.test_smtp_connection',
3630
'bzrlib.tests.test_source',
3631
'bzrlib.tests.test_ssh_transport',
3632
'bzrlib.tests.test_status',
3633
'bzrlib.tests.test_store',
3634
'bzrlib.tests.test_strace',
3635
'bzrlib.tests.test_subsume',
3636
'bzrlib.tests.test_switch',
3637
'bzrlib.tests.test_symbol_versioning',
3638
'bzrlib.tests.test_tag',
3639
'bzrlib.tests.test_testament',
3640
'bzrlib.tests.test_textfile',
3641
'bzrlib.tests.test_textmerge',
3642
'bzrlib.tests.test_timestamp',
3643
'bzrlib.tests.test_trace',
3644
'bzrlib.tests.test_transactions',
3645
'bzrlib.tests.test_transform',
3646
'bzrlib.tests.test_transport',
3647
'bzrlib.tests.test_transport_log',
3648
'bzrlib.tests.test_tree',
3649
'bzrlib.tests.test_treebuilder',
3650
'bzrlib.tests.test_tsort',
3651
'bzrlib.tests.test_tuned_gzip',
3652
'bzrlib.tests.test_ui',
3653
'bzrlib.tests.test_uncommit',
3654
'bzrlib.tests.test_upgrade',
3655
'bzrlib.tests.test_upgrade_stacked',
3656
'bzrlib.tests.test_urlutils',
3657
'bzrlib.tests.test_version',
3658
'bzrlib.tests.test_version_info',
3659
'bzrlib.tests.test_weave',
3660
'bzrlib.tests.test_whitebox',
3661
'bzrlib.tests.test_win32utils',
3662
'bzrlib.tests.test_workingtree',
3663
'bzrlib.tests.test_workingtree_4',
3664
'bzrlib.tests.test_wsgi',
3665
'bzrlib.tests.test_xml',
3669
def _test_suite_modules_to_doctest():
3670
"""Return the list of modules to doctest."""
3673
'bzrlib.branchbuilder',
3676
'bzrlib.iterablefile',
3680
'bzrlib.symbol_versioning',
3683
'bzrlib.version_info_formats.format_custom',
3419
3687
def test_suite(keep_only=None, starting_with=None):
3420
3688
"""Build and return TestSuite for the whole of bzrlib.
3427
3695
This function can be replaced if you need to change the default test
3428
3696
suite on a global basis, but it is not encouraged.
3432
'bzrlib.tests.blackbox',
3433
'bzrlib.tests.commands',
3434
'bzrlib.tests.per_branch',
3435
'bzrlib.tests.per_bzrdir',
3436
'bzrlib.tests.per_interrepository',
3437
'bzrlib.tests.per_intertree',
3438
'bzrlib.tests.per_inventory',
3439
'bzrlib.tests.per_interbranch',
3440
'bzrlib.tests.per_lock',
3441
'bzrlib.tests.per_transport',
3442
'bzrlib.tests.per_tree',
3443
'bzrlib.tests.per_pack_repository',
3444
'bzrlib.tests.per_repository',
3445
'bzrlib.tests.per_repository_chk',
3446
'bzrlib.tests.per_repository_reference',
3447
'bzrlib.tests.per_versionedfile',
3448
'bzrlib.tests.per_workingtree',
3449
'bzrlib.tests.test__annotator',
3450
'bzrlib.tests.test__chk_map',
3451
'bzrlib.tests.test__dirstate_helpers',
3452
'bzrlib.tests.test__groupcompress',
3453
'bzrlib.tests.test__known_graph',
3454
'bzrlib.tests.test__rio',
3455
'bzrlib.tests.test__walkdirs_win32',
3456
'bzrlib.tests.test_ancestry',
3457
'bzrlib.tests.test_annotate',
3458
'bzrlib.tests.test_api',
3459
'bzrlib.tests.test_atomicfile',
3460
'bzrlib.tests.test_bad_files',
3461
'bzrlib.tests.test_bencode',
3462
'bzrlib.tests.test_bisect_multi',
3463
'bzrlib.tests.test_branch',
3464
'bzrlib.tests.test_branchbuilder',
3465
'bzrlib.tests.test_btree_index',
3466
'bzrlib.tests.test_bugtracker',
3467
'bzrlib.tests.test_bundle',
3468
'bzrlib.tests.test_bzrdir',
3469
'bzrlib.tests.test__chunks_to_lines',
3470
'bzrlib.tests.test_cache_utf8',
3471
'bzrlib.tests.test_chk_map',
3472
'bzrlib.tests.test_chk_serializer',
3473
'bzrlib.tests.test_chunk_writer',
3474
'bzrlib.tests.test_clean_tree',
3475
'bzrlib.tests.test_commands',
3476
'bzrlib.tests.test_commit',
3477
'bzrlib.tests.test_commit_merge',
3478
'bzrlib.tests.test_config',
3479
'bzrlib.tests.test_conflicts',
3480
'bzrlib.tests.test_counted_lock',
3481
'bzrlib.tests.test_crash',
3482
'bzrlib.tests.test_decorators',
3483
'bzrlib.tests.test_delta',
3484
'bzrlib.tests.test_debug',
3485
'bzrlib.tests.test_deprecated_graph',
3486
'bzrlib.tests.test_diff',
3487
'bzrlib.tests.test_directory_service',
3488
'bzrlib.tests.test_dirstate',
3489
'bzrlib.tests.test_email_message',
3490
'bzrlib.tests.test_eol_filters',
3491
'bzrlib.tests.test_errors',
3492
'bzrlib.tests.test_export',
3493
'bzrlib.tests.test_extract',
3494
'bzrlib.tests.test_fetch',
3495
'bzrlib.tests.test_fifo_cache',
3496
'bzrlib.tests.test_filters',
3497
'bzrlib.tests.test_ftp_transport',
3498
'bzrlib.tests.test_foreign',
3499
'bzrlib.tests.test_generate_docs',
3500
'bzrlib.tests.test_generate_ids',
3501
'bzrlib.tests.test_globbing',
3502
'bzrlib.tests.test_gpg',
3503
'bzrlib.tests.test_graph',
3504
'bzrlib.tests.test_groupcompress',
3505
'bzrlib.tests.test_hashcache',
3506
'bzrlib.tests.test_help',
3507
'bzrlib.tests.test_hooks',
3508
'bzrlib.tests.test_http',
3509
'bzrlib.tests.test_http_response',
3510
'bzrlib.tests.test_https_ca_bundle',
3511
'bzrlib.tests.test_identitymap',
3512
'bzrlib.tests.test_ignores',
3513
'bzrlib.tests.test_index',
3514
'bzrlib.tests.test_info',
3515
'bzrlib.tests.test_inv',
3516
'bzrlib.tests.test_inventory_delta',
3517
'bzrlib.tests.test_knit',
3518
'bzrlib.tests.test_lazy_import',
3519
'bzrlib.tests.test_lazy_regex',
3520
'bzrlib.tests.test_lock',
3521
'bzrlib.tests.test_lockable_files',
3522
'bzrlib.tests.test_lockdir',
3523
'bzrlib.tests.test_log',
3524
'bzrlib.tests.test_lru_cache',
3525
'bzrlib.tests.test_lsprof',
3526
'bzrlib.tests.test_mail_client',
3527
'bzrlib.tests.test_memorytree',
3528
'bzrlib.tests.test_merge',
3529
'bzrlib.tests.test_merge3',
3530
'bzrlib.tests.test_merge_core',
3531
'bzrlib.tests.test_merge_directive',
3532
'bzrlib.tests.test_missing',
3533
'bzrlib.tests.test_msgeditor',
3534
'bzrlib.tests.test_multiparent',
3535
'bzrlib.tests.test_mutabletree',
3536
'bzrlib.tests.test_nonascii',
3537
'bzrlib.tests.test_options',
3538
'bzrlib.tests.test_osutils',
3539
'bzrlib.tests.test_osutils_encodings',
3540
'bzrlib.tests.test_pack',
3541
'bzrlib.tests.test_patch',
3542
'bzrlib.tests.test_patches',
3543
'bzrlib.tests.test_permissions',
3544
'bzrlib.tests.test_plugins',
3545
'bzrlib.tests.test_progress',
3546
'bzrlib.tests.test_read_bundle',
3547
'bzrlib.tests.test_reconcile',
3548
'bzrlib.tests.test_reconfigure',
3549
'bzrlib.tests.test_registry',
3550
'bzrlib.tests.test_remote',
3551
'bzrlib.tests.test_rename_map',
3552
'bzrlib.tests.test_repository',
3553
'bzrlib.tests.test_revert',
3554
'bzrlib.tests.test_revision',
3555
'bzrlib.tests.test_revisionspec',
3556
'bzrlib.tests.test_revisiontree',
3557
'bzrlib.tests.test_rio',
3558
'bzrlib.tests.test_rules',
3559
'bzrlib.tests.test_sampler',
3560
'bzrlib.tests.test_selftest',
3561
'bzrlib.tests.test_serializer',
3562
'bzrlib.tests.test_setup',
3563
'bzrlib.tests.test_sftp_transport',
3564
'bzrlib.tests.test_shelf',
3565
'bzrlib.tests.test_shelf_ui',
3566
'bzrlib.tests.test_smart',
3567
'bzrlib.tests.test_smart_add',
3568
'bzrlib.tests.test_smart_request',
3569
'bzrlib.tests.test_smart_transport',
3570
'bzrlib.tests.test_smtp_connection',
3571
'bzrlib.tests.test_source',
3572
'bzrlib.tests.test_ssh_transport',
3573
'bzrlib.tests.test_status',
3574
'bzrlib.tests.test_store',
3575
'bzrlib.tests.test_strace',
3576
'bzrlib.tests.test_subsume',
3577
'bzrlib.tests.test_switch',
3578
'bzrlib.tests.test_symbol_versioning',
3579
'bzrlib.tests.test_tag',
3580
'bzrlib.tests.test_testament',
3581
'bzrlib.tests.test_textfile',
3582
'bzrlib.tests.test_textmerge',
3583
'bzrlib.tests.test_timestamp',
3584
'bzrlib.tests.test_trace',
3585
'bzrlib.tests.test_transactions',
3586
'bzrlib.tests.test_transform',
3587
'bzrlib.tests.test_transport',
3588
'bzrlib.tests.test_transport_log',
3589
'bzrlib.tests.test_tree',
3590
'bzrlib.tests.test_treebuilder',
3591
'bzrlib.tests.test_tsort',
3592
'bzrlib.tests.test_tuned_gzip',
3593
'bzrlib.tests.test_ui',
3594
'bzrlib.tests.test_uncommit',
3595
'bzrlib.tests.test_upgrade',
3596
'bzrlib.tests.test_upgrade_stacked',
3597
'bzrlib.tests.test_urlutils',
3598
'bzrlib.tests.test_version',
3599
'bzrlib.tests.test_version_info',
3600
'bzrlib.tests.test_weave',
3601
'bzrlib.tests.test_whitebox',
3602
'bzrlib.tests.test_win32utils',
3603
'bzrlib.tests.test_workingtree',
3604
'bzrlib.tests.test_workingtree_4',
3605
'bzrlib.tests.test_wsgi',
3606
'bzrlib.tests.test_xml',
3609
3699
loader = TestUtil.TestLoader()