21
from breezy import symbol_versioning
22
from breezy.sixish import PY3
23
from breezy.symbol_versioning import (
21
from bzrlib import symbol_versioning
22
from bzrlib.symbol_versioning import (
24
23
deprecated_function,
28
from breezy.tests import TestCase
28
from bzrlib.tests import TestCase
31
31
@deprecated_function(deprecated_in((0, 7, 0)))
37
37
a_deprecated_list = symbol_versioning.deprecated_list(deprecated_in((0, 9, 0)),
38
'a_deprecated_list', ['one'], extra="Don't use me")
38
'a_deprecated_list', ['one'], extra="Don't use me")
41
41
a_deprecated_dict = symbol_versioning.DeprecatedDict(
55
55
super(TestDeprecationWarnings, self).setUp()
56
56
self._warnings = []
58
58
@deprecated_method(deprecated_in((0, 7, 0)))
59
59
def deprecated_method(self):
60
60
"""Deprecated method docstring.
72
72
def test_deprecated_static(self):
75
"breezy.tests.test_symbol_versioning.TestDeprecationWarnings."
77
"was deprecated in version 0.7.0.", DeprecationWarning, 2)
79
# XXX: The results are not quite right because the class name is not
80
# shown on Python 2- however it is enough to give people a good indication of
81
# where the problem is.
83
"breezy.tests.test_symbol_versioning."
85
"was deprecated in version 0.7.0.", DeprecationWarning, 2)
73
# XXX: The results are not quite right because the class name is not
74
# shown - however it is enough to give people a good indication of
75
# where the problem is.
77
"bzrlib.tests.test_symbol_versioning."
79
"was deprecated in version 0.7.0.", DeprecationWarning, 2)
86
80
expected_docstring = (
87
81
'Deprecated static.\n'
91
85
self.check_deprecated_callable(
92
86
expected_warning, expected_docstring,
93
87
"deprecated_static",
94
"breezy.tests.test_symbol_versioning",
88
"bzrlib.tests.test_symbol_versioning",
95
89
self.deprecated_static)
97
91
def test_deprecated_method(self):
98
92
expected_warning = (
99
"breezy.tests.test_symbol_versioning."
93
"bzrlib.tests.test_symbol_versioning."
100
94
"TestDeprecationWarnings.deprecated_method "
101
95
"was deprecated in version 0.7.0.", DeprecationWarning, 2)
102
96
expected_docstring = (
109
103
self.check_deprecated_callable(expected_warning, expected_docstring,
110
104
"deprecated_method",
111
"breezy.tests.test_symbol_versioning",
105
"bzrlib.tests.test_symbol_versioning",
112
106
self.deprecated_method)
114
108
def test_deprecated_function(self):
115
109
expected_warning = (
116
"breezy.tests.test_symbol_versioning.sample_deprecated_function "
110
"bzrlib.tests.test_symbol_versioning.sample_deprecated_function "
117
111
"was deprecated in version 0.7.0.", DeprecationWarning, 2)
118
112
expected_docstring = ('Deprecated function docstring.\n'
122
116
self.check_deprecated_callable(expected_warning, expected_docstring,
123
117
"sample_deprecated_function",
124
"breezy.tests.test_symbol_versioning",
118
"bzrlib.tests.test_symbol_versioning",
125
119
sample_deprecated_function)
127
121
def test_deprecated_list(self):
139
133
self.assertEqual(['one', 'foo'], a_deprecated_list)
141
135
a_deprecated_list.extend(['bar', 'baz'])
142
self.assertEqual([expected_warning] * 2, self._warnings)
136
self.assertEqual([expected_warning]*2, self._warnings)
143
137
self.assertEqual(['one', 'foo', 'bar', 'baz'], a_deprecated_list)
145
139
a_deprecated_list.insert(1, 'xxx')
146
self.assertEqual([expected_warning] * 3, self._warnings)
148
['one', 'xxx', 'foo', 'bar', 'baz'], a_deprecated_list)
140
self.assertEqual([expected_warning]*3, self._warnings)
141
self.assertEqual(['one', 'xxx', 'foo', 'bar', 'baz'], a_deprecated_list)
150
143
a_deprecated_list.remove('foo')
151
self.assertEqual([expected_warning] * 4, self._warnings)
144
self.assertEqual([expected_warning]*4, self._warnings)
152
145
self.assertEqual(['one', 'xxx', 'bar', 'baz'], a_deprecated_list)
154
147
val = a_deprecated_list.pop()
155
self.assertEqual([expected_warning] * 5, self._warnings)
148
self.assertEqual([expected_warning]*5, self._warnings)
156
149
self.assertEqual('baz', val)
157
150
self.assertEqual(['one', 'xxx', 'bar'], a_deprecated_list)
159
152
val = a_deprecated_list.pop(1)
160
self.assertEqual([expected_warning] * 6, self._warnings)
153
self.assertEqual([expected_warning]*6, self._warnings)
161
154
self.assertEqual('xxx', val)
162
155
self.assertEqual(['one', 'bar'], a_deprecated_list)
183
176
symbol_versioning.set_warning_method(old_warning_method)
185
179
def check_deprecated_callable(self, expected_warning, expected_docstring,
186
180
expected_name, expected_module,
187
181
deprecated_callable):
196
190
deprecated_callable()
197
191
self.assertEqual([expected_warning, expected_warning],
199
self.assertEqualDiff(expected_docstring,
200
deprecated_callable.__doc__)
193
self.assertEqualDiff(expected_docstring, deprecated_callable.__doc__)
201
194
self.assertEqualDiff(expected_name, deprecated_callable.__name__)
202
self.assertEqualDiff(
203
expected_module, deprecated_callable.__module__)
195
self.assertEqualDiff(expected_module, deprecated_callable.__module__)
204
196
self.assertTrue(deprecated_callable.is_deprecated)
206
198
symbol_versioning.set_warning_method(old_warning_method)
211
203
self.assertEqual(True, symbol_versioning.deprecated_passed(False))
212
204
self.assertEqual(False,
213
205
symbol_versioning.deprecated_passed(
214
symbol_versioning.DEPRECATED_PARAMETER))
206
symbol_versioning.DEPRECATED_PARAMETER))
216
208
def test_deprecation_string(self):
217
209
"""We can get a deprecation string for a method or function."""
218
err_message = symbol_versioning.deprecation_string(
210
self.assertEqual('bzrlib.tests.test_symbol_versioning.'
211
'TestDeprecationWarnings.test_deprecation_string was deprecated in '
213
symbol_versioning.deprecation_string(
219
214
self.test_deprecation_string,
220
deprecated_in((0, 11, 0)))
221
self.assertEqual(err_message,
222
'breezy.tests.test_symbol_versioning.TestDeprecationWarnings.'
223
'test_deprecation_string was deprecated in '
226
self.assertEqual('breezy.symbol_versioning.deprecated_function was '
227
'deprecated in version 0.11.0.',
228
symbol_versioning.deprecation_string(
229
symbol_versioning.deprecated_function,
230
deprecated_in((0, 11, 0))))
215
deprecated_in((0, 11, 0))))
216
self.assertEqual('bzrlib.symbol_versioning.deprecated_function was '
217
'deprecated in version 0.11.0.',
218
symbol_versioning.deprecation_string(
219
symbol_versioning.deprecated_function,
220
deprecated_in((0, 11, 0))))
233
223
class TestSuppressAndActivate(TestCase):
236
super(TestSuppressAndActivate, self).setUp()
237
227
existing_filters = list(warnings.filters)
240
229
warnings.filters[:] = existing_filters
241
230
self.addCleanup(restore)
252
241
symbol_versioning.suppress_deprecation_warnings()
253
242
self.assertFirstWarning('ignore', DeprecationWarning)
255
def test_set_restore_filters(self):
256
original_filters = warnings.filters[:]
257
symbol_versioning.suppress_deprecation_warnings()()
258
self.assertEqual(original_filters, warnings.filters)
260
244
def test_suppress_deprecation_with_warning_filter(self):
261
245
"""don't suppress if we already have a filter"""
262
246
warnings.filterwarnings('error', category=Warning)