Skip to content

Commit d379ef6

Browse files
committed
Deprecate knownfailureif decorator.
Also, privatize all internal users which have never been released.
1 parent 8acd57d commit d379ef6

File tree

1 file changed

+29
-17
lines changed

1 file changed

+29
-17
lines changed

lib/matplotlib/testing/decorators.py

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from .exceptions import ImageComparisonFailure
3131

3232

33-
def knownfailureif(fail_condition, msg=None, known_exception_class=None):
33+
def _knownfailureif(fail_condition, msg=None, known_exception_class=None):
3434
"""
3535
3636
Assume a will fail if *fail_condition* is True. *fail_condition*
@@ -55,6 +55,12 @@ def knownfailureif(fail_condition, msg=None, known_exception_class=None):
5555
return knownfailureif(fail_condition, msg, known_exception_class)
5656

5757

58+
@cbook.deprecated('2.1',
59+
alternative='pytest.xfail or import the plugin')
60+
def knownfailureif(fail_condition, msg=None, known_exception_class=None):
61+
_knownfailureif(fail_condition, msg, known_exception_class)
62+
63+
5864
def _do_cleanup(original_units_registry, original_settings):
5965
plt.close('all')
6066

@@ -161,15 +167,15 @@ def check_freetype_version(ver):
161167
return found >= ver[0] and found <= ver[1]
162168

163169

164-
def checked_on_freetype_version(required_freetype_version):
170+
def _checked_on_freetype_version(required_freetype_version):
165171
if check_freetype_version(required_freetype_version):
166172
return lambda f: f
167173

168174
reason = ("Mismatched version of freetype. "
169175
"Test requires '%s', you have '%s'" %
170176
(required_freetype_version, ft2font.__freetype_version__))
171-
return knownfailureif('indeterminate', msg=reason,
172-
known_exception_class=ImageComparisonFailure)
177+
return _knownfailureif('indeterminate', msg=reason,
178+
known_exception_class=ImageComparisonFailure)
173179

174180

175181
def remove_ticks_and_titles(figure):
@@ -188,7 +194,7 @@ def remove_ticks_and_titles(figure):
188194
pass
189195

190196

191-
def raise_on_image_difference(expected, actual, tol):
197+
def _raise_on_image_difference(expected, actual, tol):
192198
__tracebackhide__ = True
193199

194200
err = compare_images(expected, actual, tol, in_decorator=True)
@@ -202,18 +208,18 @@ def raise_on_image_difference(expected, actual, tol):
202208
'(RMS %(rms).3f)' % err)
203209

204210

205-
def xfail_if_format_is_uncomparable(extension):
211+
def _xfail_if_format_is_uncomparable(extension):
206212
will_fail = extension not in comparable_formats()
207213
if will_fail:
208214
fail_msg = 'Cannot compare %s files on this system' % extension
209215
else:
210216
fail_msg = 'No failure expected'
211217

212-
return knownfailureif(will_fail, fail_msg,
213-
known_exception_class=ImageComparisonFailure)
218+
return _knownfailureif(will_fail, fail_msg,
219+
known_exception_class=ImageComparisonFailure)
214220

215221

216-
def mark_xfail_if_format_is_uncomparable(extension):
222+
def _mark_xfail_if_format_is_uncomparable(extension):
217223
will_fail = extension not in comparable_formats()
218224
if will_fail:
219225
fail_msg = 'Cannot compare %s files on this system' % extension
@@ -270,10 +276,15 @@ def copy_baseline(self, baseline, extension):
270276
if os.path.exists(orig_expected_fname):
271277
shutil.copyfile(orig_expected_fname, expected_fname)
272278
else:
273-
from .nose import knownfail
274-
knownfail("Do not have baseline image {0} because this "
279+
reason = ("Do not have baseline image {0} because this "
275280
"file does not exist: {1}".format(expected_fname,
276281
orig_expected_fname))
282+
if is_called_from_pytest():
283+
import pytest
284+
pytest.xfail(reason)
285+
else:
286+
from ._nose import knownfail
287+
knownfail(reason)
277288
return expected_fname
278289

279290
def compare(self, idx, baseline, extension):
@@ -293,12 +304,12 @@ def compare(self, idx, baseline, extension):
293304
fig.savefig(actual_fname, **kwargs)
294305

295306
expected_fname = self.copy_baseline(baseline, extension)
296-
raise_on_image_difference(expected_fname, actual_fname, self.tol)
307+
_raise_on_image_difference(expected_fname, actual_fname, self.tol)
297308

298309
def nose_runner(self):
299310
func = self.compare
300-
func = checked_on_freetype_version(self.freetype_version)(func)
301-
funcs = {extension: xfail_if_format_is_uncomparable(extension)(func)
311+
func = _checked_on_freetype_version(self.freetype_version)(func)
312+
funcs = {extension: _xfail_if_format_is_uncomparable(extension)(func)
302313
for extension in self.extensions}
303314
for idx, baseline in enumerate(self.baseline_images):
304315
for extension in self.extensions:
@@ -307,19 +318,20 @@ def nose_runner(self):
307318
def pytest_runner(self):
308319
from pytest import mark
309320

310-
extensions = map(mark_xfail_if_format_is_uncomparable, self.extensions)
321+
extensions = map(_mark_xfail_if_format_is_uncomparable,
322+
self.extensions)
311323

312324
if len(set(self.baseline_images)) == len(self.baseline_images):
313325
@mark.parametrize("extension", extensions)
314326
@mark.parametrize("idx,baseline", enumerate(self.baseline_images))
315-
@checked_on_freetype_version(self.freetype_version)
327+
@_checked_on_freetype_version(self.freetype_version)
316328
def wrapper(idx, baseline, extension):
317329
__tracebackhide__ = True
318330
self.compare(idx, baseline, extension)
319331
else:
320332
# Some baseline images are repeated, so run this in serial.
321333
@mark.parametrize("extension", extensions)
322-
@checked_on_freetype_version(self.freetype_version)
334+
@_checked_on_freetype_version(self.freetype_version)
323335
def wrapper(extension):
324336
__tracebackhide__ = True
325337
for idx, baseline in enumerate(self.baseline_images):

0 commit comments

Comments
 (0)