30
30
from .exceptions import ImageComparisonFailure
31
31
32
32
33
- def knownfailureif (fail_condition , msg = None , known_exception_class = None ):
33
+ def _knownfailureif (fail_condition , msg = None , known_exception_class = None ):
34
34
"""
35
35
36
36
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):
55
55
return knownfailureif (fail_condition , msg , known_exception_class )
56
56
57
57
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
+
58
64
def _do_cleanup (original_units_registry , original_settings ):
59
65
plt .close ('all' )
60
66
@@ -161,15 +167,15 @@ def check_freetype_version(ver):
161
167
return found >= ver [0 ] and found <= ver [1 ]
162
168
163
169
164
- def checked_on_freetype_version (required_freetype_version ):
170
+ def _checked_on_freetype_version (required_freetype_version ):
165
171
if check_freetype_version (required_freetype_version ):
166
172
return lambda f : f
167
173
168
174
reason = ("Mismatched version of freetype. "
169
175
"Test requires '%s', you have '%s'" %
170
176
(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 )
173
179
174
180
175
181
def remove_ticks_and_titles (figure ):
@@ -188,7 +194,7 @@ def remove_ticks_and_titles(figure):
188
194
pass
189
195
190
196
191
- def raise_on_image_difference (expected , actual , tol ):
197
+ def _raise_on_image_difference (expected , actual , tol ):
192
198
__tracebackhide__ = True
193
199
194
200
err = compare_images (expected , actual , tol , in_decorator = True )
@@ -202,18 +208,18 @@ def raise_on_image_difference(expected, actual, tol):
202
208
'(RMS %(rms).3f)' % err )
203
209
204
210
205
- def xfail_if_format_is_uncomparable (extension ):
211
+ def _xfail_if_format_is_uncomparable (extension ):
206
212
will_fail = extension not in comparable_formats ()
207
213
if will_fail :
208
214
fail_msg = 'Cannot compare %s files on this system' % extension
209
215
else :
210
216
fail_msg = 'No failure expected'
211
217
212
- return knownfailureif (will_fail , fail_msg ,
213
- known_exception_class = ImageComparisonFailure )
218
+ return _knownfailureif (will_fail , fail_msg ,
219
+ known_exception_class = ImageComparisonFailure )
214
220
215
221
216
- def mark_xfail_if_format_is_uncomparable (extension ):
222
+ def _mark_xfail_if_format_is_uncomparable (extension ):
217
223
will_fail = extension not in comparable_formats ()
218
224
if will_fail :
219
225
fail_msg = 'Cannot compare %s files on this system' % extension
@@ -270,10 +276,15 @@ def copy_baseline(self, baseline, extension):
270
276
if os .path .exists (orig_expected_fname ):
271
277
shutil .copyfile (orig_expected_fname , expected_fname )
272
278
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 "
275
280
"file does not exist: {1}" .format (expected_fname ,
276
281
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 )
277
288
return expected_fname
278
289
279
290
def compare (self , idx , baseline , extension ):
@@ -293,12 +304,12 @@ def compare(self, idx, baseline, extension):
293
304
fig .savefig (actual_fname , ** kwargs )
294
305
295
306
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 )
297
308
298
309
def nose_runner (self ):
299
310
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 )
302
313
for extension in self .extensions }
303
314
for idx , baseline in enumerate (self .baseline_images ):
304
315
for extension in self .extensions :
@@ -307,19 +318,20 @@ def nose_runner(self):
307
318
def pytest_runner (self ):
308
319
from pytest import mark
309
320
310
- extensions = map (mark_xfail_if_format_is_uncomparable , self .extensions )
321
+ extensions = map (_mark_xfail_if_format_is_uncomparable ,
322
+ self .extensions )
311
323
312
324
if len (set (self .baseline_images )) == len (self .baseline_images ):
313
325
@mark .parametrize ("extension" , extensions )
314
326
@mark .parametrize ("idx,baseline" , enumerate (self .baseline_images ))
315
- @checked_on_freetype_version (self .freetype_version )
327
+ @_checked_on_freetype_version (self .freetype_version )
316
328
def wrapper (idx , baseline , extension ):
317
329
__tracebackhide__ = True
318
330
self .compare (idx , baseline , extension )
319
331
else :
320
332
# Some baseline images are repeated, so run this in serial.
321
333
@mark .parametrize ("extension" , extensions )
322
- @checked_on_freetype_version (self .freetype_version )
334
+ @_checked_on_freetype_version (self .freetype_version )
323
335
def wrapper (extension ):
324
336
__tracebackhide__ = True
325
337
for idx , baseline in enumerate (self .baseline_images ):
0 commit comments