155
147
'BZREMAIL': None, # may still be present in the environment
156
148
'EMAIL': 'jrandom@example.com', # set EMAIL as brz does not guess
157
149
'BRZ_PROGRESS_BAR': None,
158
# This should trap leaks to ~/.brz.log. This occurs when tests use TestCase
159
# as a base class instead of TestCaseInTempDir. Tests inheriting from
160
# TestCase should not use disk resources, BRZ_LOG is one.
150
# Trap leaks to $XDG_CACHE_HOME/breezy/brz.log. This occurs when tests use
151
# TestCase as a base class instead of TestCaseInTempDir. Tests inheriting
152
# from TestCase should not use disk resources, BRZ_LOG is one.
161
153
'BRZ_LOG': '/you-should-use-TestCaseInTempDir-if-you-need-a-log-file',
162
154
'BRZ_PLUGIN_PATH': '-site',
163
155
'BRZ_DISABLE_PLUGINS': None,
1332
1324
if message is None:
1333
1325
message = "texts not equal:\n"
1334
if a + ('\n' if isinstance(a, text_type) else b'\n') == b:
1326
if a + ('\n' if isinstance(a, str) else b'\n') == b:
1335
1327
message = 'first string is missing a final newline.\n'
1336
if a == b + ('\n' if isinstance(b, text_type) else b'\n'):
1328
if a == b + ('\n' if isinstance(b, str) else b'\n'):
1337
1329
message = 'second string is missing a final newline.\n'
1338
1330
raise AssertionError(message
1339
+ self._ndiff_strings(a, b))
1331
+ self._ndiff_strings(
1332
a if isinstance(a, str) else a.decode(),
1333
b if isinstance(b, str) else b.decode()))
1341
1335
def assertEqualMode(self, mode, mode_test):
1342
1336
self.assertEqual(mode, mode_test,
2003
1993
:keyword error_regexes: A list of expected error messages. If
2004
1994
specified they must be seen in the error output of the command.
2006
if isinstance(args, string_types):
1996
if isinstance(args, str):
2007
1997
args = shlex.split(args)
2009
1999
if encoding is None:
2010
2000
encoding = osutils.get_user_encoding()
2012
if sys.version_info[0] == 2:
2013
wrapped_stdout = stdout = ui_testing.BytesIOWithEncoding()
2014
wrapped_stderr = stderr = ui_testing.BytesIOWithEncoding()
2015
stdout.encoding = stderr.encoding = encoding
2017
# FIXME: don't call into logging here
2018
handler = trace.EncodedStreamHandler(
2019
stderr, errors="replace")
2023
wrapped_stdout = TextIOWrapper(stdout, encoding)
2024
wrapped_stderr = TextIOWrapper(stderr, encoding)
2025
handler = logging.StreamHandler(wrapped_stderr)
2004
wrapped_stdout = TextIOWrapper(stdout, encoding)
2005
wrapped_stderr = TextIOWrapper(stderr, encoding)
2006
handler = logging.StreamHandler(wrapped_stderr)
2026
2007
handler.setLevel(logging.INFO)
2028
2009
logger = logging.getLogger('')
2086
2066
:keyword error_regexes: A list of expected error messages. If
2087
2067
specified they must be seen in the error output of the command.
2089
if isinstance(args, string_types):
2069
if isinstance(args, str):
2090
2070
args = shlex.split(args)
2092
2072
if encoding is None:
2093
2073
encoding = osutils.get_user_encoding()
2095
if sys.version_info[0] == 2:
2096
stdout = ui_testing.BytesIOWithEncoding()
2097
stderr = ui_testing.BytesIOWithEncoding()
2098
stdout.encoding = stderr.encoding = encoding
2099
# FIXME: don't call into logging here
2100
handler = trace.EncodedStreamHandler(
2101
stderr, errors="replace")
2103
stdout = ui_testing.StringIOWithEncoding()
2104
stderr = ui_testing.StringIOWithEncoding()
2105
stdout.encoding = stderr.encoding = encoding
2106
handler = logging.StreamHandler(stream=stderr)
2075
stdout = ui_testing.StringIOWithEncoding()
2076
stderr = ui_testing.StringIOWithEncoding()
2077
stdout.encoding = stderr.encoding = encoding
2078
handler = logging.StreamHandler(stream=stderr)
2107
2079
handler.setLevel(logging.INFO)
2109
2081
logger = logging.getLogger('')
2685
2651
root = TestCaseWithMemoryTransport.TEST_ROOT
2687
# Make sure we get a readable and accessible home for .brz.log
2653
# Make sure we get a readable and accessible home for brz.log
2688
2654
# and/or config files, and not fallback to weird defaults (see
2689
2655
# http://pad.lv/825027).
2690
2656
self.assertIs(None, os.environ.get('BRZ_HOME', None))
2691
2657
os.environ['BRZ_HOME'] = root
2692
wt = controldir.ControlDir.create_standalone_workingtree(root)
2658
from breezy.bzr.bzrdir import BzrDirMetaFormat1
2659
wt = controldir.ControlDir.create_standalone_workingtree(
2660
root, format=BzrDirMetaFormat1())
2693
2661
del os.environ['BRZ_HOME']
2694
2662
except Exception as e:
2695
2663
self.fail("Fail to initialize the safety net: %r\n" % (e,))
3997
3965
def _test_suite_testmod_names():
3998
3966
"""Return the standard list of test module names to test."""
4000
'breezy.git.tests.test_blackbox',
4001
'breezy.git.tests.test_builder',
4002
'breezy.git.tests.test_branch',
4003
'breezy.git.tests.test_cache',
4004
'breezy.git.tests.test_dir',
4005
'breezy.git.tests.test_fetch',
4006
'breezy.git.tests.test_git_remote_helper',
4007
'breezy.git.tests.test_mapping',
4008
'breezy.git.tests.test_memorytree',
4009
'breezy.git.tests.test_object_store',
4010
'breezy.git.tests.test_pristine_tar',
4011
'breezy.git.tests.test_push',
4012
'breezy.git.tests.test_remote',
4013
'breezy.git.tests.test_repository',
4014
'breezy.git.tests.test_refs',
4015
'breezy.git.tests.test_revspec',
4016
'breezy.git.tests.test_roundtrip',
4017
'breezy.git.tests.test_server',
4018
'breezy.git.tests.test_transportgit',
4019
'breezy.git.tests.test_unpeel_map',
4020
'breezy.git.tests.test_urls',
4021
'breezy.git.tests.test_workingtree',
4022
3970
'breezy.tests.blackbox',
4023
3971
'breezy.tests.commands',
4024
3972
'breezy.tests.per_branch',
4025
'breezy.tests.per_bzrdir',
4026
3973
'breezy.tests.per_controldir',
4027
3974
'breezy.tests.per_controldir_colo',
4028
3975
'breezy.tests.per_foreign_vcs',
4029
3976
'breezy.tests.per_interrepository',
4030
3977
'breezy.tests.per_intertree',
4031
'breezy.tests.per_inventory',
4032
3978
'breezy.tests.per_interbranch',
4033
3979
'breezy.tests.per_lock',
4034
3980
'breezy.tests.per_merger',
4035
3981
'breezy.tests.per_transport',
4036
3982
'breezy.tests.per_tree',
4037
'breezy.tests.per_pack_repository',
4038
3983
'breezy.tests.per_repository',
4039
'breezy.tests.per_repository_chk',
4040
3984
'breezy.tests.per_repository_reference',
4041
'breezy.tests.per_repository_vf',
4042
3985
'breezy.tests.per_uifactory',
4043
'breezy.tests.per_versionedfile',
4044
3986
'breezy.tests.per_workingtree',
4045
3987
'breezy.tests.test__annotator',
4046
3988
'breezy.tests.test__bencode',
4047
'breezy.tests.test__btree_serializer',
4048
'breezy.tests.test__chk_map',
4049
'breezy.tests.test__dirstate_helpers',
4050
'breezy.tests.test__groupcompress',
4051
3989
'breezy.tests.test__known_graph',
4052
'breezy.tests.test__rio',
4053
3990
'breezy.tests.test__simple_set',
4054
3991
'breezy.tests.test__static_tuple',
4055
3992
'breezy.tests.test__walkdirs_win32',
4061
3998
'breezy.tests.test_bisect_multi',
4062
3999
'breezy.tests.test_branch',
4063
4000
'breezy.tests.test_branchbuilder',
4064
'breezy.tests.test_btree_index',
4065
4001
'breezy.tests.test_bugtracker',
4066
'breezy.tests.test_bundle',
4067
'breezy.tests.test_bzrdir',
4068
4002
'breezy.tests.test__chunks_to_lines',
4069
4003
'breezy.tests.test_cache_utf8',
4070
'breezy.tests.test_chk_map',
4071
'breezy.tests.test_chk_serializer',
4072
4004
'breezy.tests.test_chunk_writer',
4073
4005
'breezy.tests.test_clean_tree',
4074
'breezy.tests.test_cleanup',
4075
4006
'breezy.tests.test_cmdline',
4076
4007
'breezy.tests.test_commands',
4077
4008
'breezy.tests.test_commit',
4078
4009
'breezy.tests.test_commit_merge',
4079
4010
'breezy.tests.test_config',
4011
'breezy.tests.test_bedding',
4080
4012
'breezy.tests.test_conflicts',
4081
4013
'breezy.tests.test_controldir',
4082
4014
'breezy.tests.test_counted_lock',
4103
4035
'breezy.tests.test_filter_tree',
4104
4036
'breezy.tests.test_foreign',
4105
4037
'breezy.tests.test_generate_docs',
4106
'breezy.tests.test_generate_ids',
4107
4038
'breezy.tests.test_globbing',
4108
4039
'breezy.tests.test_gpg',
4109
4040
'breezy.tests.test_graph',
4110
'breezy.tests.test_groupcompress',
4041
'breezy.tests.test_grep',
4111
4042
'breezy.tests.test_hashcache',
4112
4043
'breezy.tests.test_help',
4113
4044
'breezy.tests.test_hooks',
4118
4049
'breezy.tests.test_i18n',
4119
4050
'breezy.tests.test_identitymap',
4120
4051
'breezy.tests.test_ignores',
4121
'breezy.tests.test_index',
4122
4052
'breezy.tests.test_import_tariff',
4123
4053
'breezy.tests.test_info',
4124
'breezy.tests.test_inv',
4125
'breezy.tests.test_inventory_delta',
4126
'breezy.tests.test_knit',
4127
4054
'breezy.tests.test_lazy_import',
4128
4055
'breezy.tests.test_lazy_regex',
4129
4056
'breezy.tests.test_library_state',
4057
'breezy.tests.test_location',
4130
4058
'breezy.tests.test_lock',
4131
4059
'breezy.tests.test_lockable_files',
4132
4060
'breezy.tests.test_lockdir',
4135
4063
'breezy.tests.test_lsprof',
4136
4064
'breezy.tests.test_mail_client',
4137
4065
'breezy.tests.test_matchers',
4066
'breezy.tests.test_memorybranch',
4138
4067
'breezy.tests.test_memorytree',
4139
4068
'breezy.tests.test_merge',
4140
4069
'breezy.tests.test_merge3',
4070
'breezy.tests.test_mergeable',
4141
4071
'breezy.tests.test_merge_core',
4142
4072
'breezy.tests.test_merge_directive',
4143
4073
'breezy.tests.test_mergetools',
4144
4074
'breezy.tests.test_missing',
4145
4075
'breezy.tests.test_msgeditor',
4146
4076
'breezy.tests.test_multiparent',
4077
'breezy.tests.test_multiwalker',
4147
4078
'breezy.tests.test_mutabletree',
4148
4079
'breezy.tests.test_nonascii',
4149
4080
'breezy.tests.test_options',
4150
4081
'breezy.tests.test_osutils',
4151
4082
'breezy.tests.test_osutils_encodings',
4152
'breezy.tests.test_pack',
4153
4083
'breezy.tests.test_patch',
4154
4084
'breezy.tests.test_patches',
4155
4085
'breezy.tests.test_permissions',
4156
4086
'breezy.tests.test_plugins',
4157
4087
'breezy.tests.test_progress',
4088
'breezy.tests.test_propose',
4158
4089
'breezy.tests.test_pyutils',
4159
'breezy.tests.test_read_bundle',
4160
4090
'breezy.tests.test_reconcile',
4161
4091
'breezy.tests.test_reconfigure',
4162
4092
'breezy.tests.test_registry',
4163
'breezy.tests.test_remote',
4164
4093
'breezy.tests.test_rename_map',
4165
'breezy.tests.test_repository',
4166
4094
'breezy.tests.test_revert',
4167
4095
'breezy.tests.test_revision',
4168
4096
'breezy.tests.test_revisionspec',
4169
4097
'breezy.tests.test_revisiontree',
4170
4098
'breezy.tests.test_rio',
4099
'breezy.tests.test__rio',
4171
4100
'breezy.tests.test_rules',
4172
4101
'breezy.tests.test_url_policy_open',
4173
4102
'breezy.tests.test_sampler',
4174
4103
'breezy.tests.test_scenarios',
4175
4104
'breezy.tests.test_script',
4176
4105
'breezy.tests.test_selftest',
4177
'breezy.tests.test_serializer',
4178
4106
'breezy.tests.test_setup',
4179
4107
'breezy.tests.test_sftp_transport',
4180
4108
'breezy.tests.test_shelf',
4181
4109
'breezy.tests.test_shelf_ui',
4182
'breezy.tests.test_smart',
4183
4110
'breezy.tests.test_smart_add',
4184
'breezy.tests.test_smart_request',
4185
'breezy.tests.test_smart_signals',
4186
'breezy.tests.test_smart_transport',
4187
4111
'breezy.tests.test_smtp_connection',
4188
4112
'breezy.tests.test_source',
4189
4113
'breezy.tests.test_ssh_transport',
4218
4141
'breezy.tests.test_utextwrap',
4219
4142
'breezy.tests.test_version',
4220
4143
'breezy.tests.test_version_info',
4221
'breezy.tests.test_versionedfile',
4222
'breezy.tests.test_vf_search',
4223
4144
'breezy.tests.test_views',
4224
'breezy.tests.test_weave',
4225
4145
'breezy.tests.test_whitebox',
4226
4146
'breezy.tests.test_win32utils',
4147
'breezy.tests.test_workspace',
4227
4148
'breezy.tests.test_workingtree',
4228
'breezy.tests.test_workingtree_4',
4229
4149
'breezy.tests.test_wsgi',
4230
'breezy.tests.test_xml',
4301
4220
# modules building their suite with loadTestsFromModuleNames
4302
4221
suite.addTest(loader.loadTestsFromModuleNames(_test_suite_testmod_names()))
4305
suite.addTest(loader.loadTestsFromModuleNames(['breezy.doc']))
4223
suite.addTest(loader.loadTestsFromModuleNames(['breezy.doc']))
4307
# It's pretty much impossible to write readable doctests that work on
4308
# both Python 2 and Python 3 because of their overreliance on
4309
# consistent repr() return values.
4310
# For now, just run doctests on Python 2 so we now they haven't broken.
4311
for mod in _test_suite_modules_to_doctest():
4312
if not interesting_module(mod):
4313
# No tests to keep here, move along
4316
# note that this really does mean "report only" -- doctest
4317
# still runs the rest of the examples
4318
doc_suite = IsolatedDocTestSuite(
4319
mod, optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)
4320
except ValueError as e:
4321
print('**failed to get doctest for: %s\n%s' % (mod, e))
4323
if len(doc_suite._tests) == 0:
4324
raise errors.BzrError("no doctests found in %s" % (mod,))
4325
suite.addTest(doc_suite)
4225
for mod in _test_suite_modules_to_doctest():
4226
if not interesting_module(mod):
4227
# No tests to keep here, move along
4230
# note that this really does mean "report only" -- doctest
4231
# still runs the rest of the examples
4232
doc_suite = IsolatedDocTestSuite(
4233
mod, optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)
4234
except ValueError as e:
4235
print('**failed to get doctest for: %s\n%s' % (mod, e))
4237
if len(doc_suite._tests) == 0:
4238
raise errors.BzrError("no doctests found in %s" % (mod,))
4239
suite.addTest(doc_suite)
4327
4241
default_encoding = sys.getdefaultencoding()
4328
4242
for name, plugin in _mod_plugin.plugins().items():