Skip to content

Commit 3801d9a

Browse files
committed
Improve error messages for deprecation tests when they fail.
1 parent 787dbc9 commit 3801d9a

File tree

1 file changed

+37
-107
lines changed

1 file changed

+37
-107
lines changed

jsonschema/tests/test_deprecations.py

Lines changed: 37 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -12,82 +12,62 @@ def test_version(self):
1212
As of v4.0.0, __version__ is deprecated in favor of importlib.metadata.
1313
"""
1414

15-
with self.assertWarns(DeprecationWarning) as w:
15+
message = "Accessing jsonschema.__version__ is deprecated"
16+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
1617
from jsonschema import __version__ # noqa
1718

1819
self.assertEqual(w.filename, __file__)
19-
self.assertTrue(
20-
str(w.warning).startswith(
21-
"Accessing jsonschema.__version__ is deprecated",
22-
),
23-
)
2420

2521
def test_validators_ErrorTree(self):
2622
"""
2723
As of v4.0.0, importing ErrorTree from jsonschema.validators is
2824
deprecated in favor of doing so from jsonschema.exceptions.
2925
"""
3026

31-
with self.assertWarns(DeprecationWarning) as w:
27+
message = "Importing ErrorTree from jsonschema.validators is "
28+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
3229
from jsonschema.validators import ErrorTree # noqa
3330

3431
self.assertEqual(w.filename, __file__)
35-
self.assertTrue(
36-
str(w.warning).startswith(
37-
"Importing ErrorTree from jsonschema.validators is deprecated",
38-
),
39-
)
4032

4133
def test_validators_validators(self):
4234
"""
4335
As of v4.0.0, accessing jsonschema.validators.validators is
4436
deprecated.
4537
"""
4638

47-
with self.assertWarns(DeprecationWarning) as w:
39+
message = "Accessing jsonschema.validators.validators is deprecated"
40+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
4841
value = validators.validators
49-
self.assertEqual(value, validators._VALIDATORS)
5042

43+
self.assertEqual(value, validators._VALIDATORS)
5144
self.assertEqual(w.filename, __file__)
52-
self.assertTrue(
53-
str(w.warning).startswith(
54-
"Accessing jsonschema.validators.validators is deprecated",
55-
),
56-
)
5745

5846
def test_validators_meta_schemas(self):
5947
"""
6048
As of v4.0.0, accessing jsonschema.validators.meta_schemas is
6149
deprecated.
6250
"""
6351

64-
with self.assertWarns(DeprecationWarning) as w:
52+
message = "Accessing jsonschema.validators.meta_schemas is deprecated"
53+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
6554
value = validators.meta_schemas
66-
self.assertEqual(value, validators._META_SCHEMAS)
6755

56+
self.assertEqual(value, validators._META_SCHEMAS)
6857
self.assertEqual(w.filename, __file__)
69-
self.assertTrue(
70-
str(w.warning).startswith(
71-
"Accessing jsonschema.validators.meta_schemas is deprecated",
72-
),
73-
)
7458

7559
def test_RefResolver_in_scope(self):
7660
"""
7761
As of v4.0.0, RefResolver.in_scope is deprecated.
7862
"""
7963

8064
resolver = validators._RefResolver.from_schema({})
81-
with self.assertWarns(DeprecationWarning) as w:
65+
message = "jsonschema.RefResolver.in_scope is deprecated "
66+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
8267
with resolver.in_scope("foo"):
8368
pass
8469

8570
self.assertEqual(w.filename, __file__)
86-
self.assertTrue(
87-
str(w.warning).startswith(
88-
"jsonschema.RefResolver.in_scope is deprecated ",
89-
),
90-
)
9171

9272
def test_Validator_is_valid_two_arguments(self):
9373
"""
@@ -96,16 +76,12 @@ def test_Validator_is_valid_two_arguments(self):
9676
"""
9777

9878
validator = validators.Draft7Validator({})
99-
with self.assertWarns(DeprecationWarning) as w:
79+
message = "Passing a schema to Validator.is_valid is deprecated "
80+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
10081
result = validator.is_valid("foo", {"type": "number"})
10182

10283
self.assertFalse(result)
10384
self.assertEqual(w.filename, __file__)
104-
self.assertTrue(
105-
str(w.warning).startswith(
106-
"Passing a schema to Validator.is_valid is deprecated ",
107-
),
108-
)
10985

11086
def test_Validator_iter_errors_two_arguments(self):
11187
"""
@@ -114,32 +90,24 @@ def test_Validator_iter_errors_two_arguments(self):
11490
"""
11591

11692
validator = validators.Draft7Validator({})
117-
with self.assertWarns(DeprecationWarning) as w:
93+
message = "Passing a schema to Validator.iter_errors is deprecated "
94+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
11895
error, = validator.iter_errors("foo", {"type": "number"})
11996

12097
self.assertEqual(error.validator, "type")
12198
self.assertEqual(w.filename, __file__)
122-
self.assertTrue(
123-
str(w.warning).startswith(
124-
"Passing a schema to Validator.iter_errors is deprecated ",
125-
),
126-
)
12799

128100
def test_Validator_resolver(self):
129101
"""
130102
As of v4.18.0, accessing Validator.resolver is deprecated.
131103
"""
132104

133105
validator = validators.Draft7Validator({})
134-
with self.assertWarns(DeprecationWarning) as w:
106+
message = "Accessing Draft7Validator.resolver is "
107+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
135108
self.assertIsInstance(validator.resolver, validators._RefResolver)
136109

137110
self.assertEqual(w.filename, __file__)
138-
self.assertTrue(
139-
str(w.warning).startswith(
140-
"Accessing Draft7Validator.resolver is ",
141-
),
142-
)
143111

144112
def test_RefResolver(self):
145113
"""
@@ -167,16 +135,14 @@ def test_Validator_subclassing(self):
167135
A future version will explicitly raise an error.
168136
"""
169137

170-
with self.assertWarns(DeprecationWarning) as w:
138+
message = "Subclassing validator classes is "
139+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
171140
class Subclass(validators.Draft202012Validator):
172141
pass
173142

174143
self.assertEqual(w.filename, __file__)
175-
self.assertTrue(
176-
str(w.warning).startswith("Subclassing validator classes is "),
177-
)
178144

179-
with self.assertWarns(DeprecationWarning) as w:
145+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
180146
class AnotherSubclass(validators.create(meta_schema={})):
181147
pass
182148

@@ -188,109 +154,77 @@ def test_FormatChecker_cls_checks(self):
188154

189155
self.addCleanup(FormatChecker.checkers.pop, "boom", None)
190156

191-
with self.assertWarns(DeprecationWarning) as w:
157+
message = "FormatChecker.cls_checks "
158+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
192159
FormatChecker.cls_checks("boom")
193160

194161
self.assertEqual(w.filename, __file__)
195-
self.assertTrue(
196-
str(w.warning).startswith("FormatChecker.cls_checks "),
197-
)
198162

199163
def test_draftN_format_checker(self):
200164
"""
201165
As of v4.16.0, accessing jsonschema.draftn_format_checker is deprecated
202166
in favor of Validator.FORMAT_CHECKER.
203167
"""
204168

205-
with self.assertWarns(DeprecationWarning) as w:
169+
message = "Accessing jsonschema.draft202012_format_checker is "
170+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
206171
from jsonschema import draft202012_format_checker # noqa
207172

208173
self.assertIs(
209174
draft202012_format_checker,
210175
validators.Draft202012Validator.FORMAT_CHECKER,
211176
)
212177
self.assertEqual(w.filename, __file__)
213-
self.assertTrue(
214-
str(w.warning).startswith(
215-
"Accessing jsonschema.draft202012_format_checker is ",
216-
),
217-
msg=w.warning,
218-
)
219178

220-
with self.assertWarns(DeprecationWarning) as w:
179+
message = "Accessing jsonschema.draft201909_format_checker is "
180+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
221181
from jsonschema import draft201909_format_checker # noqa
222182

223183
self.assertIs(
224184
draft201909_format_checker,
225185
validators.Draft201909Validator.FORMAT_CHECKER,
226186
)
227187
self.assertEqual(w.filename, __file__)
228-
self.assertTrue(
229-
str(w.warning).startswith(
230-
"Accessing jsonschema.draft201909_format_checker is ",
231-
),
232-
msg=w.warning,
233-
)
234188

235-
with self.assertWarns(DeprecationWarning) as w:
189+
message = "Accessing jsonschema.draft7_format_checker is "
190+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
236191
from jsonschema import draft7_format_checker # noqa
237192

238193
self.assertIs(
239194
draft7_format_checker,
240195
validators.Draft7Validator.FORMAT_CHECKER,
241196
)
242197
self.assertEqual(w.filename, __file__)
243-
self.assertTrue(
244-
str(w.warning).startswith(
245-
"Accessing jsonschema.draft7_format_checker is ",
246-
),
247-
msg=w.warning,
248-
)
249198

250-
with self.assertWarns(DeprecationWarning) as w:
199+
message = "Accessing jsonschema.draft6_format_checker is "
200+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
251201
from jsonschema import draft6_format_checker # noqa
252202

253203
self.assertIs(
254204
draft6_format_checker,
255205
validators.Draft6Validator.FORMAT_CHECKER,
256206
)
257207
self.assertEqual(w.filename, __file__)
258-
self.assertTrue(
259-
str(w.warning).startswith(
260-
"Accessing jsonschema.draft6_format_checker is ",
261-
),
262-
msg=w.warning,
263-
)
264208

265-
with self.assertWarns(DeprecationWarning) as w:
209+
message = "Accessing jsonschema.draft4_format_checker is "
210+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
266211
from jsonschema import draft4_format_checker # noqa
267212

268213
self.assertIs(
269214
draft4_format_checker,
270215
validators.Draft4Validator.FORMAT_CHECKER,
271216
)
272217
self.assertEqual(w.filename, __file__)
273-
self.assertTrue(
274-
str(w.warning).startswith(
275-
"Accessing jsonschema.draft4_format_checker is ",
276-
),
277-
msg=w.warning,
278-
)
279218

280-
with self.assertWarns(DeprecationWarning) as w:
219+
message = "Accessing jsonschema.draft3_format_checker is "
220+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
281221
from jsonschema import draft3_format_checker # noqa
282222

283223
self.assertIs(
284224
draft3_format_checker,
285225
validators.Draft3Validator.FORMAT_CHECKER,
286226
)
287227
self.assertEqual(w.filename, __file__)
288-
self.assertTrue(
289-
str(w.warning).startswith(
290-
"Accessing jsonschema.draft3_format_checker is ",
291-
),
292-
msg=w.warning,
293-
)
294228

295229
with self.assertRaises(ImportError):
296230
from jsonschema import draft1234_format_checker # noqa
@@ -300,16 +234,12 @@ def test_import_cli(self):
300234
As of v4.17.0, importing jsonschema.cli is deprecated.
301235
"""
302236

303-
with self.assertWarns(DeprecationWarning) as w:
237+
message = "The jsonschema CLI is deprecated and will be removed "
238+
with self.assertWarnsRegex(DeprecationWarning, message) as w:
304239
import jsonschema.cli
305240
importlib.reload(jsonschema.cli)
306241

307242
self.assertEqual(w.filename, importlib.__file__)
308-
self.assertTrue(
309-
str(w.warning).startswith(
310-
"The jsonschema CLI is deprecated and will be removed ",
311-
),
312-
)
313243

314244
def test_cli(self):
315245
"""

0 commit comments

Comments
 (0)