1507
1732
:returns: The actual attr value.
1509
value = getattr(obj, attr_name)
1510
1734
# The actual value is captured by the call below
1511
self.addCleanup(setattr, obj, attr_name, value)
1735
value = getattr(obj, attr_name, _unitialized_attr)
1736
if value is _unitialized_attr:
1737
# When the test completes, the attribute should not exist, but if
1738
# we aren't setting a value, we don't need to do anything.
1739
if new is not _unitialized_attr:
1740
self.addCleanup(delattr, obj, attr_name)
1742
self.addCleanup(setattr, obj, attr_name, value)
1512
1743
if new is not _unitialized_attr:
1513
1744
setattr(obj, attr_name, new)
1747
def overrideEnv(self, name, new):
1748
"""Set an environment variable, and reset it after the test.
1750
:param name: The environment variable name.
1752
:param new: The value to set the variable to. If None, the
1753
variable is deleted from the environment.
1755
:returns: The actual variable value.
1757
value = osutils.set_or_unset_env(name, new)
1758
self.addCleanup(osutils.set_or_unset_env, name, value)
1761
def recordCalls(self, obj, attr_name):
1762
"""Monkeypatch in a wrapper that will record calls.
1764
The monkeypatch is automatically removed when the test concludes.
1766
:param obj: The namespace holding the reference to be replaced;
1767
typically a module, class, or object.
1768
:param attr_name: A string for the name of the attribute to
1770
:returns: A list that will be extended with one item every time the
1771
function is called, with a tuple of (args, kwargs).
1775
def decorator(*args, **kwargs):
1776
calls.append((args, kwargs))
1777
return orig(*args, **kwargs)
1778
orig = self.overrideAttr(obj, attr_name, decorator)
1516
1781
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)
1782
for name, value in isolated_environ.items():
1783
self.overrideEnv(name, value)
1578
1785
def _restoreHooks(self):
1579
1786
for klass, (name, hooks) in self._preserved_hooks.items():
1580
1787
setattr(klass, name, hooks)
1788
self._preserved_hooks.clear()
1789
breezy.hooks._lazy_hooks = self._preserved_lazy_hooks
1790
self._preserved_lazy_hooks.clear()
1582
1792
def knownFailure(self, reason):
1583
"""This test has failed for some known reason."""
1584
raise KnownFailure(reason)
1793
"""Declare that this test fails for a known reason
1795
Tests that are known to fail should generally be using expectedFailure
1796
with an appropriate reverse assertion if a change could cause the test
1797
to start passing. Conversely if the test has no immediate prospect of
1798
succeeding then using skip is more suitable.
1800
When this method is called while an exception is being handled, that
1801
traceback will be used, otherwise a new exception will be thrown to
1802
provide one but won't be reported.
1804
self._add_reason(reason)
1806
exc_info = sys.exc_info()
1807
if exc_info != (None, None, None):
1808
self._report_traceback(exc_info)
1811
raise self.failureException(reason)
1812
except self.failureException:
1813
exc_info = sys.exc_info()
1814
# GZ 02-08-2011: Maybe cleanup this err.exc_info attribute too?
1815
raise testtools.testcase._ExpectedFailure(exc_info)
1819
def _suppress_log(self):
1820
"""Remove the log info from details."""
1821
self.discardDetail('log')
1586
1823
def _do_skip(self, result, reason):
1824
self._suppress_log()
1587
1825
addSkip = getattr(result, 'addSkip', None)
1588
1826
if not callable(addSkip):
1589
1827
result.addSuccess(result)
3616
3853
# 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')
3854
# appear prefixed ('breezy.' is "replaced" by 'breezy.').
3855
test_prefix_alias_registry.register('breezy', 'breezy')
3620
3857
# 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')
3858
test_prefix_alias_registry.register('bd', 'breezy.doc')
3859
test_prefix_alias_registry.register('bu', 'breezy.utils')
3860
test_prefix_alias_registry.register('bt', 'breezy.tests')
3861
test_prefix_alias_registry.register('bb', 'breezy.tests.blackbox')
3862
test_prefix_alias_registry.register('bp', 'breezy.plugins')
3628
3865
def _test_suite_testmod_names():
3629
3866
"""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',
3869
'breezy.tests.blackbox',
3870
'breezy.tests.commands',
3871
'breezy.tests.per_branch',
3872
'breezy.tests.per_bzrdir',
3873
'breezy.tests.per_controldir',
3874
'breezy.tests.per_controldir_colo',
3875
'breezy.tests.per_foreign_vcs',
3876
'breezy.tests.per_interrepository',
3877
'breezy.tests.per_intertree',
3878
'breezy.tests.per_inventory',
3879
'breezy.tests.per_interbranch',
3880
'breezy.tests.per_lock',
3881
'breezy.tests.per_merger',
3882
'breezy.tests.per_transport',
3883
'breezy.tests.per_tree',
3884
'breezy.tests.per_pack_repository',
3885
'breezy.tests.per_repository',
3886
'breezy.tests.per_repository_chk',
3887
'breezy.tests.per_repository_reference',
3888
'breezy.tests.per_repository_vf',
3889
'breezy.tests.per_uifactory',
3890
'breezy.tests.per_versionedfile',
3891
'breezy.tests.per_workingtree',
3892
'breezy.tests.test__annotator',
3893
'breezy.tests.test__bencode',
3894
'breezy.tests.test__btree_serializer',
3895
'breezy.tests.test__chk_map',
3896
'breezy.tests.test__dirstate_helpers',
3897
'breezy.tests.test__groupcompress',
3898
'breezy.tests.test__known_graph',
3899
'breezy.tests.test__rio',
3900
'breezy.tests.test__simple_set',
3901
'breezy.tests.test__static_tuple',
3902
'breezy.tests.test__walkdirs_win32',
3903
'breezy.tests.test_ancestry',
3904
'breezy.tests.test_annotate',
3905
'breezy.tests.test_api',
3906
'breezy.tests.test_atomicfile',
3907
'breezy.tests.test_bad_files',
3908
'breezy.tests.test_bisect',
3909
'breezy.tests.test_bisect_multi',
3910
'breezy.tests.test_branch',
3911
'breezy.tests.test_branchbuilder',
3912
'breezy.tests.test_btree_index',
3913
'breezy.tests.test_bugtracker',
3914
'breezy.tests.test_bundle',
3915
'breezy.tests.test_bzrdir',
3916
'breezy.tests.test__chunks_to_lines',
3917
'breezy.tests.test_cache_utf8',
3918
'breezy.tests.test_chk_map',
3919
'breezy.tests.test_chk_serializer',
3920
'breezy.tests.test_chunk_writer',
3921
'breezy.tests.test_clean_tree',
3922
'breezy.tests.test_cleanup',
3923
'breezy.tests.test_cmdline',
3924
'breezy.tests.test_commands',
3925
'breezy.tests.test_commit',
3926
'breezy.tests.test_commit_merge',
3927
'breezy.tests.test_config',
3928
'breezy.tests.test_conflicts',
3929
'breezy.tests.test_controldir',
3930
'breezy.tests.test_counted_lock',
3931
'breezy.tests.test_crash',
3932
'breezy.tests.test_decorators',
3933
'breezy.tests.test_delta',
3934
'breezy.tests.test_debug',
3935
'breezy.tests.test_diff',
3936
'breezy.tests.test_directory_service',
3937
'breezy.tests.test_dirstate',
3938
'breezy.tests.test_email_message',
3939
'breezy.tests.test_eol_filters',
3940
'breezy.tests.test_errors',
3941
'breezy.tests.test_estimate_compressed_size',
3942
'breezy.tests.test_export',
3943
'breezy.tests.test_export_pot',
3944
'breezy.tests.test_extract',
3945
'breezy.tests.test_features',
3946
'breezy.tests.test_fetch',
3947
'breezy.tests.test_fetch_ghosts',
3948
'breezy.tests.test_fixtures',
3949
'breezy.tests.test_fifo_cache',
3950
'breezy.tests.test_filters',
3951
'breezy.tests.test_filter_tree',
3952
'breezy.tests.test_ftp_transport',
3953
'breezy.tests.test_foreign',
3954
'breezy.tests.test_generate_docs',
3955
'breezy.tests.test_generate_ids',
3956
'breezy.tests.test_globbing',
3957
'breezy.tests.test_gpg',
3958
'breezy.tests.test_graph',
3959
'breezy.tests.test_groupcompress',
3960
'breezy.tests.test_hashcache',
3961
'breezy.tests.test_help',
3962
'breezy.tests.test_hooks',
3963
'breezy.tests.test_http',
3964
'breezy.tests.test_http_response',
3965
'breezy.tests.test_https_ca_bundle',
3966
'breezy.tests.test_https_urllib',
3967
'breezy.tests.test_i18n',
3968
'breezy.tests.test_identitymap',
3969
'breezy.tests.test_ignores',
3970
'breezy.tests.test_index',
3971
'breezy.tests.test_import_tariff',
3972
'breezy.tests.test_info',
3973
'breezy.tests.test_inv',
3974
'breezy.tests.test_inventory_delta',
3975
'breezy.tests.test_knit',
3976
'breezy.tests.test_lazy_import',
3977
'breezy.tests.test_lazy_regex',
3978
'breezy.tests.test_library_state',
3979
'breezy.tests.test_lock',
3980
'breezy.tests.test_lockable_files',
3981
'breezy.tests.test_lockdir',
3982
'breezy.tests.test_log',
3983
'breezy.tests.test_lru_cache',
3984
'breezy.tests.test_lsprof',
3985
'breezy.tests.test_mail_client',
3986
'breezy.tests.test_matchers',
3987
'breezy.tests.test_memorytree',
3988
'breezy.tests.test_merge',
3989
'breezy.tests.test_merge3',
3990
'breezy.tests.test_merge_core',
3991
'breezy.tests.test_merge_directive',
3992
'breezy.tests.test_mergetools',
3993
'breezy.tests.test_missing',
3994
'breezy.tests.test_msgeditor',
3995
'breezy.tests.test_multiparent',
3996
'breezy.tests.test_mutabletree',
3997
'breezy.tests.test_nonascii',
3998
'breezy.tests.test_options',
3999
'breezy.tests.test_osutils',
4000
'breezy.tests.test_osutils_encodings',
4001
'breezy.tests.test_pack',
4002
'breezy.tests.test_patch',
4003
'breezy.tests.test_patches',
4004
'breezy.tests.test_permissions',
4005
'breezy.tests.test_plugins',
4006
'breezy.tests.test_progress',
4007
'breezy.tests.test_pyutils',
4008
'breezy.tests.test_read_bundle',
4009
'breezy.tests.test_reconcile',
4010
'breezy.tests.test_reconfigure',
4011
'breezy.tests.test_registry',
4012
'breezy.tests.test_remote',
4013
'breezy.tests.test_rename_map',
4014
'breezy.tests.test_repository',
4015
'breezy.tests.test_revert',
4016
'breezy.tests.test_revision',
4017
'breezy.tests.test_revisionspec',
4018
'breezy.tests.test_revisiontree',
4019
'breezy.tests.test_rio',
4020
'breezy.tests.test_rules',
4021
'breezy.tests.test_url_policy_open',
4022
'breezy.tests.test_sampler',
4023
'breezy.tests.test_scenarios',
4024
'breezy.tests.test_script',
4025
'breezy.tests.test_selftest',
4026
'breezy.tests.test_serializer',
4027
'breezy.tests.test_setup',
4028
'breezy.tests.test_sftp_transport',
4029
'breezy.tests.test_shelf',
4030
'breezy.tests.test_shelf_ui',
4031
'breezy.tests.test_smart',
4032
'breezy.tests.test_smart_add',
4033
'breezy.tests.test_smart_request',
4034
'breezy.tests.test_smart_signals',
4035
'breezy.tests.test_smart_transport',
4036
'breezy.tests.test_smtp_connection',
4037
'breezy.tests.test_source',
4038
'breezy.tests.test_ssh_transport',
4039
'breezy.tests.test_status',
4040
'breezy.tests.test_store',
4041
'breezy.tests.test_strace',
4042
'breezy.tests.test_subsume',
4043
'breezy.tests.test_switch',
4044
'breezy.tests.test_symbol_versioning',
4045
'breezy.tests.test_tag',
4046
'breezy.tests.test_test_server',
4047
'breezy.tests.test_testament',
4048
'breezy.tests.test_textfile',
4049
'breezy.tests.test_textmerge',
4050
'breezy.tests.test_cethread',
4051
'breezy.tests.test_timestamp',
4052
'breezy.tests.test_trace',
4053
'breezy.tests.test_transactions',
4054
'breezy.tests.test_transform',
4055
'breezy.tests.test_transport',
4056
'breezy.tests.test_transport_log',
4057
'breezy.tests.test_tree',
4058
'breezy.tests.test_treebuilder',
4059
'breezy.tests.test_treeshape',
4060
'breezy.tests.test_tsort',
4061
'breezy.tests.test_tuned_gzip',
4062
'breezy.tests.test_ui',
4063
'breezy.tests.test_uncommit',
4064
'breezy.tests.test_upgrade',
4065
'breezy.tests.test_upgrade_stacked',
4066
'breezy.tests.test_upstream_import',
4067
'breezy.tests.test_urlutils',
4068
'breezy.tests.test_utextwrap',
4069
'breezy.tests.test_version',
4070
'breezy.tests.test_version_info',
4071
'breezy.tests.test_versionedfile',
4072
'breezy.tests.test_vf_search',
4073
'breezy.tests.test_weave',
4074
'breezy.tests.test_whitebox',
4075
'breezy.tests.test_win32utils',
4076
'breezy.tests.test_workingtree',
4077
'breezy.tests.test_workingtree_4',
4078
'breezy.tests.test_wsgi',
4079
'breezy.tests.test_xml',