1+ from pathlib import Path
2+
13from bs4 import BeautifulSoup
24import shutil
35import markdown
@@ -94,13 +96,17 @@ def _add_content(self, soup, tag_id, content):
9496 # TODO remove isinstance
9597 def report (self , errors ):
9698 shutil .rmtree (self .output_directory , ignore_errors = True )
99+ if self .output_directory :
100+ Path (self .output_directory ).mkdir (parents = True , exist_ok = True )
97101 for error in errors :
98102 # TODO save to different files for links and diff
99103 # TODO use mustache for templates
100104 report_soup = BeautifulSoup (self .report_template , 'lxml' )
105+ source_path = None
101106 if isinstance (error , UrlDiff ):
102107 messages = [f'<span>{ error .url } returned with code { error .status_code } </span>' ]
103108 self ._add_content (report_soup , 'urls' , '\n ' .join (messages ))
109+ source_path = error .files [0 ] if error .files else 'url_errors'
104110 if isinstance (error , MdDiff ):
105111 error_msgs = '<br />' .join (map (lambda i : str (i ), error .error_msgs ))
106112 base = markdown .markdown (error .base .parsed )
@@ -110,7 +116,9 @@ def report(self, errors):
110116 report_soup = self ._add_content (report_soup , 'left_diff' , BeautifulSoup (error .base .diff , 'lxml' ).body )
111117 report_soup = self ._add_content (report_soup , 'right_diff' , BeautifulSoup (error .other .diff , 'lxml' ).body )
112118 report_soup = self ._add_content (report_soup , 'error_msgs' , BeautifulSoup (error_msgs , 'lxml' ).body )
113- save_report (self .output_directory , error .other .original , report_soup .prettify ())
119+ source_path = error .other .original
120+ if source_path is not None :
121+ save_report (self .output_directory , source_path , report_soup .prettify ())
114122
115123
116124class ConsoleReporter :
0 commit comments