Skip to content

Commit a2fc28b

Browse files
committed
Record image filenames during test
1 parent a5272a6 commit a2fc28b

File tree

1 file changed

+6
-22
lines changed

1 file changed

+6
-22
lines changed

pytest_mpl/plugin.py

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ def compare_image_to_baseline(self, item, fig, result_dir, summary=None):
431431

432432
test_image = (result_dir / "result.png").absolute()
433433
fig.savefig(str(test_image), **savefig_kwargs)
434-
summary['result_image'] = '%EXISTS%'
434+
summary['result_image'] = str(test_image.relative_to(self.results_dir))
435435

436436
if not os.path.exists(baseline_image_ref):
437437
summary['status'] = 'failed'
@@ -447,7 +447,7 @@ def compare_image_to_baseline(self, item, fig, result_dir, summary=None):
447447
# copy to our tmpdir to be sure to keep them in case of failure
448448
baseline_image = (result_dir / "baseline.png").absolute()
449449
shutil.copyfile(baseline_image_ref, baseline_image)
450-
summary['baseline_image'] = '%EXISTS%'
450+
summary['baseline_image'] = str(baseline_image.relative_to(self.results_dir))
451451

452452
# Compare image size ourselves since the Matplotlib
453453
# exception is a bit cryptic in this case and doesn't show
@@ -472,7 +472,8 @@ def compare_image_to_baseline(self, item, fig, result_dir, summary=None):
472472
else:
473473
summary['status'] = 'failed'
474474
summary['rms'] = results['rms']
475-
summary['diff_image'] = '%EXISTS%'
475+
diff_image = (result_dir / 'result-failed-diff.png').absolute()
476+
summary['diff_image'] = str(diff_image.relative_to(self.results_dir))
476477
template = ['Error: Image files did not match.',
477478
'RMS Value: {rms}',
478479
'Expected: \n {expected}',
@@ -521,7 +522,7 @@ def compare_image_to_hash_library(self, item, fig, result_dir, summary=None):
521522
# Save the figure for later summary (will be removed later if not needed)
522523
test_image = (result_dir / "result.png").absolute()
523524
fig.savefig(str(test_image), **savefig_kwargs)
524-
summary['result_image'] = '%EXISTS%'
525+
summary['result_image'] = str(test_image.relative_to(self.results_dir))
525526

526527
if not new_test:
527528
if test_hash == hash_library[hash_name]:
@@ -572,8 +573,6 @@ def compare_image_to_hash_library(self, item, fig, result_dir, summary=None):
572573
summary['status_msg'] = error_message
573574
return error_message
574575

575-
summary['baseline_image'] = '%EXISTS%'
576-
577576
# Override the tolerance (if not explicitly set) to 0 as the hashes are not forgiving
578577
tolerance = compare.kwargs.get('tolerance', None)
579578
if not tolerance:
@@ -673,7 +672,7 @@ def item_function_wrapper(*args, **kwargs):
673672
if not self.results_always:
674673
shutil.rmtree(result_dir)
675674
for image_type in ['baseline_image', 'diff_image', 'result_image']:
676-
summary[image_type] = None # image no longer %EXISTS%
675+
summary[image_type] = None # image no longer exists
677676
else:
678677
self._test_results[str(pathify(test_name))] = summary
679678
pytest.fail(msg, pytrace=False)
@@ -704,21 +703,6 @@ def pytest_unconfigure(self, config):
704703
json.dump(self._generated_hash_library, fp, indent=2)
705704

706705
if self.generate_summary:
707-
# Generate a list of test directories
708-
dir_list = [p.relative_to(self.results_dir)
709-
for p in self.results_dir.iterdir() if p.is_dir()]
710-
711-
# Resolve image paths
712-
for directory in dir_list:
713-
test_name = directory.parts[-1]
714-
for image_type, filename in [
715-
('baseline_image', 'baseline.png'),
716-
('diff_image', 'result-failed-diff.png'),
717-
('result_image', 'result.png'),
718-
]:
719-
if self._test_results[test_name][image_type] == '%EXISTS%':
720-
self._test_results[test_name][image_type] = str(directory / filename)
721-
722706
if 'json' in self.generate_summary:
723707
summary = self.generate_summary_json()
724708
print(f"A JSON report can be found at: {summary}")

0 commit comments

Comments
 (0)