1507
1731
:returns: The actual attr value.
1509
value = getattr(obj, attr_name)
1510
1733
# The actual value is captured by the call below
1511
self.addCleanup(setattr, obj, attr_name, value)
1734
value = getattr(obj, attr_name, _unitialized_attr)
1735
if value is _unitialized_attr:
1736
# When the test completes, the attribute should not exist, but if
1737
# we aren't setting a value, we don't need to do anything.
1738
if new is not _unitialized_attr:
1739
self.addCleanup(delattr, obj, attr_name)
1741
self.addCleanup(setattr, obj, attr_name, value)
1512
1742
if new is not _unitialized_attr:
1513
1743
setattr(obj, attr_name, new)
1746
def overrideEnv(self, name, new):
1747
"""Set an environment variable, and reset it after the test.
1749
:param name: The environment variable name.
1751
:param new: The value to set the variable to. If None, the
1752
variable is deleted from the environment.
1754
:returns: The actual variable value.
1756
value = osutils.set_or_unset_env(name, new)
1757
self.addCleanup(osutils.set_or_unset_env, name, value)
1760
def recordCalls(self, obj, attr_name):
1761
"""Monkeypatch in a wrapper that will record calls.
1763
The monkeypatch is automatically removed when the test concludes.
1765
:param obj: The namespace holding the reference to be replaced;
1766
typically a module, class, or object.
1767
:param attr_name: A string for the name of the attribute to
1769
:returns: A list that will be extended with one item every time the
1770
function is called, with a tuple of (args, kwargs).
1774
def decorator(*args, **kwargs):
1775
calls.append((args, kwargs))
1776
return orig(*args, **kwargs)
1777
orig = self.overrideAttr(obj, attr_name, decorator)
1516
1780
def _cleanEnvironment(self):
1518
'BZR_HOME': None, # Don't inherit BZR_HOME to all the tests.
1519
'HOME': os.getcwd(),
1520
# bzr now uses the Win32 API and doesn't rely on APPDATA, but the
1521
# tests do check our impls match APPDATA
1522
'BZR_EDITOR': None, # test_msgeditor manipulates this variable
1526
'BZREMAIL': None, # may still be present in the environment
1528
'BZR_PROGRESS_BAR': None,
1530
'BZR_PLUGIN_PATH': None,
1531
'BZR_DISABLE_PLUGINS': None,
1532
'BZR_PLUGINS_AT': None,
1533
'BZR_CONCURRENCY': None,
1534
# Make sure that any text ui tests are consistent regardless of
1535
# the environment the test case is run in; you may want tests that
1536
# test other combinations. 'dumb' is a reasonable guess for tests
1537
# going to a pipe or a StringIO.
1541
'BZR_COLUMNS': '80',
1543
'SSH_AUTH_SOCK': None,
1547
'https_proxy': None,
1548
'HTTPS_PROXY': None,
1553
# Nobody cares about ftp_proxy, FTP_PROXY AFAIK. So far at
1554
# least. If you do (care), please update this comment
1558
'BZR_REMOTE_PATH': None,
1559
# Generally speaking, we don't want apport reporting on crashes in
1560
# the test envirnoment unless we're specifically testing apport,
1561
# so that it doesn't leak into the real system environment. We
1562
# use an env var so it propagates to subprocesses.
1563
'APPORT_DISABLE': '1',
1566
self.addCleanup(self._restoreEnvironment)
1567
for name, value in new_env.iteritems():
1568
self._captureVar(name, value)
1570
def _captureVar(self, name, newvalue):
1571
"""Set an environment variable, and reset it when finished."""
1572
self._old_env[name] = osutils.set_or_unset_env(name, newvalue)
1574
def _restoreEnvironment(self):
1575
for name, value in self._old_env.iteritems():
1576
osutils.set_or_unset_env(name, value)
1781
for name, value in isolated_environ.items():
1782
self.overrideEnv(name, value)
1578
1784
def _restoreHooks(self):
1579
1785
for klass, (name, hooks) in self._preserved_hooks.items():
1580
1786
setattr(klass, name, hooks)
1787
self._preserved_hooks.clear()
1788
breezy.hooks._lazy_hooks = self._preserved_lazy_hooks
1789
self._preserved_lazy_hooks.clear()
1582
1791
def knownFailure(self, reason):
1583
"""This test has failed for some known reason."""
1584
raise KnownFailure(reason)
1792
"""Declare that this test fails for a known reason
1794
Tests that are known to fail should generally be using expectedFailure
1795
with an appropriate reverse assertion if a change could cause the test
1796
to start passing. Conversely if the test has no immediate prospect of
1797
succeeding then using skip is more suitable.
1799
When this method is called while an exception is being handled, that
1800
traceback will be used, otherwise a new exception will be thrown to
1801
provide one but won't be reported.
1803
self._add_reason(reason)
1805
exc_info = sys.exc_info()
1806
if exc_info != (None, None, None):
1807
self._report_traceback(exc_info)
1810
raise self.failureException(reason)
1811
except self.failureException:
1812
exc_info = sys.exc_info()
1813
# GZ 02-08-2011: Maybe cleanup this err.exc_info attribute too?
1814
raise testtools.testcase._ExpectedFailure(exc_info)
1818
def _suppress_log(self):
1819
"""Remove the log info from details."""
1820
self.discardDetail('log')
1586
1822
def _do_skip(self, result, reason):
1823
self._suppress_log()
1587
1824
addSkip = getattr(result, 'addSkip', None)
1588
1825
if not callable(addSkip):
1589
1826
result.addSuccess(result)
3616
3852
# This alias allows to detect typos ('bzrlin.') by making all valid test ids
3617
# appear prefixed ('bzrlib.' is "replaced" by 'bzrlib.').
3618
test_prefix_alias_registry.register('bzrlib', 'bzrlib')
3853
# appear prefixed ('breezy.' is "replaced" by 'breezy.').
3854
test_prefix_alias_registry.register('breezy', 'breezy')
3620
3856
# Obvious highest levels prefixes, feel free to add your own via a plugin
3621
test_prefix_alias_registry.register('bd', 'bzrlib.doc')
3622
test_prefix_alias_registry.register('bu', 'bzrlib.utils')
3623
test_prefix_alias_registry.register('bt', 'bzrlib.tests')
3624
test_prefix_alias_registry.register('bb', 'bzrlib.tests.blackbox')
3625
test_prefix_alias_registry.register('bp', 'bzrlib.plugins')
3857
test_prefix_alias_registry.register('bd', 'breezy.doc')
3858
test_prefix_alias_registry.register('bu', 'breezy.utils')
3859
test_prefix_alias_registry.register('bt', 'breezy.tests')
3860
test_prefix_alias_registry.register('bb', 'breezy.tests.blackbox')
3861
test_prefix_alias_registry.register('bp', 'breezy.plugins')
3628
3864
def _test_suite_testmod_names():
3629
3865
"""Return the standard list of test module names to test."""
3632
'bzrlib.tests.blackbox',
3633
'bzrlib.tests.commands',
3634
'bzrlib.tests.per_branch',
3635
'bzrlib.tests.per_bzrdir',
3636
'bzrlib.tests.per_bzrdir_colo',
3637
'bzrlib.tests.per_foreign_vcs',
3638
'bzrlib.tests.per_interrepository',
3639
'bzrlib.tests.per_intertree',
3640
'bzrlib.tests.per_inventory',
3641
'bzrlib.tests.per_interbranch',
3642
'bzrlib.tests.per_lock',
3643
'bzrlib.tests.per_merger',
3644
'bzrlib.tests.per_transport',
3645
'bzrlib.tests.per_tree',
3646
'bzrlib.tests.per_pack_repository',
3647
'bzrlib.tests.per_repository',
3648
'bzrlib.tests.per_repository_chk',
3649
'bzrlib.tests.per_repository_reference',
3650
'bzrlib.tests.per_uifactory',
3651
'bzrlib.tests.per_versionedfile',
3652
'bzrlib.tests.per_workingtree',
3653
'bzrlib.tests.test__annotator',
3654
'bzrlib.tests.test__bencode',
3655
'bzrlib.tests.test__chk_map',
3656
'bzrlib.tests.test__dirstate_helpers',
3657
'bzrlib.tests.test__groupcompress',
3658
'bzrlib.tests.test__known_graph',
3659
'bzrlib.tests.test__rio',
3660
'bzrlib.tests.test__simple_set',
3661
'bzrlib.tests.test__static_tuple',
3662
'bzrlib.tests.test__walkdirs_win32',
3663
'bzrlib.tests.test_ancestry',
3664
'bzrlib.tests.test_annotate',
3665
'bzrlib.tests.test_api',
3666
'bzrlib.tests.test_atomicfile',
3667
'bzrlib.tests.test_bad_files',
3668
'bzrlib.tests.test_bisect_multi',
3669
'bzrlib.tests.test_branch',
3670
'bzrlib.tests.test_branchbuilder',
3671
'bzrlib.tests.test_btree_index',
3672
'bzrlib.tests.test_bugtracker',
3673
'bzrlib.tests.test_bundle',
3674
'bzrlib.tests.test_bzrdir',
3675
'bzrlib.tests.test__chunks_to_lines',
3676
'bzrlib.tests.test_cache_utf8',
3677
'bzrlib.tests.test_chk_map',
3678
'bzrlib.tests.test_chk_serializer',
3679
'bzrlib.tests.test_chunk_writer',
3680
'bzrlib.tests.test_clean_tree',
3681
'bzrlib.tests.test_cleanup',
3682
'bzrlib.tests.test_cmdline',
3683
'bzrlib.tests.test_commands',
3684
'bzrlib.tests.test_commit',
3685
'bzrlib.tests.test_commit_merge',
3686
'bzrlib.tests.test_config',
3687
'bzrlib.tests.test_conflicts',
3688
'bzrlib.tests.test_counted_lock',
3689
'bzrlib.tests.test_crash',
3690
'bzrlib.tests.test_decorators',
3691
'bzrlib.tests.test_delta',
3692
'bzrlib.tests.test_debug',
3693
'bzrlib.tests.test_deprecated_graph',
3694
'bzrlib.tests.test_diff',
3695
'bzrlib.tests.test_directory_service',
3696
'bzrlib.tests.test_dirstate',
3697
'bzrlib.tests.test_email_message',
3698
'bzrlib.tests.test_eol_filters',
3699
'bzrlib.tests.test_errors',
3700
'bzrlib.tests.test_export',
3701
'bzrlib.tests.test_extract',
3702
'bzrlib.tests.test_fetch',
3703
'bzrlib.tests.test_fifo_cache',
3704
'bzrlib.tests.test_filters',
3705
'bzrlib.tests.test_ftp_transport',
3706
'bzrlib.tests.test_foreign',
3707
'bzrlib.tests.test_generate_docs',
3708
'bzrlib.tests.test_generate_ids',
3709
'bzrlib.tests.test_globbing',
3710
'bzrlib.tests.test_gpg',
3711
'bzrlib.tests.test_graph',
3712
'bzrlib.tests.test_groupcompress',
3713
'bzrlib.tests.test_hashcache',
3714
'bzrlib.tests.test_help',
3715
'bzrlib.tests.test_hooks',
3716
'bzrlib.tests.test_http',
3717
'bzrlib.tests.test_http_response',
3718
'bzrlib.tests.test_https_ca_bundle',
3719
'bzrlib.tests.test_identitymap',
3720
'bzrlib.tests.test_ignores',
3721
'bzrlib.tests.test_index',
3722
'bzrlib.tests.test_import_tariff',
3723
'bzrlib.tests.test_info',
3724
'bzrlib.tests.test_inv',
3725
'bzrlib.tests.test_inventory_delta',
3726
'bzrlib.tests.test_knit',
3727
'bzrlib.tests.test_lazy_import',
3728
'bzrlib.tests.test_lazy_regex',
3729
'bzrlib.tests.test_lock',
3730
'bzrlib.tests.test_lockable_files',
3731
'bzrlib.tests.test_lockdir',
3732
'bzrlib.tests.test_log',
3733
'bzrlib.tests.test_lru_cache',
3734
'bzrlib.tests.test_lsprof',
3735
'bzrlib.tests.test_mail_client',
3736
'bzrlib.tests.test_memorytree',
3737
'bzrlib.tests.test_merge',
3738
'bzrlib.tests.test_merge3',
3739
'bzrlib.tests.test_merge_core',
3740
'bzrlib.tests.test_merge_directive',
3741
'bzrlib.tests.test_missing',
3742
'bzrlib.tests.test_msgeditor',
3743
'bzrlib.tests.test_multiparent',
3744
'bzrlib.tests.test_mutabletree',
3745
'bzrlib.tests.test_nonascii',
3746
'bzrlib.tests.test_options',
3747
'bzrlib.tests.test_osutils',
3748
'bzrlib.tests.test_osutils_encodings',
3749
'bzrlib.tests.test_pack',
3750
'bzrlib.tests.test_patch',
3751
'bzrlib.tests.test_patches',
3752
'bzrlib.tests.test_permissions',
3753
'bzrlib.tests.test_plugins',
3754
'bzrlib.tests.test_progress',
3755
'bzrlib.tests.test_read_bundle',
3756
'bzrlib.tests.test_reconcile',
3757
'bzrlib.tests.test_reconfigure',
3758
'bzrlib.tests.test_registry',
3759
'bzrlib.tests.test_remote',
3760
'bzrlib.tests.test_rename_map',
3761
'bzrlib.tests.test_repository',
3762
'bzrlib.tests.test_revert',
3763
'bzrlib.tests.test_revision',
3764
'bzrlib.tests.test_revisionspec',
3765
'bzrlib.tests.test_revisiontree',
3766
'bzrlib.tests.test_rio',
3767
'bzrlib.tests.test_rules',
3768
'bzrlib.tests.test_sampler',
3769
'bzrlib.tests.test_script',
3770
'bzrlib.tests.test_selftest',
3771
'bzrlib.tests.test_serializer',
3772
'bzrlib.tests.test_setup',
3773
'bzrlib.tests.test_sftp_transport',
3774
'bzrlib.tests.test_shelf',
3775
'bzrlib.tests.test_shelf_ui',
3776
'bzrlib.tests.test_smart',
3777
'bzrlib.tests.test_smart_add',
3778
'bzrlib.tests.test_smart_request',
3779
'bzrlib.tests.test_smart_transport',
3780
'bzrlib.tests.test_smtp_connection',
3781
'bzrlib.tests.test_source',
3782
'bzrlib.tests.test_ssh_transport',
3783
'bzrlib.tests.test_status',
3784
'bzrlib.tests.test_store',
3785
'bzrlib.tests.test_strace',
3786
'bzrlib.tests.test_subsume',
3787
'bzrlib.tests.test_switch',
3788
'bzrlib.tests.test_symbol_versioning',
3789
'bzrlib.tests.test_tag',
3790
'bzrlib.tests.test_testament',
3791
'bzrlib.tests.test_textfile',
3792
'bzrlib.tests.test_textmerge',
3793
'bzrlib.tests.test_timestamp',
3794
'bzrlib.tests.test_trace',
3795
'bzrlib.tests.test_transactions',
3796
'bzrlib.tests.test_transform',
3797
'bzrlib.tests.test_transport',
3798
'bzrlib.tests.test_transport_log',
3799
'bzrlib.tests.test_tree',
3800
'bzrlib.tests.test_treebuilder',
3801
'bzrlib.tests.test_tsort',
3802
'bzrlib.tests.test_tuned_gzip',
3803
'bzrlib.tests.test_ui',
3804
'bzrlib.tests.test_uncommit',
3805
'bzrlib.tests.test_upgrade',
3806
'bzrlib.tests.test_upgrade_stacked',
3807
'bzrlib.tests.test_urlutils',
3808
'bzrlib.tests.test_version',
3809
'bzrlib.tests.test_version_info',
3810
'bzrlib.tests.test_weave',
3811
'bzrlib.tests.test_whitebox',
3812
'bzrlib.tests.test_win32utils',
3813
'bzrlib.tests.test_workingtree',
3814
'bzrlib.tests.test_workingtree_4',
3815
'bzrlib.tests.test_wsgi',
3816
'bzrlib.tests.test_xml',
3868
'breezy.tests.blackbox',
3869
'breezy.tests.commands',
3870
'breezy.tests.per_branch',
3871
'breezy.tests.per_bzrdir',
3872
'breezy.tests.per_controldir',
3873
'breezy.tests.per_controldir_colo',
3874
'breezy.tests.per_foreign_vcs',
3875
'breezy.tests.per_interrepository',
3876
'breezy.tests.per_intertree',
3877
'breezy.tests.per_inventory',
3878
'breezy.tests.per_interbranch',
3879
'breezy.tests.per_lock',
3880
'breezy.tests.per_merger',
3881
'breezy.tests.per_transport',
3882
'breezy.tests.per_tree',
3883
'breezy.tests.per_pack_repository',
3884
'breezy.tests.per_repository',
3885
'breezy.tests.per_repository_chk',
3886
'breezy.tests.per_repository_reference',
3887
'breezy.tests.per_repository_vf',
3888
'breezy.tests.per_uifactory',
3889
'breezy.tests.per_versionedfile',
3890
'breezy.tests.per_workingtree',
3891
'breezy.tests.test__annotator',
3892
'breezy.tests.test__bencode',
3893
'breezy.tests.test__btree_serializer',
3894
'breezy.tests.test__chk_map',
3895
'breezy.tests.test__dirstate_helpers',
3896
'breezy.tests.test__groupcompress',
3897
'breezy.tests.test__known_graph',
3898
'breezy.tests.test__rio',
3899
'breezy.tests.test__simple_set',
3900
'breezy.tests.test__static_tuple',
3901
'breezy.tests.test__walkdirs_win32',
3902
'breezy.tests.test_ancestry',
3903
'breezy.tests.test_annotate',
3904
'breezy.tests.test_api',
3905
'breezy.tests.test_atomicfile',
3906
'breezy.tests.test_bad_files',
3907
'breezy.tests.test_bisect_multi',
3908
'breezy.tests.test_branch',
3909
'breezy.tests.test_branchbuilder',
3910
'breezy.tests.test_btree_index',
3911
'breezy.tests.test_bugtracker',
3912
'breezy.tests.test_bundle',
3913
'breezy.tests.test_bzrdir',
3914
'breezy.tests.test__chunks_to_lines',
3915
'breezy.tests.test_cache_utf8',
3916
'breezy.tests.test_chk_map',
3917
'breezy.tests.test_chk_serializer',
3918
'breezy.tests.test_chunk_writer',
3919
'breezy.tests.test_clean_tree',
3920
'breezy.tests.test_cleanup',
3921
'breezy.tests.test_cmdline',
3922
'breezy.tests.test_commands',
3923
'breezy.tests.test_commit',
3924
'breezy.tests.test_commit_merge',
3925
'breezy.tests.test_config',
3926
'breezy.tests.test_conflicts',
3927
'breezy.tests.test_controldir',
3928
'breezy.tests.test_counted_lock',
3929
'breezy.tests.test_crash',
3930
'breezy.tests.test_decorators',
3931
'breezy.tests.test_delta',
3932
'breezy.tests.test_debug',
3933
'breezy.tests.test_diff',
3934
'breezy.tests.test_directory_service',
3935
'breezy.tests.test_dirstate',
3936
'breezy.tests.test_email_message',
3937
'breezy.tests.test_eol_filters',
3938
'breezy.tests.test_errors',
3939
'breezy.tests.test_estimate_compressed_size',
3940
'breezy.tests.test_export',
3941
'breezy.tests.test_export_pot',
3942
'breezy.tests.test_extract',
3943
'breezy.tests.test_features',
3944
'breezy.tests.test_fetch',
3945
'breezy.tests.test_fixtures',
3946
'breezy.tests.test_fifo_cache',
3947
'breezy.tests.test_filters',
3948
'breezy.tests.test_filter_tree',
3949
'breezy.tests.test_ftp_transport',
3950
'breezy.tests.test_foreign',
3951
'breezy.tests.test_generate_docs',
3952
'breezy.tests.test_generate_ids',
3953
'breezy.tests.test_globbing',
3954
'breezy.tests.test_gpg',
3955
'breezy.tests.test_graph',
3956
'breezy.tests.test_groupcompress',
3957
'breezy.tests.test_hashcache',
3958
'breezy.tests.test_help',
3959
'breezy.tests.test_hooks',
3960
'breezy.tests.test_http',
3961
'breezy.tests.test_http_response',
3962
'breezy.tests.test_https_ca_bundle',
3963
'breezy.tests.test_https_urllib',
3964
'breezy.tests.test_i18n',
3965
'breezy.tests.test_identitymap',
3966
'breezy.tests.test_ignores',
3967
'breezy.tests.test_index',
3968
'breezy.tests.test_import_tariff',
3969
'breezy.tests.test_info',
3970
'breezy.tests.test_inv',
3971
'breezy.tests.test_inventory_delta',
3972
'breezy.tests.test_knit',
3973
'breezy.tests.test_lazy_import',
3974
'breezy.tests.test_lazy_regex',
3975
'breezy.tests.test_library_state',
3976
'breezy.tests.test_lock',
3977
'breezy.tests.test_lockable_files',
3978
'breezy.tests.test_lockdir',
3979
'breezy.tests.test_log',
3980
'breezy.tests.test_lru_cache',
3981
'breezy.tests.test_lsprof',
3982
'breezy.tests.test_mail_client',
3983
'breezy.tests.test_matchers',
3984
'breezy.tests.test_memorytree',
3985
'breezy.tests.test_merge',
3986
'breezy.tests.test_merge3',
3987
'breezy.tests.test_merge_core',
3988
'breezy.tests.test_merge_directive',
3989
'breezy.tests.test_mergetools',
3990
'breezy.tests.test_missing',
3991
'breezy.tests.test_msgeditor',
3992
'breezy.tests.test_multiparent',
3993
'breezy.tests.test_mutabletree',
3994
'breezy.tests.test_nonascii',
3995
'breezy.tests.test_options',
3996
'breezy.tests.test_osutils',
3997
'breezy.tests.test_osutils_encodings',
3998
'breezy.tests.test_pack',
3999
'breezy.tests.test_patch',
4000
'breezy.tests.test_patches',
4001
'breezy.tests.test_permissions',
4002
'breezy.tests.test_plugins',
4003
'breezy.tests.test_progress',
4004
'breezy.tests.test_pyutils',
4005
'breezy.tests.test_read_bundle',
4006
'breezy.tests.test_reconcile',
4007
'breezy.tests.test_reconfigure',
4008
'breezy.tests.test_registry',
4009
'breezy.tests.test_remote',
4010
'breezy.tests.test_rename_map',
4011
'breezy.tests.test_repository',
4012
'breezy.tests.test_revert',
4013
'breezy.tests.test_revision',
4014
'breezy.tests.test_revisionspec',
4015
'breezy.tests.test_revisiontree',
4016
'breezy.tests.test_rio',
4017
'breezy.tests.test_rules',
4018
'breezy.tests.test_url_policy_open',
4019
'breezy.tests.test_sampler',
4020
'breezy.tests.test_scenarios',
4021
'breezy.tests.test_script',
4022
'breezy.tests.test_selftest',
4023
'breezy.tests.test_serializer',
4024
'breezy.tests.test_setup',
4025
'breezy.tests.test_sftp_transport',
4026
'breezy.tests.test_shelf',
4027
'breezy.tests.test_shelf_ui',
4028
'breezy.tests.test_smart',
4029
'breezy.tests.test_smart_add',
4030
'breezy.tests.test_smart_request',
4031
'breezy.tests.test_smart_signals',
4032
'breezy.tests.test_smart_transport',
4033
'breezy.tests.test_smtp_connection',
4034
'breezy.tests.test_source',
4035
'breezy.tests.test_ssh_transport',
4036
'breezy.tests.test_status',
4037
'breezy.tests.test_store',
4038
'breezy.tests.test_strace',
4039
'breezy.tests.test_subsume',
4040
'breezy.tests.test_switch',
4041
'breezy.tests.test_symbol_versioning',
4042
'breezy.tests.test_tag',
4043
'breezy.tests.test_test_server',
4044
'breezy.tests.test_testament',
4045
'breezy.tests.test_textfile',
4046
'breezy.tests.test_textmerge',
4047
'breezy.tests.test_cethread',
4048
'breezy.tests.test_timestamp',
4049
'breezy.tests.test_trace',
4050
'breezy.tests.test_transactions',
4051
'breezy.tests.test_transform',
4052
'breezy.tests.test_transport',
4053
'breezy.tests.test_transport_log',
4054
'breezy.tests.test_tree',
4055
'breezy.tests.test_treebuilder',
4056
'breezy.tests.test_treeshape',
4057
'breezy.tests.test_tsort',
4058
'breezy.tests.test_tuned_gzip',
4059
'breezy.tests.test_ui',
4060
'breezy.tests.test_uncommit',
4061
'breezy.tests.test_upgrade',
4062
'breezy.tests.test_upgrade_stacked',
4063
'breezy.tests.test_upstream_import',
4064
'breezy.tests.test_urlutils',
4065
'breezy.tests.test_utextwrap',
4066
'breezy.tests.test_version',
4067
'breezy.tests.test_version_info',
4068
'breezy.tests.test_versionedfile',
4069
'breezy.tests.test_vf_search',
4070
'breezy.tests.test_weave',
4071
'breezy.tests.test_whitebox',
4072
'breezy.tests.test_win32utils',
4073
'breezy.tests.test_workingtree',
4074
'breezy.tests.test_workingtree_4',
4075
'breezy.tests.test_wsgi',
4076
'breezy.tests.test_xml',