@@ -390,11 +390,14 @@ def generate_baseline_image(self, item, fig):
390
390
if not os .path .exists (self .generate_dir ):
391
391
os .makedirs (self .generate_dir )
392
392
393
- fig .savefig (str ((self .generate_dir / self .generate_filename (item )).absolute ()),
394
- ** savefig_kwargs )
393
+ baseline_filename = self .generate_filename (item )
394
+ baseline_path = (self .generate_dir / baseline_filename ).absolute ()
395
+ fig .savefig (str (baseline_path ), ** savefig_kwargs )
395
396
396
397
close_mpl_figure (fig )
397
398
399
+ return baseline_path
400
+
398
401
def generate_image_hash (self , item , fig ):
399
402
"""
400
403
For a `matplotlib.figure.Figure`, returns the SHA256 hash as a hexadecimal
@@ -597,6 +600,7 @@ def item_function_wrapper(*args, **kwargs):
597
600
remove_ticks_and_titles (fig )
598
601
599
602
test_name = self .generate_test_name (item )
603
+ result_dir = self .make_test_results_dir (item )
600
604
601
605
summary = {
602
606
'status' : None ,
@@ -615,20 +619,20 @@ def item_function_wrapper(*args, **kwargs):
615
619
if self .generate_dir is not None :
616
620
summary ['status' ] = 'skipped'
617
621
summary ['status_msg' ] = 'Skipped test, since generating image.'
618
- self .generate_baseline_image (item , fig )
619
- if self .generate_hash_library is None :
620
- self ._test_results [str (pathify (test_name ))] = summary
621
- pytest .skip ("Skipping test, since generating image." )
622
+ generate_image = self .generate_baseline_image (item , fig )
623
+ if self .results_always : # Make baseline image available in HTML
624
+ result_image = (result_dir / "baseline.png" ).absolute ()
625
+ shutil .copy (generate_image , result_image )
626
+ summary ['baseline_image' ] = \
627
+ result_image .relative_to (self .results_dir ).as_posix ()
622
628
623
629
if self .generate_hash_library is not None :
624
630
image_hash = self .generate_image_hash (item , fig )
625
631
self ._generated_hash_library [test_name ] = image_hash
626
- summary ['result_hash ' ] = image_hash
632
+ summary ['baseline_hash ' ] = image_hash
627
633
628
634
# Only test figures if not generating images
629
635
if self .generate_dir is None :
630
- result_dir = self .make_test_results_dir (item )
631
-
632
636
# Compare to hash library
633
637
if self .hash_library or compare .kwargs .get ('hash_library' , None ):
634
638
msg = self .compare_image_to_hash_library (item , fig , result_dir , summary = summary )
@@ -645,12 +649,15 @@ def item_function_wrapper(*args, **kwargs):
645
649
for image_type in ['baseline_image' , 'diff_image' , 'result_image' ]:
646
650
summary [image_type ] = None # image no longer exists
647
651
else :
648
- self ._test_results [str ( pathify ( test_name )) ] = summary
652
+ self ._test_results [test_name ] = summary
649
653
pytest .fail (msg , pytrace = False )
650
654
651
655
close_mpl_figure (fig )
652
656
653
- self ._test_results [str (pathify (test_name ))] = summary
657
+ self ._test_results [test_name ] = summary
658
+
659
+ if summary ['status' ] == 'skipped' :
660
+ pytest .skip (summary ['status_msg' ])
654
661
655
662
if item .cls is not None :
656
663
setattr (item .cls , item .function .__name__ , item_function_wrapper )
0 commit comments