21
from breezy import symbol_versioning
22
from breezy.symbol_versioning import (
21
from brzlib import symbol_versioning
22
from brzlib.symbol_versioning import (
23
23
deprecated_function,
27
from breezy.tests import TestCase
27
from brzlib.tests import TestCase
30
30
@deprecated_function(deprecated_in((0, 7, 0)))
36
36
a_deprecated_list = symbol_versioning.deprecated_list(deprecated_in((0, 9, 0)),
37
'a_deprecated_list', ['one'], extra="Don't use me")
37
'a_deprecated_list', ['one'], extra="Don't use me")
40
40
a_deprecated_dict = symbol_versioning.DeprecatedDict(
54
54
super(TestDeprecationWarnings, self).setUp()
55
55
self._warnings = []
57
57
@deprecated_method(deprecated_in((0, 7, 0)))
58
58
def deprecated_method(self):
59
59
"""Deprecated method docstring.
71
71
def test_deprecated_static(self):
72
# XXX: The results are not quite right because the class name is not
73
# shown - however it is enough to give people a good indication of
74
# where the problem is.
72
75
expected_warning = (
73
"breezy.tests.test_symbol_versioning.TestDeprecationWarnings."
76
"brzlib.tests.test_symbol_versioning."
74
77
"deprecated_static "
75
78
"was deprecated in version 0.7.0.", DeprecationWarning, 2)
76
79
expected_docstring = (
81
84
self.check_deprecated_callable(
82
85
expected_warning, expected_docstring,
83
86
"deprecated_static",
84
"breezy.tests.test_symbol_versioning",
87
"brzlib.tests.test_symbol_versioning",
85
88
self.deprecated_static)
87
90
def test_deprecated_method(self):
88
91
expected_warning = (
89
"breezy.tests.test_symbol_versioning."
92
"brzlib.tests.test_symbol_versioning."
90
93
"TestDeprecationWarnings.deprecated_method "
91
94
"was deprecated in version 0.7.0.", DeprecationWarning, 2)
92
95
expected_docstring = (
99
102
self.check_deprecated_callable(expected_warning, expected_docstring,
100
103
"deprecated_method",
101
"breezy.tests.test_symbol_versioning",
104
"brzlib.tests.test_symbol_versioning",
102
105
self.deprecated_method)
104
107
def test_deprecated_function(self):
105
108
expected_warning = (
106
"breezy.tests.test_symbol_versioning.sample_deprecated_function "
109
"brzlib.tests.test_symbol_versioning.sample_deprecated_function "
107
110
"was deprecated in version 0.7.0.", DeprecationWarning, 2)
108
111
expected_docstring = ('Deprecated function docstring.\n'
112
115
self.check_deprecated_callable(expected_warning, expected_docstring,
113
116
"sample_deprecated_function",
114
"breezy.tests.test_symbol_versioning",
117
"brzlib.tests.test_symbol_versioning",
115
118
sample_deprecated_function)
117
120
def test_deprecated_list(self):
129
132
self.assertEqual(['one', 'foo'], a_deprecated_list)
131
134
a_deprecated_list.extend(['bar', 'baz'])
132
self.assertEqual([expected_warning] * 2, self._warnings)
135
self.assertEqual([expected_warning]*2, self._warnings)
133
136
self.assertEqual(['one', 'foo', 'bar', 'baz'], a_deprecated_list)
135
138
a_deprecated_list.insert(1, 'xxx')
136
self.assertEqual([expected_warning] * 3, self._warnings)
138
['one', 'xxx', 'foo', 'bar', 'baz'], a_deprecated_list)
139
self.assertEqual([expected_warning]*3, self._warnings)
140
self.assertEqual(['one', 'xxx', 'foo', 'bar', 'baz'], a_deprecated_list)
140
142
a_deprecated_list.remove('foo')
141
self.assertEqual([expected_warning] * 4, self._warnings)
143
self.assertEqual([expected_warning]*4, self._warnings)
142
144
self.assertEqual(['one', 'xxx', 'bar', 'baz'], a_deprecated_list)
144
146
val = a_deprecated_list.pop()
145
self.assertEqual([expected_warning] * 5, self._warnings)
147
self.assertEqual([expected_warning]*5, self._warnings)
146
148
self.assertEqual('baz', val)
147
149
self.assertEqual(['one', 'xxx', 'bar'], a_deprecated_list)
149
151
val = a_deprecated_list.pop(1)
150
self.assertEqual([expected_warning] * 6, self._warnings)
152
self.assertEqual([expected_warning]*6, self._warnings)
151
153
self.assertEqual('xxx', val)
152
154
self.assertEqual(['one', 'bar'], a_deprecated_list)
173
175
symbol_versioning.set_warning_method(old_warning_method)
175
178
def check_deprecated_callable(self, expected_warning, expected_docstring,
176
179
expected_name, expected_module,
177
180
deprecated_callable):
186
189
deprecated_callable()
187
190
self.assertEqual([expected_warning, expected_warning],
189
self.assertEqualDiff(expected_docstring,
190
deprecated_callable.__doc__)
192
self.assertEqualDiff(expected_docstring, deprecated_callable.__doc__)
191
193
self.assertEqualDiff(expected_name, deprecated_callable.__name__)
192
self.assertEqualDiff(
193
expected_module, deprecated_callable.__module__)
194
self.assertEqualDiff(expected_module, deprecated_callable.__module__)
194
195
self.assertTrue(deprecated_callable.is_deprecated)
196
197
symbol_versioning.set_warning_method(old_warning_method)
201
202
self.assertEqual(True, symbol_versioning.deprecated_passed(False))
202
203
self.assertEqual(False,
203
204
symbol_versioning.deprecated_passed(
204
symbol_versioning.DEPRECATED_PARAMETER))
205
symbol_versioning.DEPRECATED_PARAMETER))
206
207
def test_deprecation_string(self):
207
208
"""We can get a deprecation string for a method or function."""
208
err_message = symbol_versioning.deprecation_string(
209
self.assertEqual('brzlib.tests.test_symbol_versioning.'
210
'TestDeprecationWarnings.test_deprecation_string was deprecated in '
212
symbol_versioning.deprecation_string(
209
213
self.test_deprecation_string,
210
deprecated_in((0, 11, 0)))
211
self.assertEqual(err_message,
212
'breezy.tests.test_symbol_versioning.TestDeprecationWarnings.'
213
'test_deprecation_string was deprecated in '
216
self.assertEqual('breezy.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))))
214
deprecated_in((0, 11, 0))))
215
self.assertEqual('brzlib.symbol_versioning.deprecated_function was '
216
'deprecated in version 0.11.0.',
217
symbol_versioning.deprecation_string(
218
symbol_versioning.deprecated_function,
219
deprecated_in((0, 11, 0))))
223
222
class TestSuppressAndActivate(TestCase):