8000 TST: Always produce image comparison test result images · matplotlib/matplotlib@89c580a · GitHub
[go: up one dir, main page]

Skip to content

Commit 89c580a

Browse files
committed
TST: Always produce image comparison test result images
1 parent 042ebc7 commit 89c580a

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

lib/matplotlib/testing/decorators.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,12 @@ def __init__(self, baseline_images, extensions, tol,
250250
self.savefig_kwargs = savefig_kwargs
251251
self.style = style
252252

253+
def delayed_init(self, func):
254+
assert callable(func), "func must be callable"
255+
assert self.func is None, "it looks like same decorator used twice"
256+
self.func = func
257+
self.baseline_dir, self.result_dir = _image_directories(func)
258+
253259
def setup(self):
254260
func = self.func
255261
self.setup_class()
@@ -275,25 +281,26 @@ def copy_baseline(self, baseline, extension):
275281
orig_expected_fname = baseline_path + '.pdf'
276282
expected_fname = make_test_filename(os.path.join(
277283
self.result_dir, os.path.basename(orig_expected_fname)), 'expected')
278-
actual_fname = os.path.join(self.result_dir, baseline) + '.' + extension
279284
if os.path.exists(orig_expected_fname):
280285
shutil.copyfile(orig_expected_fname, expected_fname)
281286
else:
282287
xfail("Do not have baseline image {0} because this "
283288
"file does not exist: {1}".format(expected_fname,
284289
orig_expected_fname))
285-
return expected_fname, actual_fname
290+
return expected_fname
286291

287292
def compare(self, idx, baseline, extension):
288293
__tracebackhide__ = True
289-
if self.baseline_dir is None:
290-
self.baseline_dir, self.result_dir = _image_directories(self.func)
291-
expected_fname, actual_fname = self.copy_baseline(baseline, extension)
292294
fignum = plt.get_fignums()[idx]
293295
fig = plt.figure(fignum)
296+
294297
if self.remove_text:
295298
remove_ticks_and_titles(fig)
299+
300+
actual_fname = os.path.join(self.result_dir, baseline) + '.' + extension
296301
fig.savefig(actual_fname, **self.savefig_kwargs)
302+
303+
expected_fname = self.copy_baseline(baseline, extension)
297304
raise_on_image_difference(expected_fname, actual_fname, self.tol)
298305

299306
def nose_runner(self):
@@ -324,7 +331,7 @@ def wrapper(idx, baseline, extension):
324331
return wrapper
325332

326333
def __call__(self, func):
327-
self.func = func
334+
self.delayed_init(func)
328335
if is_called_from_pytest():
329336
return copy_metadata(func, self.pytest_runner())
330337
else:

0 commit comments

Comments
 (0)
0